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