ฉันพบปัญหาว่าภูมิภาคปิดใช้งาน (ในโหมดเครื่องหมายชั่วคราว) deactivate-markมีการเรียกใช้ฟังก์ชั่นและฉันต้องการทราบว่าถูกเรียกใช้จากที่ไหน (และทำไม)
ฉันพยายามM-x debug-on-entry RET deactivate-markแล้วก็หยุด แต่ฉันไม่พบวิธีการโทรหา stacktrace ที่แสดงทั้งหมดคือ:
Debugger entered--entering a function:
* deactivate-mark()
ฉันพยายามM-x edebug-eval-defunแต่ Edebug ไม่แสดงผู้โทรด้วย
ฉันจะทราบได้อย่างไรว่าเหตุใดจึงdeactivate-markมีการเรียก(จากที่ใด) ฉันกำลังมองหาฟังก์ชั่น backtrace หรือ stacktrace
แก้ไข:
advice-addเคล็ดลับ:
(defun message-show-backtrace ()
(message "%s" (backtrace-frame 10)))
(advice-add deactivate-mark :before #'message-show-backtrace)
ผลิตในnil*Messages*
แก้ไข: ข้อมูลเพิ่มเติมเกี่ยวกับdeactivate-mark: http://emacshorrors.com/posts/deactivate-mark.html
deactiveate-markและในฟังก์ชั่นคำแนะนำของคุณใช้backtrace-framesเพื่อรับมุมมองของสายการโทรทั้งหมดถ้า edebug ไม่แสดงสิ่งที่คุณคาดหวัง
advice-add backtrace-frameมันไม่ได้ช่วยอะไร
self-insert-commandและ "self-insert-command เป็นฟังก์ชันในตัวแบบโต้ตอบใน 'ซอร์สโค้ด C' พร้อมกับพฤติกรรมอื่น ๆ gdbตั้งข้อสังเกตเพื่อให้ห่างไกลให้เห็นว่าหนึ่งจะต้องแก้ปัญหาด้วย
emacs -Qเปิด debugM-x debug-on-entry deactivate-markเปิดใช้งานเครื่องหมายC-<SPC>พิมพ์อักขระ