2009-09-02 59 views
0

我剛剛降落在SunOS:SunOS上的C++應用程序存在內存泄漏。如何找到它?

$ uname -a 
SunOS sunfi95 5.9 Generic_122300-13 sun4u sparc SUNW,Sun-Fire-880 

,並有陽光工作室:

$ CC -V 
CC: Sun C++ 5.8 2005/10/13 

我怎樣才能找到代碼memleaks? (在這種情況下dbx不是一個選項)。 Valgrind不能在sparc系統上工作,只有一個解決方案在我腦海中是使用一些智能庫,它會重載新的和刪除並計算它們被調用的次數。 任何人都知道什麼是像BSD許可證嗎?

+1

爲什麼不用dbx?您可以使用dbx(Sun Studio調試器)和運行時檢查(RTC)功能。 (dbx)check-leaks(dbx)運行 args。 – Abhay 2009-09-02 08:44:09

+0

因爲我們需要在dll中查找泄漏,並且沒有調試符號的框架。無論如何,我不確定即使我們擁有它,dbx也可以處理它? – teZeriusz 2009-10-13 20:12:02

回答

4

在Sun OS,您可以使用Purify,或嘗試端口(通常你會口泄漏,太)你的程序Unix/Linux和使用valgrind找到泄漏。

+5

SunOS _is_ UNIX,可能是Mac OSX之後的第二大熱門版本 – MSalters 2009-09-02 09:15:22

+0

我聽說Purify是一款出色的工具,不幸的是,許可證分配給了其他部門。 – teZeriusz 2009-10-13 20:16:13

1

我認爲有免費的庫,但我們使用Purify在Solaris上運行良好。

2

DTrace對於計算Solaris應用程序中正在發生的事情非常有用。

Here's an example of how to use it from Sun.

+0

我沒有意識到dtrace可以用來尋找memleaks。我認爲它與codecoverage工具類似,但有點低級,並且在運行時。順便說一句,在追蹤過程中真的沒有超載?我們在玩協議,時間對我們很重要。 – teZeriusz 2009-10-13 20:25:16

+0

DTrace在禁用時幾乎沒有開銷,但啓用時會對性能產生影響。但是,由於設計目標是診斷生產系統上的問題,因此它很小。最好的建議是嘗試一下,看看,最好在dev安裝。 – 2009-10-16 07:48:20

1

您也可以使用名爲cppcheck查找內存泄漏的應用程序,以及其他一些問題。這是一款免費/開源產品。

我從來沒有在SunOS或Sparc機器上使用它,但是源代碼可用,您可以嘗試構建它。我不確定發生了什麼,但我不明白爲什麼你不能在SunOS Sparc機器上構建它。