【问题标题】:How to customize the executable name when running gud-gdb运行 gud-gdb 时如何自定义可执行文件名
【发布时间】:2014-06-03 01:48:18
【问题描述】:

我正在使用 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。 (我想要 prog6。)

有没有办法纠正这个问题?具体来说,“正确”意味着强制 gud-gdb 使用当前缓冲区的名称(不带后缀)作为 prog 名称。

提前致谢。

【问题讨论】:

  • 输入M-x gud-gdb backspace 6 有多难。您正在尝试保存两次击键!您可能可以更高效地花费精力。
  • 在现实生活中,我正在处理长度不超过 10+ 字符的名称以符合命名标准,这非常繁琐。所以我还是更喜欢捷径。以上只是一个简化名称的例子......

标签: emacs gdb gud


【解决方案1】:

我认为 emacs 使用启发式方法(基于最新的可执行文件或类似的东西)来确定要提供的默认程序。

如果您的偏好非常具体,您可以定义并使用此函数:

(defun my-gud-gdb ()
 (interactive)
 (gud-gdb (concat "gdb --fullname "
                  (file-name-sans-extension (buffer-file-name (current-buffer))))))

此函数将对一个名称与您正在编辑的文件类似的文件执行 gdb。

【讨论】:

    【解决方案2】:

    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)
    

    【讨论】:

    • 感谢您的提示。这似乎需要重新编译emacs。 (或者还有其他方法?)
    • 不需要重新编译。但是,当遇到困难时,您应该使用 juanleon 提供的解决方案。这使得 Emacs 代码保持不变,因此不会有搞砸的风险。
    • 明白。我稍后会重新审视这个方法。
    猜你喜欢
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2019-12-13
    • 1970-01-01
    • 2015-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多