Tôi đang phát triển một chế độ chính cho Emacs. Có cách nào để tôi có thể thiết lập một điểm ngắt trong mã nguồn khi việc phông chữ xảy ra không?Gỡ lỗi Emacs Lisp chế độ chính
Trả lời
Tìm nguồn Lisp của hàm bạn muốn xem qua và nhập M-x edebug-defun
tại đó. Sau đó, bất cứ khi nào chức năng đó được thực hiện, bạn sẽ tự động được đặt vào Edebug, nơi bạn có thể bước qua nó nếu bạn muốn.
Chức năng phông chữ có thể hơi phức tạp một chút, vì chúng có thể được gọi vào các thời điểm lẻ. Bạn có thể sử dụng chức năng message
để viết tin nhắn vào bộ đệm *Messages*
. Một mẹo khác là tắt Font Lock (vì vậy chức năng của bạn không được gọi tự động), sau đó chuẩn bị hàm bạn đang gỡ lỗi với edebug-defun
và gọi nó theo cách thủ công. (Lưu ý rằng bạn có thể sử dụng M-:
(a.k.a. eval-expression
) để gọi hàm không tương tác.)
Hướng dẫn gỡ lỗi có thể là found here.
Bạn có thể sử dụng edebug
như đã đề cập, cũng có Gỡ lỗi M-x-on-entry và bạn có thể đặt (setq debug-on-quit t)
. Kiểm tra tất cả các tùy chọn trong liên kết, tất cả phụ thuộc vào cách bạn muốn da mèo.
Và cũng giống như trong bất kỳ ngôn ngữ lập trình nào khác, bạn có thể gỡ lỗi bằng lệnh in. (message "here, foo=%d" foo)
là bạn của bạn. (Bạn có thể biết rằng những thông điệp này được tích lũy trong bộ đệm *Messages*
, vì vậy nếu chúng đi quá nhanh, đó không phải là vấn đề.) trace-function
cũng hữu ích.
Tôi đã viết rất nhiều chế độ emacs và chỉ hiếm khi cần trình gỡ lỗi. Thông thường vấn đề sẽ tự phơi bày với một vài câu lệnh in được đặt đúng vị trí.
Về nguyên tắc, một trình gỡ rối chỉ là một máy 'chèn-in-tuyên bố' được tôn vinh, nhưng nó tự động hóa tác vụ cho bạn, trong khi không làm hỏng chính mã đó Và tôi sẽ thấy rằng chức năng hữu ích để gỡ lỗi chức năng elisp tôi đang viết, đặc biệt là tôi khá mới để elisp – Alex
Trên một lưu ý khác là tốt nếu bạn muốn chỉ nhanh chóng gỡ lỗi một số đoạn lisp bạn có thể muốn sử dụng chế độ ielm cũng hoạt động như ví dụ như chế độ tương tác python.
Thay vì edebug
bạn có thể sử dụng debug
. Để mở trình gỡ rối khi nhập vào một hàm, hãy sử dụng M-x debug-on-entry THE-FUNCTION
. Hoặc chèn các cuộc gọi đến chức năng debug
trong mã nguồn để phục vụ như các điểm ngắt (đánh giá lại mã).
Tuy nhiên, phông chữ thực sự diễn ra vào những thời điểm kỳ lạ, liên quan đến hiển thị lại, v.v. Nếu bạn thực sự cần gỡ lỗi quá trình phông chữ, thì bạn có thể sử dụng các hàm, không chỉ regexps, trong font-lock-keywords
.
Nhưng thực sự bạn sẽ cần phải cụ thể hơn về các vấn đề gỡ lỗi khóa phông chữ của mình. Thông thường, những vấn đề mà mọi người gặp phải là (a) hiểu được font-lock-keywords
(cấu trúc) và (b) regexps không khớp với những gì họ muốn.
Dù sao, để trả lời câu hỏi của bạn về * breakpoint ": Vâng, chỉ cần chèn (debug)
tại bất kỳ điểm nào bạn muốn trong mã nguồn Lisp Các debugger sẽ được nhập vào thời điểm đó
- 1. emacs - tự động hoàn thành trong chế độ Emacs Lisp
- 2. Gỡ lỗi mã Lisp
- 3. Cách tạo chế độ xem cột trong Emacs Lisp?
- 4. emacs lisp, làm thế nào để có được chế độ đệm chính?
- 5. Thay đổi màu chế độ dòng Emacs dựa trên chế độ chính
- 6. Chế độ chính Javascript trong Emacs
- 7. Chế độ gỡ lỗi và gỡ lỗi trong IDE
- 8. Chạy RSpec ở chế độ gỡ lỗi
- 9. Độ chính xác cao/kép ở chế độ gỡ lỗi/giải phóng
- 10. Emacs C++ - chế độ thụt lề không chính xác?
- 11. chế độ đường dây dài trong Emacs
- 12. emacs bản đồ chế độ ác chế độ độc
- 13. kết hợp chế độ python với chế độ org cho emacs
- 14. Chế độ Emacs cho R?
- 15. Làm thế nào để gỡ lỗi Emacs lisp mà làm cho Emacs sụp đổ/sử dụng CPU 100%?
- 16. tắt hoàn thành cedet/ngữ nghĩa cho chế độ lisp
- 17. Kiểm tra biến trong trình gỡ lỗi SLIME lisp
- 18. ngày chế độ org ở các chế độ Emacs khác
- 19. chuyển đổi mã giữa chế độ gỡ lỗi và chế độ phát hành trong java - android
- 20. Android chạy rất chậm trong chế độ gỡ lỗi
- 21. Chỉ hiển thị mục menu trong chế độ gỡ lỗi?
- 22. có thể chạy chrome ở chế độ gỡ lỗi không?
- 23. Tắt chế độ gỡ lỗi tùy chọn() trong R
- 24. Chế độ Máy chủ Android Gỡ lỗi USB
- 25. Ống Django bị hỏng ở chế độ Gỡ lỗi
- 26. Gỡ lỗi trong .NET ở chế độ Release
- 27. AVAudioPlayer ném breakpoint trong chế độ gỡ lỗi
- 28. Chế độ Emacs nhiều dòng chú thích
- 29. Emacs: phương pháp gỡ lỗi python
- 30. Emacs: phương pháp gỡ lỗi python
Vâng, đây làm việc cho thụt lề của tôi.. – Alex