如何从核心转储中获取环境变量

问题描述 投票:0回答:2

在 UNIX 环境(linux/solaris/AIX)中我的应用程序崩溃了。请帮助我从核心转储中获取环境变量

gdb
2个回答
12
投票

运行

strings -a core
应该会产生一个看起来明显的字符串块,如
HOME=...
HOSTNAME=...
等。

您还可以通过查看

main
的第三个参数来检查初始环境,这是一个
envp[]
——一个以
NULL
结尾的指向环境字符串的指针数组。

最后,当前环境块由

__environ
或类似变量指向。


0
投票

为了扩展@Employee-Russian 提供的答案,较新版本的 GDB 调试器具有 pipe 命令。

这使得查找字符串数组的特定元素变得更加容易。

例如,查找崩溃时进程的当前工作目录:

(gdb) pipe print *__environ@1000 | grep '"PWD='
  0xffc145e4 "PWD=/home/blother",

或者对环境变量列表进行排序:

(gdb) pipe p *__environ@1000 | awk '{print $2}' | sort
© www.soinside.com 2019 - 2024. All rights reserved.