WinUAE debugger

From Amiga Coding
Jump to: navigation, search
WinUAE Debugger in action

WinUAE (the Amiga emulator for Windows) can be used in three ways for debugging:

  1. using the built-in debugger (shift+f12, type h<return> to see commands)
  2. using emulated freezer cartridges
  3. by creating a state file
    (and using other software to rip/disassemble/edit from the memory dump)


This article is about the build-in debugger, which can be activated by pressing Shift-F12.


Commands

Command Description
g [<address>] Start execution at the current address or <address>
c Dump state of the CIA, disk drives and custom registers
r Dump state of the CPU
r <reg> <value> Modify CPU registers (Dx,Ax,USP,ISP,VBR,...)
m <address> [<lines>] Memory dump starting at <address>
m r<register> Memory dump starting at <register>
d <address> [<lines>] Disassembly starting at <address>
t [instructions] Step one or more instructions
z Step through one instruction - useful for JSR, DBRA etc
f Step forward until PC in RAM ("boot block finder")
f <address> Add/remove breakpoint
fa <address> [<start>] [<end>] Find effective address <address>
fi Step forward until PC points to RTS/RTD or RTE
fi <opcode> Step forward until PC points to <opcode>
fp "<name>"/<addr> Step forward until process <name> or <addr> is active
fl List breakpoints
fd Remove all breakpoints
fs <val> <mask> Break when (SR & mask) = val
f <addr1> <addr2> Step forward until <addr1> <= PC <= <addr2>
e Dump contents of all custom registers, ea = AGA colors
i [<addr>] Dump contents of interrupt and trap vectors
addr> [<lines>]View memory as Copper instructions
od Enable/disable Copper vpos/hpos tracing
ot Copper single step trace
ob <addr> Copper breakpoint
O Display bitplane offsets
O <plane> <offset> Offset a bitplane
H[H] <cnt> Show PC history (HH=full CPU info) <cnt> instructions
C <value> Search for values like energy or lifes in games
Cl List currently found trainer addresses
D[idxzs <[max diff]>] Deep trainer. i=new value must be larger, d=smaller,
x = must be same, z = must be different, s = restart.
W <address> <value> Write into Amiga memory
w <num> <address> <length> <R/W/I/F> [<value>] (read/write/opcode/freeze)
Add/remove memory watchpoints
wd [<0-1>] Enable illegal access logger. 1 = enable break.
S <file> <addr> <n> Save a block of Amiga memory
s "<string>"/<values> [<addr>] [<length>] Search for string/bytes
T Show exec tasks and their PCs
b Step to previous state capture position
Ma <channel mask> Enable or disable audio channels
Ms <sprite mask> Enable or disable sprites
Mb <bitplane mask> Enable or disable bitplanes
sp <addr> [<addr2][<size>] Dump sprite information
di <mode> [<track>] Break on disk access. R=DMA read,W=write,RW=both,P=PIO
Also enables level 1 disk logging
did <log level> Enable disk logging
dj [<level bitmask>] Enable joystick/mouse input debugging
smc [<0-1>] Enable self-modifying code detector. 1 = enable break.
dm Dump current address space map
?<value> Hex/Bin/Dec converter
x Close debugger.
xx Switch between console and GUI debugger.
mg <address> Memory dump starting at <address> in GUI
dg <address> Disassembly starting at <address> in GUI
q Quit the emulator. You don't want to use this command.


Numbers:

  • are usually hexadecimal by default (a few exceptions default to decimal)
  • prepend a number with $ or 0x force hexadecimal
  • prepend a number with ! to force decimal
  • prepend a number with % to force binary

More info