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

标签 linux command-line gdb environment-variables command-substitution

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

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

我有两个选择:

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

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

有什么想法吗?

最佳答案

从 shell 命令行启动 gdb 时,可以指定运行哪个程序,with which arguments (with --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)

--ex=run是让gdb立即运行。

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

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

关于linux - 如何使用 shell 命令在 GDB 中设置环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55593045/

相关文章:

linux - 我已按照 Linux From Scratch 中的说明配置 binutils 2.26,但出现错误 -'c compiler cannot create executable file '

c - 用 C 语言的 fopen() 读取文件

c++ - 使用 gdb 调试 chroot 程序

linux - Firefox 附加组件在哪里可以找到 .xpi 文件

linux - 有人可以建议支持复杂数据的高性能共享内存 API 吗?

c++ - 从命令行创建 Intellisense 数据库?

shell - 将终端命令保存到打开时在终端中运行命令的文件

c - 为什么 gdb "set"命令不能识别全局变量,必须添加 "::"或 "variable"?

c - 如何使用GDB调试多线程程序?

linux - 使用 grep 检索子字符串