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-05-16 14:04] mgehrig2software:gdb:crashcoursegdb [2019-03-12 09:30] mgehrig2
Zeile 6: Zeile 6:
  
  
-===== 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 47: 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**    ^