我有一个程序,我想通过emacs使用gdb进行调试。为了运行这个程序的开发版本,我有一个shell脚本,我可以使用它设置调用环境以查看正确的库等。我不能理清的是如何请求emacs / gud来源这个执行gdb之前的文件。
我尝试过使用像“source env.sourceme&& gdb my_program”这样的命令,但是emacs抱怨它不知道“源”是什么意思。我想它并不是真的在shell中运行gdb,所以这些技巧都行不通。
那么,我怎样才能说服gud / emacs /在我的自定义环境中运行gdb?我有一个hacky解决方案,但我觉得我必须遗漏一些东西。
答案 0 :(得分:5)
gdb有setting environment variables的自己的语法:
set environment varname [=value]
使用上面的语法将变量定义写入文件,而不是shell脚本,然后source
来自正在运行的gdb会话的文件。请注意,这不是bash的内置source
命令,而是gdb's own,因此自然的bash风格的环境变量定义将无效。
答案 1 :(得分:3)
您可以使用setenv
以交互方式(M-x setenv
)或以编程方式修改Emacs环境:
(setenv "FOOBAR" "whatever")
当您运行gud-gdb
时,使用setenv
设置的任何内容都将传递到gdb
进程。
答案 2 :(得分:3)
你的hacky解决方案是什么?
为什么不只是有一个包含env.sourceme
然后运行gdb的包装器脚本?
#!/usr/bin/env bash
source env.sourceme
gdb -i=mi $1