emacs-lisp 디버거에서 평가를 중단하고 현재 스택을 관찰 하시겠습니까?


17

주요 모드 후크와 같은 일부 emacs-lisp 기능이 실행하는 데 예상보다 오래 걸리는 경우 때때로 중단하고 현재 스택을보고 싶습니다. 이상적으로는 디버거에서 변수 값 등을 볼 수 있기를 원합니다. 나는 의도적으로 emacs-lisp 모드에서 실행되는 코드가 아니라 emacs의 정상적인 작동에서 실행되는 코드에 대해 이야기하고 있습니다.

emacs에서 직접 emacs-lisp 코드 실행을 중단하려면 어떻게해야합니까? 디버깅해야 할 기능을 미리 알 수 없습니다.

예를 들어을 입력 C-g하면 실행이 중단되는 동안 중단 된 기능에 대해서는 아무 것도 알려주지 않습니다.

답변:


18

C-g을 켜서 디버거를 트리거 할 수 있습니다 debug-on-quit. 그냥 해

M-x toggle-debug-on-quit

이제 당신이 때마다 C-g당신은 무슨 일이 있었는지에 대한 역 추적을 얻을 것입니다. 이 역 추적은 대화식이므로으로 기능을 계속 스테핑 d하고으로 이동할 수 있습니다 c. (시도해 보면 읽는 것보다보기가 더 쉽습니다).

이것은 (debug)코드 내부 에 추가하여 얻는 것과 동일한 역 추적 입니다. 여기에 간단한 블로그 게시물 과 관련 Elisp 매뉴얼 페이지가 있습니다.


(온유 말한다 hello)) 디버거가 상호 작용하는 것을 어썸 노트 - 내가 그 :) 확인 결코 생각하지 않았다
숀 알 레드

@SeanAllred 예, 몇 주 전에 만 알게되었습니다.
Malabarba
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.