문제

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)
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top