Bölgenin devre dışı bırakılmasıyla ilgili bir sorunla karşılaştım (geçici işaret modunda). İşlev deactivate-markçağrılır ve nereden (ve neden) çağrıldığını bulmak istiyorum.
Denedim M-x debug-on-entry RET deactivate-markve duruyor ama arayanı bulmanın bir yolunu bulamadım. Görüntülenen yığın izinin tamamı:
Debugger entered--entering a function:
* deactivate-mark()
Denedim M-x edebug-eval-defunama Edebug da arayanı göstermiyor.
Neden (nereden) deactivate-markçağrıldığını nasıl öğrenebilirim ? Backtrace veya stacktrace işlevlerini arıyorum.
DÜZENLE:
Bir advice-addnumara:
(defun message-show-backtrace ()
(message "%s" (backtrace-frame 10)))
(advice-add deactivate-mark :before #'message-show-backtrace)
üretmektedir niliçinde *Messages*.
Düzenleme: hakkında daha fazla bilgi deactivate-mark: http://emacshorrors.com/posts/deactivate-mark.html
deactiveate-markTavsiye edebilir ve tavsiye işlevinizde backtrace-framesedebug beklediğinizi göstermiyorsa tüm çağrı yığınını görmek için kullanın .
advice-addve backtrace-frame. Yardım etmedi.
self-insert-commandve "self-insert-command 'C kaynak kodu'nda " etkileşimli yerleşik bir işlev olduğunu belirtmek gerekir . Bu, şimdiye kadar kaydedilen diğer davranışlarla birlikte, bir kişinin hata ayıklaması gerektiğini göstermektedir gdb.
emacs -Q, hata ayıklamayı açınM-x debug-on-entry deactivate-mark, işareti etkinleştirinC-<SPC>, bir karakter yazın.