GUD-GDB를 실행할 때 실행 파일을 사용자 정의하는 방법
문제
i Emacs 24.3.1을 사용하여 프로그램을 작성합니다 (C 및 C ++ 모드에서).
현재 버퍼를 컴파일 한 후 아래 명령을 실행합니다. m-x gud-gdb.Emacs는 아래와 같이 프롬프트를 제공합니다. gdb --fullname prog
그러나 때로는 "prog"이름이 현재 버퍼에서 컴파일 된 실행 파일과 동일하지 않습니다. 예를 들어,나는 Prog1, Prog2, ... Prog5 5 프로그램을 완료했으며 현재 Prog6에서 일하고 있습니다.그러나 m-x gud-gdb는 나에게 gdb --fullname prog5를 제공합니다.(나는 Prog6을 대신 원한다.)
이 문제를 해결할 수있는 방법이 있습니까?특히 "올바른"은 GUD-GDB가 현재 버퍼 이름 (접미사없이)을 PROG 이름으로 사용하도록 강제합니다.
미리 감사드립니다.
해결책
이 Emacs가 기본 프로그램을 제공하는 기본 프로그램을 파악하기 위해 eMacs가 휴리스틱 (실행 파일이 더 최근 또는 그와 비슷한 것과 같은 것)을 사용한다고 생각합니다.
환경 설정이 매우 구체적인 경우이 기능을 정의하고 사용할 수 있습니다.
(defun my-gud-gdb ()
(interactive)
(gud-gdb (concat "gdb --fullname "
(file-name-sans-extension (buffer-file-name (current-buffer))))))
.
이 기능은 확장자없이 편집중인 파일과 같은 파일에서 GDB를 실행합니다.
다른 팁
gud-query-cmdline
는 아직 제공되지 않는 선택적 인수로 filename
를 허용합니다.
patch 아래에 그것을 제공해야합니다.
파일 권한이 실행 파일로 설정된지 확인하십시오
--- gud.el Sun Mar 17 12:52:42 2013
+++ gud.el Tue Jun 3 10:06:11 2014
@@ -716,7 +716,7 @@
"Run gdb on program FILE in buffer *gud-FILE*.
The directory containing FILE becomes the initial working
directory and source-file directory for your debugger."
- (interactive (list (gud-query-cmdline 'gud-gdb)))
+ (interactive (list (gud-query-cmdline 'gud-gdb (and (file-executable-p (buffer-file-name))(buffer-file-name)))))
(when (and gud-comint-buffer
(buffer-name gud-comint-buffer)
. 제휴하지 않습니다 StackOverflow