Minimale core-dump (stack-trace + current frame only)
Kann ich konfigurieren was geht in einem core-dump unter Linux? Ich möchte, um etwas zu bekommen, wie die Windows-mini-dumps (nur minimale Informationen über die stack-Frames, wenn die app abgestürzt ist). Ich weiß, Sie können eine max-Größe für die core-Dateien mit ulimit
, aber das tut mir nicht erlauben, zu kontrollieren, was geht im Kern (d.h. es gibt keine Garantie, dass, wenn ich die Grenze zu 64kb wird es dump-die letzten 16 Seiten des Stapels, zum Beispiel).
Außerdem würde ich mag, um es in einem programmatischen Weg (aus dem code), wenn möglich.
Ich habe mir die /proc/PID/coredump_filter
Datei erwähnt man core
, aber es scheint zu grob reicht für meine Zwecke.
Um ein wenig Kontext: ich brauche tiny core-Dateien, das hat mehrere Gründe: ich brauche, um Sie zu sammeln über das Netz, für eine Vielzahl (Tausende) von Kunden; darüber hinaus sind diese embedded Geräte mit wenig SD-Karten, GPRS-modems für die Netzwerk-Verbindung. Also alles oberhalb ~200 K in Frage.
EDIT: ich arbeite auf einem embedded-Gerät läuft mit linux Kernel 2.6.24. Der Prozessor ist der PowerPC. Leider powerpc-linux ist nicht unterstützt breakpad im moment, so google breakpad ist nicht eine option
- Ich habe keine Ahnung, und die Antwort liegt wohl im kernel-source-code (weil es keine Spezifikation Zusammenhang). Warum fragst du? Mit aktuellen Festplatten, ein 64 MB core-dump-Grenze ist noch klein, und würde sehr wahrscheinlich genügend Informationen enthalten. Warum brauchen Sie, um den Grenzwert zu so einem kleinen Wert wie 64 Kb. ?
- Google Breakpad schreibt minidumps auf allen Plattformen, einschließlich Linux.
- Ich Frage, weil ich bin mit einem embedded-Gerät, die eine kleine flash-Festplatte und vor allem eine langsame gprs-Verbindung für das herunterladen von Daten.. ich möchte es so klein wie möglich!
- Ich werde bei Breakpad.. nie gehört vorher! Ich hoffe, dass es funktioniert für meine Architektur (was sollte ich erwähnt haben, ich passe nicht in Frage)
- Leider ist google breakpad unterstützt keine powerpc-linux!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich "löste" das Problem auf zwei Arten:
Ich zog die debug-info und steckte es in einer separaten Datei, die ich speichern kann, irgendwo sicher sind, mit
strip
; von dort werde ich verwendenadd22line
mit der info aus den gespeicherten backtrace (Adressen) zu verstehen, wo das problem war. Auf diese Weise habe ich zum speichern von nur ein paar bytes.Ich noch verlieren Informationen das könnte kostbar sein (Globale und lokale variable(N), Inhalte, params..). Ich könnte ganz einfach herausfinden, welche Seite(N) dump, aber leider gibt es keine Möglichkeit zu geben ein "dump-diese-Seiten" für den normalen core-dumps (es sei denn, Sie sind bereit zu gehen, und mit dem patch
maydump()
Funktion im kernel).Für jetzt, ich bin ziemlich glücklich mit es 2 Lösungen (es ist besser als nichts..) Meine nächsten Schritte werden sein:
WriteCoreDump
Funktion dump bestimmte Seiten/Adressen.. es hat keine Unterstützung für powerpc 🙁