我有一个程序,我想通过emacs用gdb调试它。为了运行这个程序的开发版本,我有一个shell脚本,我可以从中获取它,它可以设置调用环境以查看正确的库等。我无法解决的是如何在执行gdb之前要求emacs/gud获取这个文件的源代码。
我尝试过使用类似"source-env.sourceme&&gdb-my_program"的命令,但emacs抱怨它不知道"source"是什么意思。我想它并不是真的在shell中运行gdb,所以这些技巧是行不通的。
那么,我该如何说服gud/emacs/athing在我的自定义环境中运行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
进程。