如何使用 shell 命令在 GDB 中设置环境变量?
How to set environment variable within GDB using shell command?
我想 运行 gdb
在其环境中只有一个变量 MyVar
。
但是,变量的内容相当复杂,包含不可打印的 ASCII,因此最好使用例如MyVar=$(python -c 'print("\xff...")')
.
我有两个选择:
在运行宁gdb
之前在bash
设置MyVar
。然后在 gdb
中,使用 unset environment NAME
单独删除所有其他环境变量(非常乏味!)。
使用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。
我想 运行 gdb
在其环境中只有一个变量 MyVar
。
但是,变量的内容相当复杂,包含不可打印的 ASCII,因此最好使用例如MyVar=$(python -c 'print("\xff...")')
.
我有两个选择:
在运行宁
gdb
之前在bash
设置MyVar
。然后在gdb
中,使用unset environment NAME
单独删除所有其他环境变量(非常乏味!)。使用
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。