2008-12-19 32 views
33

Tôi chỉ nhận tin nhắn này lỗi:Làm thế nào để buộc ruby ​​hiển thị dấu vết ngăn xếp đầy đủ?

... 
from c:/ruby/lib/ruby/gems/1.8/gems/... 
... 10 levels... 
from c:/ruby/lib/ruby/gems/1.8/gems/... 
... 

và lỗi (tất nhiên) được giấu ở đâu đó trong ... 10 levels....

Làm thế nào để buộc ruby ​​hiển thị dấu vết ngăn xếp đầy đủ?

+1

Ngắt http://stackoverflow.com/questions/376513/how-do-i-get-ruby-to-print-a-full-stack-dump-instead-of-a-truncated- một ngày hôm qua. –

+1

Tôi đã tìm kiếm trang web trước khi đăng câu hỏi nhưng không tìm thấy. Lấy làm tiếc. –

+0

Không vấn đề gì, câu hỏi được gắn thẻ kém và không có tiêu đề rất hay, tôi đã sửa cả hai, liên kết mới là http://stackoverflow.com/questions/376513/how-do-i-get-ruby-to-print-a -full-backtrace-thay-cho-một-cắt-một. –

Trả lời

68
begin 
    # code that raises exception 
rescue StandardError => e 
    puts e.backtrace 
end 
+7

Làm thế nào để bạn hiển thị stacktrace mà không bị bắt ngoại lệ? Chỉ trong hoạt động bình thường, đó là. –

+9

@ChiragPatel, có thể bạn muốn sử dụng [Kernel # caller] (http://www.ruby-doc.org/core-1.8.7/Kernel.html#method-i-caller). –

+2

Kernel # người gọi, như Sony Santos đã đề cập, là cách hoàn toàn để đi cho những gì bạn đang muốn. Nó sẽ trả về một mảng các chuỗi. Bạn có thể dễ dàng thực hiện một số thao tác như sau để có một dấu vết ngăn xếp gọn gàng trong nhật ký của mình: Rails.logger.info caller.join ("\ n") – slant

Các vấn đề liên quan