2009-09-02 14 views
0

私はちょうどのSunOSに上陸:SunOSのC++アプリケーションにメモリリークがあります。それを見つける方法?

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

とSunのスタジオがあります。私は、コードでmemleaksを見つけることができますどのように

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

を? (dbxはこの場合オプションではありません)。 Valgrindはsparcシステムでは動作しませんが、私の頭を悩ます解決策は、スマートなlibを使用して新しいものを過負荷にして何回呼び出すかを数えることです。 誰かがBSDライセンスのようなものを知っていますか?

+1

なぜdbxではないのですか? Sun Studioデバッガdbxは、実行時検査(RTC)機能を使用できます。 (dbx)check-leaks(dbx)を実行 args。 – Abhay

+0

dllでリークを見つける必要があり、デバッグシンボルを含むフレームワークがないためです。とにかく私たちが持っていても、dbxはそれを扱うことができないのですか? – teZeriusz

答えて

4

Sun OSの場合、Purifyを使用するか、プログラムをUnix/Linuxに移植(通常はリークを移植)し、リークを見つけるためにvalgrindを使用してください。

+5

SunOS _is_ UNIX、おそらくMac OS Xの後で2番目に普及した亜種です。 – MSalters

+0

Purifyは素晴らしいツールだと聞きましたが、残念ながらライセンスは他の部門に割り当てられています。 – teZeriusz

1

私はフリーウェアのライブラリがあると思いますが、Solaris上ではうまく動作するPurifyを使用します。

2

DTraceは、Solarisアプリケーションで何が起こっているかを調べるのに非常に役立ちます。

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

+0

私はdtraceがmemleakを見つけるのに使うことができるとは気付かなかった。私はそれをコーデックツールと似たものだと思っていましたが、少し低いレベルでした。 BTWはdtracingプロセス中に実際に過負荷がないのですか?私たちはプロトコルで遊んでおり、時間は私たちにとって重要です。 – teZeriusz

+0

DTraceは無効になってもオーバーヘッドがほとんどありませんが、有効にするとパフォーマンスに影響します。しかし、設計目標は生産システム上の問題を診断することなので、それはごくわずかです。最良のアドバイスは、それを試して見て、理想的には、devのインストールを参照してください。 –

1

ます。また、メモリリークを見つけるために、cppcheckを呼び出したアプリケーションだけでなく、他の多くの問題を使用することができます。これはフリー/オープンソース製品です。

私はSunOSやSparcマシンでこれを使用したことはありませんが、ソースは入手でき、ビルドしようとする可能性があります。私はボンネットの下で何が起こっているのかは分かりませんが、なぜあなたはSunOS Sparcマシンでそれを構築できないのか分かりません。