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

时间:2012-03-12 13:21:51

标签: emacs gdb gud

我有一个程序,我想通过emacs使用gdb进行调试。为了运行这个程序的开发版本,我有一个shell脚本,我可以使用它设置调用环境以查看正确的库等。我不能理清的是如何请求emacs / gud来源这个执行gdb之前的文件。

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

那么,我怎样才能说服gud / emacs /在我的自定义环境中运行gdb?我有一个hacky解决方案,但我觉得我必须遗漏一些东西。

3 个答案:

答案 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