Ich weiß nicht, von einer magischen Kugel, aber Sie können werfen Sie einen Blick auf Valgrind/Valgrind.h, es hat einige nützliche Makros, um Dinge Valgrind bewusst zu machen und ihr Verhalten zu ändern vior wenn unter Valgrind läuft.
Zum Beispiel
#ifndef HAVE_VALGRIND_VALGRIND_H
#define RUNNING_ON_VALGRIND 0
#else
#include <valgrind/valgrind.h>
#endif
if (RUNNING_ON_VALGRIND) {
printf("Hello, this is Valgrind instance %d\n", RUNNING_ON_VALGRIND);
/* set debug output annoyingly high */
/* exit after one request */
}
Sie können auch, dass die ganze Durcheinander mit NDEBUG
umhüllen, um es aus der Produktion aufbaut.
Das sollte Sie davor bewahren, jedes Mal, wenn Sie debuggen, mit dem Server herumhantieren zu müssen, es wird 'nur' machen, wenn Valgrind erkannt wird. RUNNING_ON_VALGRIND wird auf die Valgrind-Instanz erweitert oder bleibt 0, falls nicht zutreffend.
Für den Rest (und ich stelle mir vor, Sie bekommen eine Menge Lärm, höchstwahrscheinlich beginnend mit invalid read of size xx
), können Sie systematisch unterdrücken anwenden. Wenn Sie einen Teil der Ausgabe veröffentlichen, ist es möglicherweise einfacher, Vorschläge für die Unterdrückungen zu machen, die Sie in einer Datei speichern können. Die Mailingliste des Valgrind-Benutzers ist extrem hilfreich und sehr tolerant. Sie können dort auch Ihren nervigsten und irrelevantesten Ton posten, Sie erhalten Antworten mit der Frage, wie Sie ihn schnell unterdrücken können.
Wenn alles, was Sie wollen, eine Zusammenfassung von Lecks und den Einstiegspunkten ist, die zu ihnen geführt haben, sollte es nicht zu schwierig sein, fast alles andere zu schließen.
Ich habe Valgrind-Ausgabe hinzugefügt. Es gibt eine Menge Zeug, von denen einige aus meinem Modul stammen. –