programing

elisp를 디버그하는 방법?

projobs 2021. 1. 18. 07:30
반응형

elisp를 디버그하는 방법?


일반적으로 가장 쉬운 디버깅 방법은 printf. emacs-lisp를 디버깅하려면 어떻게해야합니까? elisp에서 emacs 편집기로 무언가를 인쇄하려면 어떻게해야합니까? 아니면 elisp 코드를 디버깅하는 방법이 있습니까?

예를 들어 다음 코드가 .emacs파일 에서 실행되는지 어떻게 확인할 수 있습니까?

(load "auctex.el" nil t t)

디버거 (edebug)는 사용하기 매우 간단합니다. 함수 정의로 이동하여 M-x edebug-defun. 다음에 호출 할 때 다른 모든 디버거와 마찬가지로 코드를 단계별로 실행할 수 있습니다. ?키 바인딩 목록을 입력 하거나 edebug 문서를 확인하세요 .


GNU Emacs에는 두 가지 디버거가 있습니다.

  • edebug-여기에 다른 게시물에서 설명
  • 디버그

나는 debug. 다음은 일반적인 진입 점 (사용 방법)입니다.

  • M-x debug-on-entry 디버거를 사용하여 입력하려는 함수가 뒤 따릅니다.

  • M-x toggle-debug-on-error -오류가 발생하면 디버거로 들어갑니다.

  • M-x toggle-debug-on-quit-사용자가 눌렀을 때 디버거를 입력합니다 C-g.
  • debug코드의 특정 위치 (중단 점)에 함수 명시 적으로 호출하여 해당 위치에 디버거를 입력합니다.
    (디버그)

를 사용하여 디버거를 단계별로 진행 d하거나 c특정 평가의 세부 정보를 건너 뜁니다.


값을 인쇄하는 데 유용합니다.

(message "Hello (%s)" foo)

그러나 데이터 구조에는 그렇게 잘 작동하지 않습니다. 이를 위해

(prin1 list-foo)

또는 (prin1-to-string)을 사용하여 (메시지)에 포함합니다.


가장 쉬운 디버깅 방법은 코드를 대화식으로 실행하는 것입니다. 표현식 뒤에 포인트를 놓고 C-x C-e( eval-last-sexp)를 실행하여 lisp 버퍼에서이를 수행 할 수 있습니다 .

또는 :

(message "hello world")

C-h f message내장 메시지 기능에 대해 자세히 알아보십시오. 많은 메시지를 생성하는 경우 변수 message-log-max를 더 큰 값 으로 사용자 정의 할 수 있습니다 .


질문에 하나씩 답변하려면 :

  • 무언가를 인쇄하십시오 : 백만 가지 방법이 있습니다. (메시지 "Hello")는 문자열을 에코 영역에 넣습니다. ( "hello"삽입)은 문자열을 현재 버퍼에 넣습니다 ...
  • 다음 코드가 실행되는지 어떻게 확인할 수 있습니까? "auctex.el"을 "frotzumotzulous"(즉, 실제 파일의 이름을 지정하지 않는 한 모든 문자열)로 바꾼 다음 오류 메시지가 표시되는지 확인하십시오. 오류가 없으면 코드가 실행되고 있지 않은 것입니다.

참조 URL : https://stackoverflow.com/questions/3257480/how-to-debug-elisp

반응형