在通过 emacs 运行时设置 gdb 的环境



我有一个程序,我想通过emacs用gdb调试它。为了运行这个程序的开发版本,我有一个shell脚本,我可以从中获取它,它可以设置调用环境以查看正确的库等。我无法解决的是如何在执行gdb之前要求emacs/gud获取这个文件的源代码。

我尝试过使用类似"source-env.sourceme&&gdb-my_program"的命令,但emacs抱怨它不知道"source"是什么意思。我想它并不是真的在shell中运行gdb,所以这些技巧是行不通的。

那么,我该如何说服gud/emacs/athing在我的自定义环境中运行gdb呢?我已经制定了一个棘手的解决方案,但我觉得我一定错过了什么。

gdb有自己的设置环境变量的语法:
set environment varname [=value]

不要使用shell脚本,而是使用上面的语法在文件中写入变量定义,然后从正在运行的gdb会话中source该文件。请注意,这不是bash内置的source命令,而是gdb自己的命令,因此bash风格的环境变量定义自然不会起作用。

您的破解解决方案是什么?

为什么不只需要一个包装器脚本来获取env.sourceme,然后运行gdb呢?

#!/usr/bin/env bash
source env.sourceme
gdb -i=mi $1

您可以使用setenv以交互方式(M-x setenv)或编程方式修改Emacs环境:

(setenv "FOOBAR" "whatever")

运行gud-gdb时,使用setenv设置的任何内容都将传递给gdb进程。

相关内容

  • 没有找到相关文章

最新更新