0
我的程序是一個用C編寫的多線程程序,可以在Solaris上運行。我可以知道哪個線程會從核心轉儲文件中更改全局變量的值嗎?
現在,一個變量(在堆malloced)有時從一個有效的值改變爲NULL
,所以訪問時,核心轉儲發生。
我已經嘗試了所有我知道的方法:使用libumem進行,添加日誌,代碼演練,並沒有什麼可以發現。
所以,當我再次分析核心轉儲文件,我有一個奇妙的想法:我可以知道哪個線程改變全局變量(包括堆malloced)的主營轉儲文件的價值?任何人都可以從核心轉儲文件提供一些線索?
沒有,真的沒有。您可以嘗試設置內存斷點以查看變量何時設置爲NULL? – NPE
爲什麼不在訪問它之前檢查'NULL'? –
@NPE:在接收到消息時,內存被打開,處理完消息後,內存將被釋放。這不總是一個問題,所以我不能設置內存斷點。 –