Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
software:gdb:crashcoursegdb [2018-04-13 16:11] mgehrig2software:gdb:crashcoursegdb [2019-03-12 09:30] mgehrig2
Zeile 3: Zeile 3:
 Ein guter Einstieg bietet auch dieses 20 Minuten [[https://www.youtube.com/watch?v=xQ0ONbt-qPs&t=2s|Youtube Video]] Ein guter Einstieg bietet auch dieses 20 Minuten [[https://www.youtube.com/watch?v=xQ0ONbt-qPs&t=2s|Youtube Video]]
  
 +{{:software:gdb:gdb_cheat_sheet.pdf|gdb cheat sheet}}
  
-===== Vorbereitung =====+ 
 +===== Vorbereitung -- Build des Projekts =====
 Damit eine Applikation mit dem //gdb// debugged werden kann, muss es mit **Debug Symbolen** kompiliert werden. 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 '//Debug//' gesetzt werden:
 +
 +''CMAKE_BUILD_TYPE    Debug''
 +
 +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** müssen aber normalerweise optimiert werden, da die Realtime Performance von der Optimierung abhängig ist.
 +Um die Applikation mit Debug Informationen **und** Optimierung zu bauen kann folgender Build Type verwendet werden:
 +
 +''CMAKE_BUILD_TYPE    RelWithDebInfo''
  
-CMAKE:\\ 
-''CMAKE_BUILD_TYPE    Release'' 
  
-gcc / g++\\ 
-''gcc -g hello.c''\\ 
-''g++ -g hello.c'' 
  
  
Zeile 35: Zeile 44:
 | b <18> | Breakpoint @ Zeile 18 | | b <18> | Breakpoint @ Zeile 18 |
 | b if x==1 | Breakpoint mit Bedingung | | b if x==1 | Breakpoint mit Bedingung |
 +| print x | Zeigt den Inhalt der Variable |
 | info locals | Alle Informationen über lokale Variablen | | info locals | Alle Informationen über lokale Variablen |
 | set var <variablenname> = <value> | Variable setzen | | set var <variablenname> = <value> | Variable setzen |
Zeile 44: Zeile 54:
 ''Ctrl+c'' sendet ''SIGINT'' an die Applikation. ''Ctrl+c'' sendet ''SIGINT'' an die Applikation.
 Sobald das geschieht, pausiert der //gdb// Sobald das geschieht, pausiert der //gdb//
-Dies kann aber verhinder werden.+Dies kann aber verhindert werden.
  
 ^**Befehl**        ^**Bedeutung**    ^ ^**Befehl**        ^**Bedeutung**    ^