7

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

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

那么,如何说服 gud/emacs/whatever 在我的自定义环境中运行 gdb?我有一个 hacky 解决方案,但我觉得我一定错过了一些东西。

4

3 回答 3

5

gdb 有自己的设置环境变量的语法:

set environment varname [=value]

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

于 2012-03-13T00:25:45.247 回答
3

你的黑客解决方案是什么?

为什么你不只是有一个包装脚本来获取env.sourceme然后运行 ​​gdb?

#!/usr/bin/env bash

source env.sourceme
gdb -i=mi $1
于 2012-03-12T14:42:30.943 回答
3

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

(setenv "FOOBAR" "whatever")

当你运行时gud-gdb,你设置的任何东西setenv都会被传递给gdb进程。

于 2012-03-12T13:39:21.100 回答