====== Coredump ====== Wenn eine Anwendung einen Segfault (Segmentation fault: Speicherzugriffsfehler) verursacht, dann kann ein Coredump für hilfreiche Informationen zwecks Fehlersuche bringen. Ein Coredump wurde bei mir nur mit einem nicht-root-User geschrieben. Der Linuxkernel ist grundsätzlich in der Lage einen Coredump zu schreiben. Die Funktion ist allerdings von grund an ausgeschaltet. So schaltet man sie in Ubuntu ein: vi /etc/default/apport Hier den Parameter von //enable=0// auf //1// setzen. Danach noch den Dienst starten: service apport start Wenn nun das Programm in der Console, aus einem Verzeichnis aus, in dem man Schreibrechte hat, gestartet wird, dann produziert es einen Segfault, aber die Meldung in der Console lautet dann nicht //Segmentation fault// sondern //Segmentation fault (Speicherabzug geschrieben)//. Nach dem Abbruch des Programms findet man nun in dem Verzeichnis eine //core// Datei. Diese wiederum kann mit dem Tool //gdb// geöffnet und gelesen werden. Einfach folgendermaßen öffnen: gdb Nützliche Befehle in //gdb// sind: *bt - Ausgabe eines stacktrace *up/down - Navigation innerhalb des strackframe *thread [Nummer] - Anzeige des aktuellen Thread / Wechsel zu einem anderem Thread mit der angegebenen Nummer. *c - Fortsetzen der gestarteten Anwendung. *print Ausdruck - den Wert des spezifizierten Ausdruckes ausgeben. Kann verwendet werden, den Wert bestimmter Variablen zum Beispiel zu kontrollieren, spezifizieren einfach den variablen Namen als Ausdruck Beenden kann man //gdb// mit quit