2009-12-10 41 views
7

在Linux,FreeBSD和其他系統上,我使用valgrind來檢查內存錯誤,如無效讀取等。我真的很喜歡valgrind。現在我必須在Solaris/OpenSolaris上測試代碼,並且無法像valgrind那樣以不錯的方式(或更好;-))獲取有關無效讀/寫的信息。在Solaris上找到錯誤的內存訪問

在網上搜索時,我找到libumem的引用,但我只收到有關內存泄漏的報告,而非無效訪問。我錯過了什麼?

回答

6

Sun Studio編譯器附帶的dbx在其「運行時檢查」功能(check子命令)中包含內存訪問檢查支持。請參閱:

相關的 「Sun內存錯誤發現工具」,也可以從 http://cooltools.sunsource.net/discover/

+0

嗯,我一直在那裏,忘了它...現在玩的bcheck包裝,並試圖得到它在我的自動化測試套件。 – johannes 2009-12-11 19:20:08

+0

現在還有一個學生作爲其[碩士論文項目]的一部分[https://bitbucket.org/setupji/valgrind-solaris] [valgrind到Solaris的實驗/部分端口](https:/bitbucket.org/setupji/valgrind-solaris) /dip.felk.cvut.cz/browse/pdfcache/pavlupe1_2012dipl.pdf)。 – alanc 2012-08-18 17:20:53

1

watchmalloc是一個非常有用的庫,可以爲程序動態加載(通常不需要重新編譯),然後在所有通常存在問題的內存位置(如釋放區域或分配的內存塊之後)設置觀察點。 如果您的程序訪問其中一個無效區域,它會得到一個信號,您可以在調試器中檢查它。

根據配置的不同,有問題的區域可以僅用於寫入,也可用於讀取。

1

從版本3.11.0,Valgrind的呢在Solaris上運行。 參見Release NotesSupported Platforms

更確切地說,的x86/Solaris中AMD64/Solaris上現在支持。 支持sparc/Solaris仍在工作。

+0

只需提及,您必須至少具有Solaris 11.特別是,Solaris 10.X不受支持。 – marol 2015-11-13 08:15:40