我的程序是一个用C 编写的多线程程序,运行在Solaris 上。
现在,一个变量(分配在堆中)有时会从有效值更改为 NULL
,因此在访问它时,会发生核心转储。
我知道的方法都试过了:使用libumem,添加日志,代码走查,什么都找不到。
所以当我再次分析核心转储文件时,我有了一个绝妙的想法:我能知道哪个线程从核心转储文件中更改了全局变量(包括从堆中分配的)的值吗?任何人都可以从核心转储文件中提供一些线索吗?
最佳答案
Can I know which thread change the global variable (including malloced from heap)'s value from core dump file?
没有。
核心转储记录崩溃点进程内存的当前状态,而不是它的历史。就像看墙上喷漆涂鸦的照片你无法分辨是谁画的一样,在核心转储中查看 NULL
也不会告诉你是谁把它放在那里的。
关于我可以知道哪个线程从核心转储文件中更改了全局变量的值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21643736/