You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1.8 KiB

Debugging mit RiscEmu

Der Debugger des Emulators kann mit dem ebreak Breakpoint-Befehl gestartet werden.

Verfügbare Objekte und Funktionen

In dem interaktiven Debugger sind folgende Variablen definiert:

  • cpu Die CPU, die den ebreak gelesen hat
  • mem und mmu ermöglichen Zugriff auf den Arbeisspeicher
  • regs repräsentiert die Register der CPU

Des weiteren sind ein paar Hilfsfunktionen verfügbar:

  • run_ins('name', 'arg1', 'arg2', 'arg3') führt den Befehl name arg1, arg2, arg3 an der aktuellen Stelle im Programm aus.
  • step() führt den nächsten Befehl aus
  • cont() beendet den Debugger
  • dump(address) gibt den Inhalt des Arbeitsspeichers an der Adresse address aus. Das Verhalten der Funktion ist durch einige Parameter anpassbar, die später weiter erklärt werden.

Die dump() Funktion

Mit hilfe dieser Funktion kann der Inhalt des Arbeitsspeichers angezeigt werden. Die Signatur der Funktion ist etwas komplexer:

dump(start, [end], [fmt], [bytes_per_row], [rows], [group], [highlight])

Es ist möglich einen festgelegten Bereich anzuzeigen, indem start und end angegeben werden. Es ist auch möglich nur start zu verwenden, dann werden rows (standardmäßig 10) Zeilen um die Adresse start herum ausgegeben, und die Werte an der Adresse hervorgehoben. Eine andere Stelle zum Hervorheben kann mit highlight bestimmt werden.

Mit bytes_per_row kann angegeben werden, wie viele Bytes pro Zeile ausgegeben werden, und group gibt an, wie viele Bytes zusammen zu einem Wert gruppiert werden (z.B. praktisch um 32bit Integers anzuschauen).

Das Ausgabeformat kann mit dem fmt Argument angegeben werden, standardmäßig ist das hex. Andere Möglichkeiten sind int, uint für positive Ganzzahlen und char für ASCII-Text.