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

时间:2019-04-09 12:36:18

标签: linux x86 gdb

我想在其环境中仅使用单个变量gdb来运行MyVar

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

我有两个选择:

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

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

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

选项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

然后,您只需要清除LINES和COLUMNS。

答案 1 :(得分:0)

从shell命令行启动gdb时,您可以指定要运行的程序with which arguments (with --args),甚至可以借助env来修改程序的环境!

我就是这样成功完成的:

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却没有。