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:start [2016-02-17 13:28] abajricsoftware:gdb:start [2019-03-11 11:51] graf
Zeile 6: Zeile 6:
   * [[https://sourceware.org/gdb/download/onlinedocs/stabs/ | STABS]]   * [[https://sourceware.org/gdb/download/onlinedocs/stabs/ | STABS]]
 </box> </box>
 +===== Hauptfunktionen des GDB =====
 Der GNU Debugger erlaubt es, zu sehen, was in einem Programm während der Ausführung passiert oder was ein Programm zuletzt gemacht vor einem Absturz. Der GNU Debugger erlaubt es, zu sehen, was in einem Programm während der Ausführung passiert oder was ein Programm zuletzt gemacht vor einem Absturz.
  
Zeile 14: Zeile 14:
   * Untersuchen was geschehen ist, wenn das Programm angehalten wurde   * Untersuchen was geschehen ist, wenn das Programm angehalten wurde
   * Inhalt des Speichers ändern   * Inhalt des Speichers ändern
 +
  
 ===== Handhabung ===== ===== Handhabung =====
-GDB ist in vielen [[http://de.wikipedia.org/wiki/Integrierte_Entwicklungsumgebung|IDE]]s (wie z.B. Eclipse) integriert und wird über das GUI bedient. Alternativ kann GDB auch über die Kommandozeile gestartet werden: +GDB ist in vielen [[http://de.wikipedia.org/wiki/Integrierte_Entwicklungsumgebung|IDE]]s (wie z.B. Eclipse) integriert und wird über das GUI bedient. Alternativ kann GDB auch über die Kommandozeile gestartet werden. 
- +Das ist besonders nütztlich, um einen Segfault zu überprüfen.
-''gdb executable_name'' +
- +
-Programm starten: +
- +
-''run arg1 arg2 arg3'' +
- +
-Programm beenden: +
- +
-''kill''+
  
-GDB beenden:+Mehr dazu unter im [[software:gdb:crashcoursegdb|Crashcourse gdb]]
  
-''quit'' 
  
-Alle GDB Befehle können mit der GDB-Hilfefunktion aufgelistet werden:+===== Coredumps ===== 
 +Mit Coredumps können Segfaults analysiert werden, ohne dass die Applikation im //gdb// gestartet wird. 
 +Ein //Backtrace// kann im Nachhinen untersucht werden. 
 +Es ist ebenfalls möglich, lokale Variablen nach dem Absturz zu untersuchen.
  
-''help''+Mehr dazu unter unter [[software:gdb:coredump|software:gdb:coredump]].
  
  
Zeile 283: Zeile 277:
   * [[https://sourceware.org/gdb/onlinedocs/stabs/Stab-Symbol-Types.html#Stab-Symbol-Types| STABS Symboltypen]]   * [[https://sourceware.org/gdb/onlinedocs/stabs/Stab-Symbol-Types.html#Stab-Symbol-Types| STABS Symboltypen]]
  
-Definition von Typen ([[https://www.sourceware.org/gdb/onlinedocs/stabs.html#String-Field|String-Field]])Type 1 = void und Type 2 = int.+=== Definition von Typen === 
 +([[https://www.sourceware.org/gdb/onlinedocs/stabs.html#String-Field|String-Field]]) 
 +Type 1 = void und Type 2 = int.
  
 <code> <code>
Zeile 290: Zeile 286:
 </code> </code>
  
-Definition von globalen Variablen in der .data Section [[https://www.sourceware.org/gdb/onlinedocs/stabs.html#Global-Variables|Global Variables]]Variable targetCommand an Adresse 0x100000 vom Type 2 = int.+=== Definition von globalen Variablen === 
 + 
 +([[https://www.sourceware.org/gdb/onlinedocs/stabs.html#Global-Variables|Global Variables]]
 +Variable targetCommand an Adresse 0x100000 vom Type 2 = int.
  
 <code> <code>
Zeile 301: Zeile 300:
 </code> </code>
  
-Definition vom Java-Sourcecode. Der erste STABS mit N_SO ist der Build-Ordner. Der Zweite ist der relative Pfad zum Source-File. ([[https://www.sourceware.org/gdb/onlinedocs/stabs.html#Source-Files|Source Files]])+=== Definition vom Java-Sourcecode === 
 + 
 +([[https://www.sourceware.org/gdb/onlinedocs/stabs.html#Source-Files|Source Files]]) 
 +Der erste STABS mit N_SO ist der Build-Ordner. Der Zweite ist der relative Pfad zum Source-File.
  
 <code> <code>
Zeile 311: Zeile 313:
 </code> </code>
  
-Definition von Zeilennummern ([[https://www.sourceware.org/gdb/onlinedocs/stabs.html#Line-Numbers|Line Numbers]]).+=== Definition von Zeilennummern === 
 + 
 +([[https://www.sourceware.org/gdb/onlinedocs/stabs.html#Line-Numbers|Line Numbers]])
  
 <code> <code>
Zeile 332: Zeile 336:
  
 === Definition von Registervariablen === === Definition von Registervariablen ===
-([[https://www.sourceware.org/gdb/onlinedocs/stabs.html#Register-Variables|Register Variables]])Registervariablen müssen immer im gleichen Register bleiben. ("r2" => Registervariable vom Type 2 und nicht Register R2, Registernummer ist der letzte Parameter!)+([[https://www.sourceware.org/gdb/onlinedocs/stabs.html#Register-Variables|Register Variables]]) 
 +Registervariablen müssen immer im gleichen Register bleiben. ("r2" => Registervariable vom Type 2 und nicht Register R2, Registernummer ist der letzte Parameter!)
  
 <code> <code>
 .stabs "x:r2;-2147483648;2147483647;",N_RSYM,0,4,2 .stabs "x:r2;-2147483648;2147483647;",N_RSYM,0,4,2
 +</code>
 +
 +
 +=== Definition von Funktionen ===
 +
 +([[https://www.sourceware.org/gdb/onlinedocs/stabs.html#Procedures|Procedures]]) N_LBRAC und N_RBRAC ist die Position der öffnenden/schliessenden geschweiften Klammern der Funktion.
 +
 +<code>
 +.stabs "ch::ntb::inf::deep::runtime::mpc555::Reset::reset:F1",N_FUN,0,0,reset
 +.stabn N_SLINE, 0, 37, reset
 +.stabn N_LBRAC, 0, 0, LM1
 +.stabn N_RBRAC, 0, 0, LM3
 </code> </code>