2010-12-28 7 views
0

HALLO,generiert Protokoll nach jeweils 2 Sekunden

ich eine Bibliothek in C++ entwickelt habe, die Spur neue zu halten verwendet und Betreiber löscht und Protokolle für das gleiche zu erzeugen. Jetzt muss ich eine weitere Funktionalität hinzufügen, die Protokolle für neue und löscht nach 2 Sekunden generieren und alle 2 Sekunden wird es die Protokolldatei aktualisieren. so dass, wenn das Hauptprogramm Core-Dump bekommt, wir auch einige Protokolle haben können, um die Memomy-Zuordnung zu verfolgen. Jede Hilfe wird geschätzt.

Danke im Voraus.

+0

Setzen Sie einen globalen statischen Timer, um nach einer Verzögerung von 2 Sekunden zu suchen, innerhalb einer globalen statischen Funktion, und loggen Sie andernfalls nur nicht. – DumbCoder

Antwort

0

Schreiben Sie einfach in einen Puffer und speichern Sie den Zeitstempel des letzten Dumps auf der Festplatte, wenn Sie vor mehr als 2 Sekunden den Puffer erneut entladen und den Zeitstempel zurücksetzen. Aber wenn Sie wollen, dass dieses Protokoll auch bei einem Absturz debuggt, gehe ich davon aus, dass Sie wichtige Informationen in diesen 2 Sekunden verlieren können. Vielleicht könnten Sie jedes neue/löschen ohne die Verzögerung von 2 Sekunden im Debug-Modus schreiben.

0

Für ein Computerprogramm, 2 Sekunden ist eine schrecklich lange Zeit und eine Menge von Zuweisungen/Deallocations kann in dieser Zeit passieren, die nicht protokolliert werden, wenn das Hauptprogramm abstürzt.

Eine bessere Alternative wäre die Aufzeichnung von Informationen über jede Zuordnung und Aufhebung der Zuordnung zu einem persistenten Speicher (z. B. einer Datei). Dies kann dazu führen, dass eine große Menge an Daten protokolliert wird. Daher sollten Sie das Feature nur aktivieren/aktivieren, wenn Sie ein potenziell speicherbezogenes Problem beheben, aber es hat den Vorteil, dass Sie durch einen Core-Dump nicht so viele Informationen verlieren die meisten Puffer wert, wenn Sie gepufferte IO verwenden) und Sie können einige Offline-Analyse-Tools in den Protokollen verlieren lassen, um mögliche Probleme für Sie zu finden (oder einfach die Mehrheit der offensichtlich korrekten Zuordnungs/Freigabe-Paare herauszufiltern).

0

Es gibt Tools zum Überprüfen der Korrektheit des Speicherzugriffs, z. B. valgrind. Hast du sie schon angeschaut? Wenn nicht, sollten Sie - wenn Sie planen, diese Art von Protokollierung für jede einzelne Zuweisung durchzuführen, wird es Ihr Programm stark verlangsamen, genau wie die bereits geschriebenen Werkzeuge. Wenn Sie etwas mehr Präzision-zielgerichtet brauchen, dann ist vielleicht eine eigene Idee.

Verwandte Themen