Difference between revisions of "WinUAE debugger"
Spellcoder (talk | contribs) (added history of the debugger in WinUAE) |
(Added prepend % for binary) |
||
(3 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | ... | + | [[Image:WinUAE 1.5.3 Debugger.png|thumb|415px|right|WinUAE Debugger in action]] |
+ | WinUAE (the Amiga emulator for Windows) can be used in three ways for debugging: | ||
+ | # using the built-in debugger (shift+f12, type h<return> to see commands) | ||
+ | # using emulated freezer cartridges | ||
+ | # by creating a state file<br />(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== | |
− | |||
+ | {|class="infotable" | ||
+ | !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 | ||
+ | |- | ||
+ | |o <0-2|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,<br />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)<br />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<br />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 | ||
− | * WinUAE | + | ==More info== |
− | + | * [[WinUAE debugger history]] |
Latest revision as of 12:34, 12 February 2021
WinUAE (the Amiga emulator for Windows) can be used in three ways for debugging:
- using the built-in debugger (shift+f12, type h<return> to see commands)
- using emulated freezer cartridges
- 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