2010-08-28 55 views
2

我對使用Sun Studio檢測C++應用程序中使用dbx調試器的內存泄漏非常感興趣,但我認爲此調試器僅顯示由malloc/realloc和free生成的內存泄漏;我不確定這一點,但我已經嘗試了一個C++程序,並且我沒有獲得內存泄漏。在這種情況下,我會嘗試Valgrind。如果我做錯了什麼(高可能性)如何調試C++應用程序?使用新操作符和刪除操作符檢測dbx中的內存泄漏

謝謝。

+0

如果您使用的是DBX,我認爲您被困在某些AIX或Solaris上。在'malloc()'中設置一個斷點。調用'new'程序來查看它是否在內部調用'malloc()',因爲在AIX和Solaris上許多STL實現在內部使用'malloc()'/'free()'。 – Dummy00001 2010-08-28 18:39:32

回答

0

那麼你需要確保一些要點,首先,你跟蹤的應用程序確實有任何內存泄漏。如果不是那麼profiler將不會顯示任何東西。如果有泄漏,並且profiler沒有捕獲,那麼需要檢查你是如何做到的。因此,valgrind是另一個可以嘗試的最佳選擇。因此,當您說「出現錯誤(很可能)時,我該如何調試C++應用程序?」你的意思只是與調試內存泄漏問題或者在C++應用程序的一般調試中有關嗎?如果它的內存泄漏相關,那麼你可以依賴valgrind,否則你也可以看看AIX malloc trace。這裏是它的URL:

http://publib.boulder.ibm.com/infocenter/aix/v6r1/index.jsp?topic=/com.ibm.aix.genprogc/doc/genprogc/malloc_trace_debug.htm

+0

謝謝!我只提到內存泄漏。我知道我的代碼有內存泄漏,因爲Netbeans 6.8檢測到其中8個,但沒有更多的信息。我使用Linux,我會嘗試Valgrind,事實上,我見過Valgrind需要glibc 2.0-2.10,我已經安裝的glibc版本是2.11。第一個問題...... – honnix 2010-08-28 20:35:56