Có cách nào để in dấu vết ngăn xếp thời gian chạy của quá trình Ruby 1.9.x không? Tôi biết rằng có một tiện ích được gọi là pstack
cho Ruby 1.8, nhưng dự án dường như đã bị bỏ rơi một vài năm trước đây: https://github.com/ice799/pstack. Có bất cứ điều gì như thế này tồn tại cho Ruby 1.9? Cảm ơn rất nhiều!Làm cách nào để in dấu vết ngăn xếp thời gian chạy của quá trình Ruby 1.9?
EDIT: Tôi quan tâm đến việc sử dụng công cụ bên ngoài để tạo dấu vết ngăn xếp (không chạy trong cùng một không gian bộ nhớ như quy trình Ruby).
Như @mosch đã chỉ ra, phương thức Kernal#caller
hoạt động từ bên trong tiến trình Ruby đang chạy.
Bạn thậm chí có thể xây dựng trong hỗ trợ cho mã Ruby của bạn mà bẫy tín hiệu xử lý và in một stack trace:
Signal.trap("SIGTERM") { p caller }
tham khảo: http://www.ruby-doc.org/core-1.9.3/Signal.html
tôi có thể xây dựng chức năng này vào mã của tôi, nhưng tôi d thích sử dụng một giải pháp tổng quát hơn, bên ngoài. Cảm ơn.
Cảm ơn @mosch. Tôi đã cập nhật mô tả của mình để thêm một số làm rõ. –