Đánh giá gián đoạn và quan sát ngăn xếp hiện tại trong trình gỡ lỗi emacs-lisp?


17

Nếu một số chức năng emacs-lisp, chẳng hạn như hook chế độ chính, mất nhiều thời gian hơn dự kiến ​​để thực thi, đôi khi tôi muốn làm gián đoạn nó và xem xét ngăn xếp hiện tại. Lý tưởng nhất, tôi cũng muốn có thể xem xét các giá trị thay đổi, v.v., trong trình gỡ lỗi. Tôi không nói về mã mà tôi đang cố tình thực thi trong chế độ emacs-lisp, mà là mã được thực thi trong hoạt động bình thường của emacs.

Làm thế nào tôi có thể làm gián đoạn việc thực thi mã emacs-lisp trực tiếp trong emacs? Tôi không biết trước chức năng nào tôi cần gỡ lỗi.

Ví dụ, gõ C-g, trong khi nó làm gián đoạn thực thi, cũng không cho tôi biết chức năng nào bị gián đoạn.

Câu trả lời:


18

Bạn có thể C-gkích hoạt trình gỡ lỗi bằng cách bật debug-on-quit. Cứ làm đi

M-x toggle-debug-on-quit

Bây giờ mỗi khi bạn nhấn C-gbạn sẽ nhận được một thông tin về những gì đang diễn ra. Backtrace này là tương tác, vì vậy bạn có thể tiếp tục thực hiện chức năng này dvà bạn có thể bắt đầu chuyển đi với c. (Hãy thử xem, nó dễ nhìn hơn là đọc).

Đây là cùng một backtrace bạn nhận được bằng cách thêm vào (debug)bên trong mã của bạn. Đây là một bài đăng blog ngắn trên đó và trang hướng dẫn Elisp có liên quan .


(hiền lành nói hello);) Lưu ý tuyệt vời rằng trình gỡ lỗi có tính tương tác - Tôi chưa bao giờ nghĩ sẽ kiểm tra điều đó :)
Sean Allred

@Sean ALLred có, tôi chỉ phát hiện ra một vài tuần trước.
Malabarba
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.