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.7 KiB

Debugging mit RiscEmu

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

Verfügbare Objekte und Funktionen

In dem interaktiven Debugger sind folgende Variablen definiert:

  • cpu Der CPU der den ebreak gelesen hat
  • mem und mmu ermöglichen Zugriff auf den Arbeisspeicher
  • regs representiert die Register des CPUs

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 CPU aus.
  • step() führt den nächte 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 Arbeitsspeicher angezeigt werden. Die Signator der Funktion ist etwas komplexer:

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

Es ist möglich einen festgelegten bereich an zu zeigen, in dem 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 Inteegers an zu schauen).

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