답변:
에 의지하기 전에 gdb
Unix-y 운영 체제를 사용하는 경우 다른 답변에서 언급 한 파일에 SIGUSR2
설명 된 것처럼 Emacs 프로세스로 보낼 수 있습니다 DEBUG
.
$ kill -SIGUSR2 <emacs_pid_goes_here>
그러면 Emacs는 현재 루프에서 Lisp 디버거로 침입하려고 시도합니다.
또는 emacs pid를 수동으로 입력하지 않고이 라이너를 사용하십시오.
$ ps aux | grep -ie emacs | grep -v grep | awk '{print $2}' | xargs kill -SIGUSR2
또는 killall
가능한 경우 :
$ killall -USR2 emacs
/
를 검색 emacs
하고 k
전송합니다. Mac에서 활동 모니터를 사용하여 수행 할 수도 있습니다 (메뉴 :보기 | 신호를 프로세스로 보내기).
을 눌렀을 때 정지가 사라지면 C-g
내장 디버거를 사용할 수 있습니다. M-x toggle-debug-on-quit
메시지를 보내기 전에 입력 하고 메시지가 멈췄을 C-g
때 입력 한 다음 나타나는 *Backtrace*
버퍼를 검사하십시오 .
C-g
도움 이 되지 않으면 동결이 아마도 C 코드에서 발생할 수 있으므로와 같은 외부 디버거를 사용해야합니다 gdb
. 그 방법에 대한 힌트를 제공 C-h C-d
하는 DEBUG
파일 을 보려면 누르십시오 . ( Emacs 저장소 웹 인터페이스에서 DEBUG 파일을 읽을 수도 있습니다 .) 이 답변 은 gdb
Emacs와 함께 사용하는 방법에 대한 자세한 정보를 제공합니다 .
C-g
여러 번 맞아야 할 수도 있습니다 C-g C-g C-g
..
M-x debug-on-entry THE-COMMAND
하여 디버거를 단계별로 사용d
하거나 때로는c
일부 단계를 건너 뛸 수 있습니다. 소스 코드를 다른 프레임에 열어 두어 디버거가 수행하는 작업을 수행 할 수 있습니다. 여기에 표시된 내용을보고하거나 Emacs 버그가 있다고 생각되면을 사용하여보고하십시오M-x report-emacs-bug
.