
您在追蹤記憶體相關問題時使用什麼策略?您使用哪些工具(開源和專有)來識別記憶體洩漏、記憶體損壞等?如果系統上只有 gdb/dbx 可用,您將如何追蹤記憶體洩漏?
對我來說,僅使用調試器修復記憶體洩漏非常困難。
答案1
答案2
valgrind 非常有幫助。
答案3
地塊(來自 valgrind)是尋找記憶體洩漏的最佳方法之一。重複您的可疑程式碼(或執行您的程式足夠長的時間)並使用 ms_print 轉儲結果。通常,呼叫堆疊會為您提供足夠的資訊來修復它。
使用 GDB,您可以嘗試附加到正在運行的程式並呼叫諸如malloc_stats()
如果您的程式是用不同的語言編寫的,則可能會更加棘手。最近,一些 GDB 獲得了腳本化能力,人們開始了有趣的項目,例如gdb 堆,它可以從核心轉儲中分析 Python 記憶體。類似的記憶體分析腳本可能適用於 C++ 物件。
另請閱讀https://stackoverflow.com/questions/2564752/examining-cc-heap-memory-statistics-in-gdb
答案4
我做 Objective-C 已經有一段時間了,有一個分析器可以處理 C 級記憶體管理和類似的東西。Clang 靜態分析器非常好,Apple 決定將其與 xCode IDE 捆綁在一起。我不確定這是否適合你的問題,但如果你正在做 C 那麼值得一試。