我想在其环境中仅使用单个变量gdb
来运行MyVar
。
但是,变量的内容相当复杂,包含不可打印的ASCII,因此最好使用例如MyVar=$(python -c 'print("\xff...")')
。
我有两个选择:
在运行MyVar
之前在bash
中设置gdb
。然后在gdb
内部,使用unset environment NAME
单独删除所有其他环境变量(非常繁琐!)。
使用unset environment
清除所有环境变量。然后在gdb
内,使用shell命令(如上)设置MyVar
(如何?)
有什么想法吗?
答案 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却没有。