Как настроить исполняемое имя при запуске GUD-GDB

StackOverflow https://stackoverflow.com//questions/24005911

  •  20-12-2019
  •  | 
  •  

Вопрос

Я использую 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)
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top