我是valgrind的忠實粉絲,並且廣泛使用它來捕捉我的代碼中的錯誤。然而現在我被一個只在特定情況下顯示的錯誤所困擾,這個錯誤要求我的程序malloc /使用超過32Gb的RAM(實際上大約有37GB),而valgrind有一個硬編碼的限制,表示它不會讓你分配超過32Gb。我已經設法在網上找到幾個帖子,其中人們列出了對valgrind的各種代碼修改,它應該允許您擴展這個限制,但是它們似乎不工作,或者它們似乎在修改不同的(並且未指定的)版本的valgrind。無論如何,我不會熱衷於在valgrind內部進行攻擊,所以我開始尋找其他選項。替代valgrind沒有32GB內存限制?
Clang/AddressSanitizer似乎是一個不錯的選擇,但也有一個不幸的地方,因爲我使用了很多嵌套函數。所以,我的問題是 - 有沒有人知道valgrind的選擇(在64位linux上)沒有valgrind的32Gb內存分配限制?
思路V歡迎 最好 贊
你提到的AddressSanitizer,但你有沒有試過鐺靜態分析儀?作爲一個靜態分析器,它不會替代像valgrind或AddressSanitizer這樣的內存錯誤檢測器,但我最近開始使用它,並且通過這種方式糾正了一些內存相關的錯誤。 –
另一個地方看: https://code.google.com/p/address-sanitizer/wiki/ComparisonOfMemoryTools 這裏列出了五個競爭記憶檢查器,其中Valgrind和AddressSanitizer只有兩個。 –
謝謝Doug!我還沒有嘗試過clang,因爲它指定它不支持嵌套函數。我會看看那個wiki,謝謝! – user1213546