我使用emacs 24.3.1编写程序(在C和C ++模式下)。
编译当前缓冲区后,我运行命令:M-x gud-gdb。 Emacs给出如下提示: gdb --fullname prog
然而,有时候" prog" name与从当前缓冲区编译的可执行文件名称不同。 例如我完成了五个程序prog1,prog2,... prog5,目前正在开发prog6。但是M-x gud-gdb给了我gdb --fullname prog5。 (我想改编prog6。)
有没有办法纠正这个?具体而言,"正确"意味着强制gud-gdb使用当前缓冲区的名称(不带后缀)作为编程名称。
提前致谢。
答案 0 :(得分:2)
我认为emacs使用启发式(基于最新的可执行文件或类似的东西)来确定要提供的默认程序。
如果您的偏好非常具体,您可以定义并使用此功能:
(defun my-gud-gdb ()
(interactive)
(gud-gdb (concat "gdb --fullname "
(file-name-sans-extension (buffer-file-name (current-buffer))))))
此函数将在名为您正在编辑的文件的文件上执行gdb而不使用扩展名。
答案 1 :(得分:0)
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)