1 단계 : 달리기 emacs -Q
가장 먼저해야 할 일은 사용자 정의없이 emacs를 실행하는 것입니다. 바닐라 이맥스에서 문제를 재현 할 수 있다면 실제로는 이맥스 자체의 버그 일 수 있습니다. 드문 일이지만 첫 단계로 배제합니다.
명령 줄에서 -Q
플래그 (예 :)로 Emacs를 시작 emacs -Q
하면 로컬 사용자 정의가로드되지 않은 베어 또는 'vanilla'emacs가 표시됩니다. 여전히 문제가 발생합니까? 그렇다면 "버그 레시피 제공"으로 건너 뛰십시오.
1b 단계 : 패키지에 문제가있는 경우 어떻게합니까?
문제가 특정 패키지에 국한된 경우 해당 패키지를로드하지 않으면 문제를 재현 할 수 없습니다. 그러나 모든 구성이 아닌 관련 패키지 만로드하려고합니다. 이렇게하려면 emacs -Q
다시 실행 하고 다음과 같은 간단한 스크립트를 준비하십시오.
(require 'package)
(setq package-load-list
'((package1 t)))
(package-initialize)
교체 package1
로드 할 패키지의 이름으로. 여러 패키지를로드해야하는 경우 이에 따라 스크립트를 수정하십시오.
(require 'package)
(setq package-load-list
'((package1 t)
(package2 t)
(package3 t)))
(package-initialize)
이 코드를로드하려면 *scratch*
버퍼에 붙여넣고을 호출하면 M-x eval-buffer
됩니다. (또는 다른 코드가없는 한 모든 버퍼!).
이제 패키지를로드했으며 테스트중인 패키지 만로드했습니다. 지금 문제를 재현 할 수 있다면 "버그 레시피 제공"으로 건너 뛰십시오.
2 단계 : 버그 찾기 .emacs
이제 구성에 문제가 있음을 확인했습니다 ( "전화가 집안에서 온 것입니다!"). 구성의 길이는 수천 줄이 될 수 있으며 여러 파일을로드 할 수 있습니다. 문제를 찾으려면 이진 검색을 수행하여 한 번에 코드의 절반을 주석 처리하여 범위를 좁 힙니다. 1
- 옵션
emacs
없이 일반 이맥스를 엽니 다 -Q
.
- 설정 파일을여십시오 (보통 시도하지 못하는 경우
~/.emacs
또는 ).emacs.d/init.el
C-h v user-init-file
- 파일의 첫 번째 절반을 선택하십시오.
C-space
표시를 설정하려면 절반을 아래로 스크롤하여 영역을 확장하십시오.
- 선택 영역을 주석
M-;
하고 파일을 저장
- 오픈 새
emacs
(당신의 테스트 이맥스 최초 실행 이맥스를 떠나). 테스트 emacs 는 구성의 축소 버전을 읽습니다.
- 테스트 이맥스 에서 문제를 재현 해보십시오
- 재현 할 수 없으면 테스트 emacs를 닫고 원래 emacs
undo
에서 주석으로 주석을 C-/
남기고 나머지 코드의 절반을 주석 처리하십시오. 새로운 테스트 이맥스를 열고 다시 시도하십시오.
- 문제를 재현 할 수 있으면 나머지 코드의 절반을 주석 처리하고 문제가 지속되는지 확인하십시오.
- 문제를 재현하는 데 필요한 가장 작은 구성 비트를 찾을 때까지이 프로세스를 반복하십시오.
특정 패키지에 문제가있는 경우 물론 해당 패키지를로드하는 코드를 주석 처리하지 않은 상태로 두어야합니다.
구성 파일이 다른 파일을로드하면 검색을 해당 파일로 확장 할 수도 있습니다.
이 시점에서 문제는 한두 줄의 코드로 인한 것임을 알 수 있습니다. 직접 고칠 수도 있습니다. 그렇다면 축하합니다. 무언가를 배웠습니다! 그렇지 않으면 3 단계로 이동하십시오.
3 단계 : 버그 레시피 제공
이 시점에서 여기에 게시 할 자세한 버그 레시피를 제공 할 수 있어야합니다. 다음을 포함해야합니다.
- 이맥스 버전 (이맥스에서 얻을 수있는
M-x emacs-version
- 운영 체제 (Windows #, Mac, Linux 배포)
- 해당되는 경우 어려움을 겪고있는 패키지 버전
- 예상되는 상황 및 실제 상황 을 포함하여 문제를 설명하는 데 필요한 특정 단계 .
예를 들어 다음과 같은 질문을 게시 할 수 있습니다.
슈퍼 모드에 문제가 있습니다. 을 (를) 사용하면 M-x sm-compile-code
PayPal 계정에서 인출됩니다.
재현 단계 :
수퍼 모드로드 :
(require 'package)
(setq package-load-list
'((super-mode t)))
(package-initialize)
- 로 새 파일을여십시오
C-x C-f my-code
- 코드 줄을 입력하십시오 :
10 goto 10
나는 이것이 슈퍼 컴파일러를 호출하고 내 프로그램을 컴파일 할 것으로 기대합니다. 대신 미니 버퍼에 "페이팔에서 수퍼 모드 작성자에게 $ 100가 전송되었습니다"라는 메시지가 표시됩니다.
GNU Emacs 25.1.50.3
데비안 리눅스
수퍼 모드 버전 3.1415
1 버그 헌터 패키지는,이 당신을 도울 수있는 (반) 자동으로 초기화 파일을 양분.
emacs -Q
있습니다. 나는이 질문들을 새로운 사용자들을위한 일반적인 도움으로 연결시키는 것으로 작성했다.