Debugging — Änderungen 2325 → 2362

Zeile 10: Zeile 10:
 
Ähnlich wie bei der print(f)/cout - Methode kann man auch Daten/ASCII-Strings über die Seriell Schnittstelle geben verschicken. Das hat den Vorteil, dass man mehr als nur 25 oder 50 Zeilen zeitgleich betrachten kann.
 
Ähnlich wie bei der print(f)/cout - Methode kann man auch Daten/ASCII-Strings über die Seriell Schnittstelle geben verschicken. Das hat den Vorteil, dass man mehr als nur 25 oder 50 Zeilen zeitgleich betrachten kann.
 
Bei bochs werden die an die serielle Schnittstelle gegebenen Daten in eine Text-datei gegeben, diese kann später ggf auch von weiteren tools (z.B. grep) weiterverarbeitet werden.
 
Bei bochs werden die an die serielle Schnittstelle gegebenen Daten in eine Text-datei gegeben, diese kann später ggf auch von weiteren tools (z.B. grep) weiterverarbeitet werden.
−
Zudem ist ein rs232-Treiber sowohl im RM als auch im PM relativ einfach zu schreiben. Intrupts müssen hierfür nicht verarbeitet werden können.
+
Zudem ist ein [[rs232]]-Treiber sowohl im RM als auch im PM relativ einfach zu schreiben. Intrupts müssen hierfür nicht verarbeitet werden können.
  
 
= bochs / qemu =
 
= bochs / qemu =
 
Falls man mit Fehlern wie Pagefaults, GPFs oder anderen Exceptions kämpft, ist es wichtig, dass man die Registerinhalte vor der Exception kennt. Um an diese zu kommen sind Debug-Funktionen in den Emulatoren ein wertvolles Werkzeug. Bei bochs kann dazu der integrierte Debugger benutzt werden.  
 
Falls man mit Fehlern wie Pagefaults, GPFs oder anderen Exceptions kämpft, ist es wichtig, dass man die Registerinhalte vor der Exception kennt. Um an diese zu kommen sind Debug-Funktionen in den Emulatoren ein wertvolles Werkzeug. Bei bochs kann dazu der integrierte Debugger benutzt werden.  
−
qemu stellt keinen eigenen Debugger zur Verfügung, ermöglicht aber eine Verbindung mit. Oft braucht man aber in Verbindung mit qemu gar keine komplexen Debug-Funktionen, wenn man nur an die Adresse rankommen muss, wo eine Exception auftritt. Denn qemu bietet den -d Parameter um verschiedene Dinge zu loggen. Meist benötigt man ein -d int um alle Interrupts aufzuzeichnen. Dabei muss man aber ein wenig aufpassen, da qemu keinen Reset ausführt bei einem Triplefault, das heisst er schreibt dann lauter GPFs in die LOG und diese wird dabei SEHR gross. Man sollte den qemu also möglichst schnell schliessen, sobald ein Triplefault aufgetreten ist.
+
qemu stellt keinen eigenen Debugger zur Verfügung, ermöglicht aber eine Verbindung mit einem externen(siehe [[GNU Project Debugger und QEMU]]). Oft braucht man aber in Verbindung mit qemu gar keine komplexen Debug-Funktionen, wenn man nur an die Adresse rankommen muss, wo eine Exception auftritt. Denn qemu bietet den -d Parameter um verschiedene Dinge zu loggen. Meist benötigt man ein -d int um alle Interrupts aufzuzeichnen. Dabei muss man aber ein wenig aufpassen, da qemu keinen Reset ausführt bei einem Triplefault, das heisst er schreibt dann lauter GPFs in die LOG und diese wird dabei SEHR gross. Man sollte den qemu also möglichst schnell schliessen, sobald ein Triplefault aufgetreten ist.
  
 
= Exception-Meldungen =
 
= Exception-Meldungen =