Zum Inhalt springen

Linux-Praxisbuch/ Debugging

Aus Wikibooks

Bei Software, die noch in der Entwicklungsphase ist, was bei Linuxprogrammen durch Versionsnummern unter 1.0 gekennzeichnet wird, bleibt es meistens nicht aus, das sich – aus verschiedenen Gründen – Programmierfehler einschleichen. Da bei Linux die Programmierumgebung in den häufigsten Fällen mitinstalliert wird und die Programme als Quellcode vorliegen, ist es selbst für einen Laien oder Programmieranfänger möglich, den Entwicklern der Software bei der Verbesserung des Programms zu helfen. Dazu werden hier die wichtigsten Hilfsmittel vorgestellt.


strace

[Bearbeiten]

Strace ist ein Hilfsprogramm, welches die einzelnen Aufrufe, Eingaben und Ausgaben des zu testenden Programms darstellt. Daran kann man häufig schon sehen, wo das Problem liegt. Das zu testende Programm läuft dadurch ein wenig langsamer als sonst. Es ist möglich praktisch jedes Linuxprogramm, auch ohne den Quellcode, im Ablauf zu beobachten.

Zum Beispiel:

strace ls gibt eine recht lange Liste aus, die zeigt, in welcher Reihenfolge das Programm ls abgearbeitet wird.

GDB ist der Gnu-Debugger. Die zu testenden Programme müssen vorher mit einer speziellen Option compiliert werden, um dem GDB Informationen über den Quellcode zu liefern.

Backtrace erstellen

[Bearbeiten]

Der Ablauf beim Debuggen ist generell folgender:

gdb Programm -- run -- Dann provoziert man den Absturz des Programmes -- bt erzeugt den "Backtrace" -- quit verlässt GDB .

Der Backtrace wird dann mit einer möglichst genauen Beschreibung, wie man den Absturz verursacht hat an die Entwickler geschickt.

Coredump erstellen

[Bearbeiten]

Ein Coredump ist ein Speicherabbild des Computers während des Absturzes. Manchmal ist es nötig diesen für das Debugging zu benutzen. Um die Erstellung eines Coredumps zu veranlassen, gibt man auf der Konsole folgenden Befehl ein:

ulimit -c unlimited

Danach ruft man das Programm auf und erzeugt den Absturz. Nach dem Absturz befindet sich eine neue Datei mit dem Namen core.PID im gleichen Verzeichnis. Wobei PID die Prozessnummer des abgestürzten Programmes war.

Diese Coredatei lässt sich mit GDB weiter analysieren.

gdb Programm -c core.PID 

startet gdb. Danach gibt man wie gewohnt bt ein um einen Backtrace zu erzeugen. Mit quit verlässt man GDB wieder.

Valgrind

[Bearbeiten]

Valgrind ist ein Programm mit dessen Hilfe es unter Anderem möglich ist, Speicherlecks aufzuspüren. Das zu testende Programm wird mit valgrind --leak-check=summary Programmname aufgerufen.