c语言 - 我可以知道哪个线程从核心转储文件中更改了全局变量的值吗?



我的程序是一个用C语言编写的多线程程序,运行在Solaris上。

现在,一个变量(在堆中错误定位)有时会从有效值更改为 NULL ,因此在访问它时,会发生核心转储。

我已经尝试了所有我知道的方法:使用 libumem、添加日志、代码演练,但什么也找不到。

因此,当我再次分析核心转储文件时,我有一个绝妙的想法:我能知道哪个线程更改了核心转储文件中全局变量(包括从堆中错误定位)的值吗?任何人都可以从核心转储文件中提供一些线索吗?

我可以知道哪个线程更改了核心转储文件中全局变量(包括从堆中错误定位)的值吗?

不。

核心转储记录进程内存在崩溃点的当前状态,而不是它的历史记录。就像看着墙上喷漆涂鸦的照片,你分不清是谁画的一样,看着核心垃圾场里的NULL也不会告诉你是谁把它放在那里的。

最新更新