13.7.2 Fehlersuche
13.7.2.1 Fehlersuche (Debugging) mit gdb
Vorbereitung:
# apt-get install gdb
Referenzen f�r gdb
:
Verwenden Sie gdb
, um ein mit der -g-Option
kompiliertes Programm zu debuggen. Viele Kommandos k�nnen abgek�rzt werden.
Vervollst�ndigungen arbeiten wie in der Shell mit der Tabulator-Taste.
$ gdb Programm
(gdb) b 1 # Haltepunkt in Zeile 1 setzen
(gdb) run arg1 arg2 arg3 # Programm starten
(gdb) next # n�chste Zeile
...
(gdb) step # einen Schritt vorw�rts
...
(gdb) p parm # parm ausgeben
...
(gdb) p parm=12 # Wert auf 12 setzen
Um aus Emacs heraus zu debuggen, wird auf Zusammenfassung der Editorkommandos (Emacs,
Vim), Abschnitt 11.3.4 verwiesen.
Da alle installierten Binarys standardm��ig in einem Debian-System gestript
sein sollten, sind die meisten Debug-Informationen entfernt. Um
gdb
sinnvoll zum Debuggen von Debian-Paketen einsetzen zu k�nnen,
m�ssen entsprechende Pakete unter Beachtung von Folgendem neu gebaut werden:
-
Erh�hen Sie die Paketversion
durch Editieren von debian/control
.
-
�berpr�fen Sie die Build-Skripte und stellen Sie sicher, dass CFLAGS=-g
-Wall zum Kompilieren der Binarys verwendet wird.
-
Exportieren Sie DEB_BUILD_OPTIONS=nostrip,noopt zum Bauen des
Debian-Pakets.
Vergleichen Sie Policy
10.1
f�r weitere Informationen.
13.7.2.2 �berpr�fen der Abh�ngigkeiten von Bibliotheken
Verwenden Sie ldd
, um die Abh�ngigkeiten eines Programms von
Bibliotheken zu bestimmen:
$ ldd /bin/ls
librt.so.1 => /lib/librt.so.1 (0x4001e000)
libc.so.6 => /lib/libc.so.6 (0x40030000)
libpthread.so.0 => /lib/libpthread.so.0 (0x40153000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
Damit ls
in einer chroot
-Umgebung funktioniert,
m�ssen die obigen Bibliotheken in der chroot
-Umgebung vorhanden
sein.
Die folgenden Kommandos sind auch n�tzlich:
13.7.2.3 Debuggen mit Tools zur Erkennung von Speicherlecks
Es gibt verschiedene Tools zur Erkennung von Speicherlecks in Debian.
-
njamd
-
valgrind
-
dmalloc
-
electric-fence
-
memprof
-
memwatch
(nicht paketiert, verf�gbar unter memwatch
.)
-
mpatrol
-
leaktracer
-
libgc6
-
Insure++ von Parasoft
. (nicht frei, kommerziell)
�berpr�fen Sie auch Debugging
Tools f�r dynamische Speicherzuordnung und -Management
.