Как настроить исполняемое имя при запуске GUD-GDB
Вопрос
Я использую Emacs 24.3.1, чтобы написать программы (в режиме C и C ++).
После компиляции текущего буфера я бегу под командой ниже: M-X GUD-GDB.Emacs дает подсказку, как приведено ниже: gdb --fullname prog
Однако иногда название «PROG» не совпадает с исполняемым именем, скомпилированным от текущего буфера. напримерЯ закончил пять программ Prog1, Prog2, ... Prog5, и в настоящее время работает над PROG6.Но M-X GUD-GDB дает мне GDB --Fullname Prog5.(Я хочу прог6 вместо этого)
Есть ли способ исправить это?В частности, «исправьте» означает принуждение GUD-GDB для использования имени текущего буфера (без суффикса) в качестве имени prog.
Спасибо заранее.
Решение
Я думаю, что 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)
.