Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| software:gdb:crashcoursegdb [2019-03-05 10:24] – mgehrig2 | software:gdb:crashcoursegdb [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== Crashcourse gdb ====== | ||
| - | ===== Tutorial ===== | ||
| - | Ein guter Einstieg bietet auch dieses 20 Minuten [[https:// | ||
| - | |||
| - | {{: | ||
| - | |||
| - | |||
| - | ===== Vorbereitung -- Build des Projekts ===== | ||
| - | Damit eine Applikation mit dem //gdb// debugged werden kann, muss es mit **Debug Symbolen** kompiliert werden. | ||
| - | Dazu kann für nicht Realtime Applikationen der "Build type" auf '// | ||
| - | |||
| - | '' | ||
| - | |||
| - | Dadurch werden Debugsymbole hinzugefügt und die Applikation wird **nicht** optimiert. | ||
| - | Nicht optimierte Applikationen vereinfachen das Debugging, da das nicht optimierte Binary grössten teils dem Sourcecode entspricht. | ||
| - | Mit Optimierung können einzelne Variablen wegoptimiert werden. | ||
| - | |||
| - | **Realtime Applikationen** dürfen aber normalerweise nicht optimiert werden, da die Realtime Performance von der Optimierung abhängig ist. | ||
| - | Um die Applikation mit Debug Informationen aber **ohne** Optimierung zu bauen kann folgender Build Type verwendet werden: | ||
| - | |||
| - | '' | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | ===== gdb öffnen ===== | ||
| - | //gdb // | ||
| - | '' | ||
| - | |||
| - | oder ohne Argumente: | ||
| - | '' | ||
| - | |||
| - | Um die Applikation mit Root Rechten zu starten, muss der //gdb// ebenfalls mit Root Rechten gestartet werden ('' | ||
| - | |||
| - | |||
| - | ===== Weitere nützliche Befehle ===== | ||
| - | |||
| - | ^**Befehl** | ||
| - | | run | Startet die Applikation im //gdb// | | ||
| - | | kill | Bricht die Applikation ab | | ||
| - | | quit | beendet die Applikation | | ||
| - | | help | | | ||
| - | | list | Zeigt den Sourcecode an | | ||
| - | | b <18> | Breakpoint @ Zeile 18 | | ||
| - | | b if x==1 | Breakpoint mit Bedingung | | ||
| - | | print x | Zeigt den Inhalt der Variable | | ||
| - | | info locals | Alle Informationen über lokale Variablen | | ||
| - | | set var < | ||
| - | | backtrace | backtrace z.B. bei Segfault | | ||
| - | | attach <PID> | den //gdb// an eine laufende Applikation anhängen | | ||
| - | |||
| - | |||
| - | ===== SIGINT ohne ' | ||
| - | '' | ||
| - | Sobald das geschieht, pausiert der //gdb// | ||
| - | Dies kann aber verhindert werden. | ||
| - | |||
| - | ^**Befehl** | ||
| - | | info signals | Zeigt das aktuelle Verhalten bei diversen Signalen an | | ||
| - | | handle 2 nostop | //gdb// pausiert nicht mehr bei einem Interrupt Signal | | ||