GCC Speicherleckerkennung entspricht Microsoft crtdbg.h?

Nach vielen Jahren der Arbeit an einem general-purpose-C++ - Bibliothek unter Verwendung der Microsoft MSVC-compiler in Visual Studio, wir sind jetzt Portierung auf Linux/Mac OS X (beten für uns). Inzwischen habe ich mich daran gewöhnt und ganz lieb die einfache memory-leak-detection-Mechanismus in MSVC:

#ifdef DEBUG
    #define _CRTDBG_MAP_ALLOC
    #define NEW   new( _NORMAL_BLOCK, __FILE__, __LINE__)
    #include <stdlib.h>
    #include <crtdbg.h>
#else
    #define NEW   new
#endif

Jeder Speicherreservierung erfolgt mit dieser NEUEN makro. Wenn ein Prozess mit unserer Bibliothek beendet, keine Speicher-Lecks (Blöcke, die nicht de zugeordnet) sind auf der Konsole gemeldet, zusammen mit der Datei und Zeile, wo der Speicher war ursprünglich zugeordnet wurde.

Den Teil über das, was ich mag, ist, dass ich nicht aktiv "run with performance tool" oder auf andere Weise zeigen, dass ich bin auf der Suche nach Lecks. Lecks sind, haben mir berichtet, in den regelmäßigen Gang der Entwicklung, jedes mal, wenn ein Prozess beendet wird.

Nun, wir bewegen uns auf der GCC-Welt finde ich, dass die memory-leak-detection-tools, viele davon sind Recht anspruchsvoll, Sie verlangen, dass ich explizit darauf hinweisen, dass ich bin in Leck-Jagd-Modus. Meine IDE ist Xcode und ich sah in einige der Zuweisung/leak detection tools (wie Instrumente und MallocDebug) aber ich gebe zu, ich habe nicht verbrachte die Zeit in meinen Kopf zu kriegen, Sie voll und ganz noch. Ich immer abgeschreckt von der Tatsache, dass ich eigentlich angeben, dass ich bin auf der Suche nach einem Leck vor der Zeit, anstatt alarmiert es automatisch.

Ich bin mit Xcode 3.2 und ich höre, dass es jetzt raffinierte integration mit statischen Analyse-tool, aber wieder, ich habe nicht in diese sah. Ich bin auf der Suche einige Idee, was meine Optionen sind. Gibt es einen vergleichbaren Mechanismus integriert GCC und/oder Xcode? Gibt es eine einfache third-party Bibliothek oder Werkzeug führt, dass die grundlegende Funktionalität, die ich kennen und lieben? Oder sollte ich saugen Sie sich und lernen Sie die neue Art, Dinge zu tun?

InformationsquelleAutor der Frage Gene Goykhman | 2009-11-19

Schreibe einen Kommentar