2013-02-07 11 views
8

Ich habe einen Core-Dump nach einem Segmentierungsfehler generiert. Gibt es einen Weg in gdb (oder irgendwie anders), um die Systemzeit zu sehen, als dies geschah?Wie kann ich die Systemzeit von einem Core Dump bekommen?

Ich kann die Erstellungszeit der Core-Dump-Datei nicht verwenden, da sie ohne diese Metainformationen an mich gesendet wurde.

+9

Ich denke, das ist ziemlich schwierig, es sei denn, Sie zufällig irgendwo eine Variable kennen, die die aktuelle Zeit enthält. Beim nächsten Mal bitten Sie den Kunden, die Datei mit 'tar zcf core.tar.gz core' zu ​​packen - dann benötigt es weniger Speicherplatz und der Zeitstempel bleibt im tar-Archiv erhalten. –

+1

Verwandte (aber für Solaris): http://stackoverflow.com/questions/10739334/get-the-creation-time-from-core-dump –

+0

Angesichts der Tatsache, dass die meisten Dateisysteme keine Zeit für die Erstellung speichern, ist es nicht überraschend, dass Informationen sind nicht verfügbar. –

Antwort

3

Die Systemzeit wird (leider) nicht standardmäßig in einer Core-Datei gespeichert. Sie haben ein paar Optionen. Eine davon ist, den Namen der Kerndatei so zu ändern, dass sie die Systemzeit enthält.

Sie können mehr über diese here lesen.

Grundsätzlich möchten Sie ein "% t" in den Namen der Core-Datei stecken.

Wenn Sie einen benutzerdefinierten Kernel ausführen, haben Sie mehr Optionen.

Zum Beispiel könnten Sie die Elf_prstatus Struktur ändern, um andere Dinge, die Sie wollen, einzuschließen. Dies ist eine Option, die nicht ohne Schmerzen ist, da Werkzeuge von der Stange nicht immer glücklich sind. Sie könnten der Kerndatei eine benutzerdefinierte Notiz hinzufügen und anwendungsspezifische Informationen einbeziehen, die Sie dann mithilfe von readelf ablegen und prüfen können.

0

Sie überprüfen, wenn Core-Dump erstellt wird, indem Sie "ls-lrt" des Verzeichnisses, unter dem der Kern generiert wurde.

+0

Und wenn die Kerndatei von einem Ort zum anderen kopiert wurde? Der Fragesteller sagt: "Ich kann die Erstellungszeit der Core-Dump-Datei nicht verwenden, weil sie mir ohne diese Meta-Informationen gesendet wurde". – amrith

+0

Ja mein Schlechter .. Der einzige Weg ist, den Kunden zu bitten, die 'ls -lrt' auf dem Verzeichnis zu machen und den Coredump mitzuschicken. Das haben wir in meinem alten Projekt gemacht. –