Frage

Ich verwende pstack Core-Dump-Dateien in Solaris zu analysieren

Wie kann ich sonst noch analysieren, um das Core-Dump von solaris?

Was kann Befehle verwendet werden, dies zu tun?

Was andere Informationen werden von der Müllkippe zur Verfügung stehen?

War es hilfreich?

Lösung

Sie können mit Solaris modularen Debugger, mdb oder dbx. MDB kommt mit SUNWmdb (oder SUNWmdb x für die 64-Bit-Version) Paket.

Eine Systemdatei ist das Bild des laufenden Prozesses zu dem Zeitpunkt abgestürzt.

Je nachdem, ob Sie Ihre Anwendung mit Debug-Flags oder nicht kompiliert wurde, werden Sie in der Lage sein, ein Bild des Stapels zu sehen, daher zu wissen, welche Funktion den Kern verursacht werden, den Wert der Parameter zu erhalten, die auf diese Funktion übergeben wurden der Wert der Variablen, die zugewiesenen Speicherbereiche ...

Auf den letzten solaris-Versionen können Sie konfigurieren, welche die Core-Datei mit dem Befehl coreadm enthalten wird; zum Beispiel können Sie die abgebildeten Speichersegmente haben der Prozess zu angebracht wurde.

Siehe MDB Dokumentation und dbx Dokumentation . Die GDB schnelle Referenz Karte ist auch hilfreich, wenn Sie die Grundlagen kennen von GDB.

Andere Tipps

Ich denke, eine Antwort auf diese Frage mit einem einfachen Rezepte beginnen sollte:

Für dbx, das Rezept ist:

% dbx a.out core
(dbx) where
(dbx) threads
(dbx) thread t@3
(dbx) where

Wenn das Core-Dump aus einem Programm ist, dass Sie geschrieben oder gebaut, verwenden Sie dann je nachdem, was Debugger Sie normalerweise die laufende Anwendung zu debuggen verwenden. Sie sollten alle in der Lage sein Core-Dateien zu laden. Wenn Sie nicht pingelig Debugger sind, und Sie verwenden Solaris, würde ich dbx empfehlen. Es wird helfen, die neueste Version von FCS Sun Studio mit Patches oder auch die neuesten Express-Version von Sun Studio zu bekommen. Es ist auch sehr hilfreich, wenn Sie die Core-Datei in den Debugger auf demselben System geladen werden können, wo die Core-Datei erstellt wurde. Wenn der Code in den Bibliotheken unterschiedlich ist, wenn die Core-Datei erstellt wurde, dann Stack-Trace wird nicht nützlich sein, wenn es durch Bibliotheken geht. Debuggers auch OS Hilfsbibliotheken für das Verständnis der libthread und Runtime-Linker Datenstrukturen verwenden, so, wenn Sie die Core-Datei auf einem anderen Rechner laden müssen, werden Sie die Hilfsbibliotheken auf dem Betriebssystem installiert, um sicherzustellen, wollen die Systemdatenstrukturen entsprechen in das Betriebssystem. Sie können alles herausfinden, die Sie nie zuvor über diese Systembibliotheken in einem weißen Papier, das geschrieben wurde vor ein paar Jahren wissen wollte.

http://developers.sun.com/solaris/articles/DebugLibraries /DebugLibraries_content.html

Ich würde vorschlagen, GDB versucht zuerst, da es einfacher ist, grundlegende Aufgaben als die nativen Solaris Debugger meiner Meinung nach lernen.

GDB verwendet werden.

Es kann den Anruf geben, die vor dem Dump versucht wurde.

http://sourceware.org/gdb/

http://en.wikipedia.org/wiki/GDB

Mit der Quelle groß ist und wenn Sie die Fehler noch besser reproduzieren können, wie Sie dies es zu debuggen, verwenden können.

Arbeitete groß für mich in der Vergangenheit.

Die pflags Befehl ist auch nützlich zur Bestimmung des Zustands jeder Thread war, als es Kern abgeladen. Auf diese Weise lokalisieren Sie können oft das Problem.

Bringen Sie

auf das Prozessabbild mit dem dbx-Debugger:

dbx [executable_file_name] [coredump_file_name]

Es ist wichtig, dass es keine Änderungen an den ausführbaren waren, da der Kern abgeladen wurde (das heißt es nicht wieder aufgebaut wurde).

Sie können die Stack-Trace sehen, um zu sehen, wo das Programm mit dbx Befehl abgestürzt "where".

Sie können nach oben und unten dem Stapel mit dem Befehl bewegen „up“ und „down“ oder auf den genauen Stapelrahmen springen mit „frame [Zahl]“, wobei die Zahlen in der Ausgabe von „where“ gesehen.

Sie können den Wert der Variablen oder Ausdrücke mit "print [ausdr]" Befehl drucken.

Haben Sie Spaß.

Ich fand dbx auf meiner solaris x86-Box auf

/opt/SUNWspro/bin/dbx

Cheers!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top