2016-04-18 37 views
0

我有一個centos4.1,我嘗試爲我的二進制運行valgrind(佔用大量內存)。每當該進程因「已殺死」消息而中止時。轉儲文件也會生成,但是當我嘗試使用gdb調試此轉儲文件時,它僅顯示「找不到符號」錯誤。可能是什麼原因? 而且它似乎沒有使用交換內存(15 GB)。 雖然它對簡單的程序工作正常。Valgrind以「殺死」消息中止

任何幫助表示讚賞。 謝謝。

+0

看看這個:http://stackoverflow.com/questions/1950685/debugging-a-core-produced-by-valgrind – vcp

+0

thanx @vcp,應該這樣做。之後我會回來的。 – ASON

回答

0

這可能是由於系統內存不足並隨後殺死最大的進程成爲可能的罪魁禍首。

您應該可以通過添加交換空間來避免這種情況(當然,實際內存也會有所幫助)。 Valgrind在內存使用上產生了相當多的開銷,因爲它需要在分配之間留出不可訪問的區域,以便捕獲越界訪問。

+0

謝謝@ simon.I檢查,但valgrind的內存管理單元目前沒有提供任何錯誤。 – ASON

+0

不,如果程序分配了10個字節的內存,valgrind將分配42個字節(10+兩倍於'--redzone-size'參數,對於* memcheck *,默認值爲16),因此整個計算機將耗盡空閒頁面。如果使用'dmesg'檢查內核日誌,應該提到這一點。 –