Как настроить имя исполняемого файла при запуске 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)