如何使用 shell 命令在 GDB 中设置环境变量?

How to set environment variable within GDB using shell command?

我想 运行 gdb 在其环境中只有一个变量 MyVar

但是,变量的内容相当复杂,包含不可打印的 ASCII,因此最好使用例如MyVar=$(python -c 'print("\xff...")').

我有两个选择:

  1. 在运行宁gdb之前在bash设置MyVar。然后在 gdb 中,使用 unset environment NAME 单独删除所有其他环境变量(非常乏味!)。

  2. 使用unset environment清除所有环境变量。然后在 gdb 中,使用 shell 命令设置 MyVar(如上)(如何?)

有什么想法吗?

选项 2 是 possible

(gdb) unset environment
(gdb) python gdb.execute("set environment Myvar=\xff")
(gdb) show environment 
Myvar=ÿ

选项 1 可以用 env(1) 完成。

$ env -i MyVar=$(python -c 'print("xyz")') gdb
(gdb) show environment
MyVar=xyz
LINES=35
COLUMNS=80

然后你只需要清除行和列。

从shell命令行启动gdb时,可以指定运行、with which arguments (with --args)哪个程序,甚至可以借助[=]修改程序的环境12=]!

我就是这样成功的:

gdb --ex=run --args env LD_BIND=now LD_DEBUG=libs \
apt-get install --yes $(cat pkgs-to-install-to-crash-apt)

--ex=run 是要求gdb立即运行它。

在你的情况下,你会做 env -i

与建议的env -i VAR=... gdb program不同的是只有你检查的程序在特殊环境下,而不是gdb。