Navigating the trace in Axion
Debugger-like navigation
Axion comes with a set of commands to browse the trace and set the currently selected transition in a debugger-like fashion: step into, step out, step over... forward and backward in the trace.
Overview
Action | Default shortcut |
---|---|
step over | F10 |
step over backward | Shift + F10 |
step into | F11 |
step into backward | Shift + F11 |
step out | F12 |
step out backward | Shift + F12 |
Step out
Use step out to exit the current function:
- step out forward to go to the instruction after the
ret
. - step out backward to go the
call
instruction.
Step into and step over
Forward
On a call
instruction, use:
- step into to enter the function (go to the
ret
) - step over to skip the function and go to the instruction after the
ret
On any other instruction, step into and step over would both go to the next instruction.
Backward
After a ret
instruction, use:
- step into backward to enter the function
- step over backward to skip the function and go to the
call
instruction.
On any other instruction, step into backward and step over backward would both go to the previous instruction.
Reaching the ends of the trace
If the destination of a debugging command was not recorded in the trace (comes from before or after the trace), the step action has no effect and a message is displayed in the status bar and logged in the log widget
Axion percent plugin
The percent
plugin adds the capability of jumping between stack memory
accesses. If the currently selected instruction writes something on the stack,
percent
will go to the next instruction reading the memory. Conversely, if the
current instruction is reading some value on the stack, percent
will jump to
the previous instruction writing the memory. In practice, this is very useful
to follow push
/pop
operands or call
/ret
boundaries.
The plugin is named percent
as it has been designed to work like the vim
editor
percent keybinding on curly brackets.
The default key binding for this plugin is %
. If you wish to modify this
binding, use the shortcut configuration panel in Axion