我只想在其环境中运行gdb一个变量MyVar。
但是,变量的内容非常复杂,包含不可打印的ASCII,因此最好使用例如设置MyVar=$(python -c 'print("\xff...")')。
我有两个选择:
在运行之前设置MyVarin 。然后在内部,使用(非常乏味!)单独删除所有其他环境变量。bashgdbgdbunset environment NAME
使用清除所有环境变量unset environment。然后在内部gdb,MyVar使用shell命令进行设置(如上所述)(如何?)
有任何想法吗?
当从 shell 命令行启动 gdb 时,您可以指定要运行哪个程序、使用哪些参数(使用--args)env ,甚至可以在!的帮助下修改程序的环境。
我刚刚成功地这样做了:
gdb --ex=run --args env LD_BIND_NOW=1 LD_DEBUG=libs \
apt-get install --yes $(cat pkgs-to-install-to-crash-apt)
Run Code Online (Sandbox Code Playgroud)
--ex=run就是让gdb立即运行它。
就你而言,你会这样做env -i。
与建议的不同之处在于env -i VAR=... gdb program,只有您检查的程序在特殊环境下,而不是gdb。
选项 2 是可能的。
\n\n(gdb) unset environment\n(gdb) python gdb.execute("set environment Myvar=\\xff")\n(gdb) show environment \nMyvar=\xc3\xbf\nRun Code Online (Sandbox Code Playgroud)\n\n选项 1 可以通过 来完成env(1)。
$ env -i MyVar=$(python -c \'print("xyz")\') gdb\n(gdb) show environment\nMyVar=xyz\nLINES=35\nCOLUMNS=80\nRun Code Online (Sandbox Code Playgroud)\n\n然后你只需要清除行和列。
\n| 归档时间: |
|
| 查看次数: |
440 次 |
| 最近记录: |