我相信我在OpenBSD的複雜C++應用程序中發生了雙重刪除和一些內存損壞。我想追蹤我的對象被刪除的第一個位置,以及任何取消分配內存的位置。在OpenBSD中有哪些可用於C++內存調試的選項?
我通常會查看valgrind,但它只是linux。否則,我會用新的和刪除操作符來跟蹤某些跟蹤代碼,但是我一直髮現很難確定正確的谷歌搜索。
是否有openbsd的任何包會給我關於內存錯誤的信息?有沒有什麼標準的方式來重新定義新的和刪除來檢測溢出,無效訪問,雙重釋放?
我相信我在OpenBSD的複雜C++應用程序中發生了雙重刪除和一些內存損壞。我想追蹤我的對象被刪除的第一個位置,以及任何取消分配內存的位置。在OpenBSD中有哪些可用於C++內存調試的選項?
我通常會查看valgrind,但它只是linux。否則,我會用新的和刪除操作符來跟蹤某些跟蹤代碼,但是我一直髮現很難確定正確的谷歌搜索。
是否有openbsd的任何包會給我關於內存錯誤的信息?有沒有什麼標準的方式來重新定義新的和刪除來檢測溢出,無效訪問,雙重釋放?
這有很大幫助:
man malloc
調試選項可啓用全系統的環境範圍,或特定的程序。
我不知道你是否願意使用第三方工具,但C++內存驗證器是非常好的。
http://www.softwareverify.com/cpp-memory.php
它隔離內存/句柄泄漏,告訴你多少內存泄漏,並顯示您在代碼中的位置。如果只是它可以爲你修復泄漏:)30天免費試用也可用。
我用它來查找我遺留的C++ MFC應用程序中的泄漏,其中以前的開發人員似乎並不認爲需要永久釋放內存!
此工具僅適用於Windows!謝謝,但我一直在尋找一個可以在OpenBSD中工作的工具或庫,或者有關檢測「新」和「刪除」的最佳實踐的信息。 – fuzzyTew
將malloc標誌作爲一個好開始。 –