(v13) Debugging
This page applies to Harlequin v13.1r0 and later; and to Harlequin MultiRIP but not Harlequin Core
As long as the plugin has been compiled and linked with the appropriate symbolic debugging flags turned on, it is possible to use a symbolic debugger with plugins even though the code is in an explicitly loaded DLL.
Code can be debugged whether or not optimization flags are turned on. However, it is usually easier to follow the code if they are turned off, except in cases where a bug only appears when compiled with optimization. For example, when a compiler bug is suspected, timing changes are sufficient to change results, or a subtle memory overwrite changes its behavior according to code layout.
Debugging proceeds as normal for any application once appropriate breakpoints have been set. How‐ ever, establishing breakpoints can be tricky, because:
- The plugin may have been compiled with a different compiler from that used to compile the RIP, so the compiler‐specific debugger may not be appropriate for the program as a whole. This is dis‐ cussed further below.
- All plugins have the same entry point, so setting a debugger breakpoint on
PLUGIN
is likely to be unproductive unless all other plugins have been removed. Microsoft debuggers can set the break‐ points with reference to the source file rather than the symbol name alone.