Как настроить имя исполняемого файла при запуске gud-gdb

Я использую Emacs 24.3.1 для написания программ (в режиме C и C++).

После компиляции текущего буфера я запускаю следующую команду: Mx gud-gdb. Emacs выдает подсказку, как показано ниже: gdb --fullname prog

Однако иногда имя "prog" не совпадает с именем исполняемого файла, скомпилированного из текущего буфера. Например, я выполнил пять программ prog1, prog2,... prog5 и сейчас работает над prog6. Но Mx gud-gdb дает мне gdb - полное имя prog5. (Я хочу вместо prog6.)

Есть ли способ исправить это? В частности, "правильный" означает принуждение gud-gdb использовать имя текущего буфера (без суффикса) в качестве имени программы.

Заранее спасибо.

2 ответа

Решение

Я думаю, что 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 в качестве необязательного аргумента, который еще не подан.

Патч ниже должен предоставить это.

Убедитесь, что права доступа к файлу установлены на исполняемый файл

--- 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)
Другие вопросы по тегам