-
Notifications
You must be signed in to change notification settings - Fork 1
Dolphin debugger
Dolphin provides a debugger that can be enabled under:
Dolphin Settings > Interface > Show Debugging UI
NB: Keep in mind, that this emulator and its debugger are still in development and might not be exempt of bugs.
Here are some advice to prevent weird things to happen and that might disrupt your debugging experience:
-
Disable dual core mode under
Dolphin Settings > General
, it avoids random crashes while debugging - Symbols map, breakpoints, watches, etc. might not be saved automatically so I strongly advise to save them regularly
- Some of them are not loaded on boot, you should pause the emulator and load them when needed
- If possible, pause the game before using debugger's features
For the Japanese version of MH3, you can disable the text flickering bugs by adding these lines to its game config:
[Video_Settings]
SafeTextureCacheColorSamples = 0
Here is a very simplistic overview of what you can do with Dolphin debugger.
Debugger views can be enable under Dolphin menu > View
.
This widget allows you to see the code being executed like most debuggers. Symbols can be generated via various means. Some contextual options are available with a right-click such as:
- Patching with
Insert blr/nop
andRestore/Replace instruction
- Following branch
- Create a (non-logging) breakpoint with a left-click at the left of the address column
This widget lists active threads and the properties of each thread. It can be useful for games using lots of thread and switching context often. I don't use this widget a lot for this game.
This widget can be used to read value from registers. It can also be used to modify registers, interesting when you want to bypass some security mechanisms.
This widget show a memory panel view on the left. The data type option group can be used to toggle different view of the memory. On top of that, memory dump can be generated from this widget. Searching for string and hex string values can be done using the search bar and specifying the start address.
This widget displays the current network state of the emulator with the active network and SSL sockets. It provides dumping features if needed and can be used to tweak some security mechanisms.
The Log configurations widget allows you to choose what to log and its verbosity level. I described what I usually use in another wiki page.
These widgets allow you to create watches to inspect address values. Breakpoints can be used to break when an instruction is executed or when a memory address is read from or written to. On top of that, you can also log when a breakpoint is hit.