如何在运行gud-gdb时自定义可执行文件名



我使用emacs 24.3.1编写程序(C和c++模式)

编译完当前缓冲区后,我运行下面的命令:M-x gud-gdb。Emacs给出如下提示:GDB——fullname prog

然而,有时"prog"名称与从当前缓冲区编译的可执行名称不相同。我完成了五个项目prog1, prog2,…Prog5,目前正在开发prog6。但是M-x gdd -gdb给我gdb——全名prog5。(我想要prog6代替)

有办法纠正这个吗?具体来说,"正确"意味着强制gdb -gdb使用当前缓冲区的名称(不带后缀)作为程序名。

我认为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)

相关内容

  • 没有找到相关文章

最新更新