2009-09-02 14 views
0

i landete nur auf SunOS:C++ App auf SunOS hat ein Speicherleck. Wie finde ich es?

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

und Sun Studio haben:

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

Wie ich memleaks in Code finden kann? (dbx ist in diesem Fall keine Option). Valgrind funktioniert nicht auf Sparc-Systemen, nur eine Lösung, die mir in den Sinn kommt, ist die Verwendung einiger intelligenter Bibliotheken, die neu laden und löschen und zählen, wie oft sie aufgerufen werden. Wer weiß etwas, das auf BSD wie Lizenz ist?

+1

Warum nicht dbx? Sie können dbx, das Sun Studio-Debugger-Feature zur Laufzeitprüfung (RTC), verwenden. (dbx) check-leaks (dbx) run args. – Abhay

+0

, weil wir Leck in DLL finden müssen, und kein Framework mit Debug-Symbolen haben. Wie auch immer, ich bin mir nicht sicher, ob dbx auch damit umgehen kann. – teZeriusz

Antwort

4

Auf Sun OS können Sie Purify verwenden, oder versuchen, Ihr Programm zu portieren (in der Regel werden Sie das Leck auch portieren) zu Unix/Linux und valgrind verwenden, um das Leck zu finden.

+5

SunOS _ist_ UNIX, wahrscheinlich die zweitbeliebteste Variante nach Mac OSX – MSalters

+0

Ich habe gehört, dass Purify ein großartiges Tool ist, leider ist die Lizenz anderen Abteilungen zugewiesen. – teZeriusz

1

Ich denke, es gibt Freeware-Bibliotheken, aber wir verwenden Purify auf Solaris, die gut funktioniert.

2

DTrace kann sehr nützlich sein, um herauszufinden, was in Solaris-Anwendungen vor sich geht.

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

+0

Ich habe nicht erkannt, dass dtrace verwendet werden kann, um Memleaks zu finden. Ich dachte, es wäre etwas ähnlich wie Code-Coverage-Tool, aber ein wenig Lowlevel und in der Laufzeit. BTW gibt es wirklich keine Überlastung während Dtracing-Prozess? Wir spielen mit Protokollen und Zeit ist uns wichtig. – teZeriusz

+0

DTrace hat fast keinen Overhead, wenn es deaktiviert ist. Bei Aktivierung wirkt sich dies jedoch auf die Leistung aus. Da jedoch ein Konstruktionsziel darin besteht, Probleme in Produktionssystemen zu diagnostizieren, ist es ziemlich gering. Der beste Rat ist, es zu versuchen und zu sehen, idealerweise auf einer dev Installation. –

1

Sie können auch cppcheck genannt, eine Anwendung verwenden, um Speicherlecks, sowie eine Reihe anderer Probleme. Es ist ein kostenloses/Open-Source-Produkt.

Ich habe es nie auf SunOS oder Sparc Maschinen verwendet, aber die Quelle ist verfügbar und Sie könnten versuchen, es zu bauen. Ich bin mir nicht sicher, was unter der Haube passiert, aber ich sehe nicht, warum Sie es nicht auf einer SunOS Sparc Maschine bauen könnten.