Debugging — Änderungen 8262 → 8679

Zeile 19: Zeile 19:
 
Bei bochs kann dazu der [[Bochs Debugger|integrierte Debugger]] benutzt werden.  
 
Bei bochs kann dazu der [[Bochs Debugger|integrierte Debugger]] benutzt werden.  
  
−
QEMU stellt keinen eigenen Debugger zur Verfügung, ermöglicht aber eine Verbindung mit einem externen, wie z. B. dem GNU Debugger. Oft braucht man aber in Verbindung mit QEMU gar keine komplexen Debug-Funktionen, wenn man nur an die Adresse kommen muss, an der eine Exception auftritt, es den „-d“-Schalter anbietet, um verschiedene Dinge zu loggen. Meist benötigt man ein „-d int“, um alle Interrupts aufzuzeichnen.
+
QEMU stellt keinen eigenen Debugger zur Verfügung, ermöglicht aber eine Verbindung mit einem externen, wie z. B. dem GNU Debugger. Dies ist mit der Option „-s“ möglich, dazu sollte man „-S“ verwenden, da das emulierte OS sonst sofort startet. Verwendet wird TCP-Port 1234. Um den GDB anzuhängen, startet man GDB mit dem Kernel-Binary, also z. B. „''gdb bin/kernel.bin''“. Darauf gibt man auf der GDB-Kommandozeile „''target remote :1234''“ ein, um GDB mit QEMU zu verbinden. Ein „''cont''“ führt die Ausführung fort. Breakpoints können mit „''break datei:zeile''“ gesetzt werden, können aber auch auf Funktionen („''break _foo''“) gesetzt werden.
 +
 
 +
Oft braucht man aber in Verbindung mit QEMU gar keine komplexen Debug-Funktionen, wenn man nur an die Adresse kommen muss, an der eine Exception auftritt, es den „-d“-Schalter anbietet, um verschiedene Dinge zu loggen. Meist benötigt man ein „-d int“, um alle Interrupts aufzuzeichnen.
  
 
== Exception-Meldungen ==
 
== Exception-Meldungen ==