Debugger functions
Detailed Description
Control the debugging of a process.
Debugger functions complete either SYNCHRONOUSLY or ASYNCHRONOUSLY:
- SYNCHRONOUS FUNCTIONS execute the entire action before the function returns.
- ASYNCHRONOUS FUNCTIONS return before the action has executed in its entirety. They simply start the action, but the result of the action will only be available later. For example, run_to() can execute a lot of instructions before terminating. Such functions provide a notification code to indicate the end of their execution (see the 'Notification' keyword in the function documentation). Install a callback using hook_to_notification_point() to be notified when the action is terminated.
DEBUGGER COMMANDS are functions who influence the execution of the debugged process. They are available in 2 forms:
- COMMAND(): (e.g. suspend_process()) In this mode, the command will be directly executed. However, it is forbidden to use asynchronous commands in this mode from a debugger notification handler (see dbg_notification_t).
- request_COMMAND(): (e.g. request_suspend_process()) In this mode, a REQUEST to run the command will be memorized at the end of the REQUEST QUEUE (see below). This is mandatory to use this mode for asynchronous commands from a debugger notification handler (see dbg_notification_t).
The REQUEST QUEUE contains a list of planned debugger commands. These commands will be started only in the following cases:
- the previous command terminated, and no call to suspend_process() or continue_process() occurred in the asynchronous function result notification handler (if any).
- run_requests() was called. Please note that when called from a debugger notification handler the queued requests will only be started after the execution of all notification handlers.
A request which fails to start (by returning 0) will generate a dbg_request_error notification.
Modules | |
Process commands | |
Use these functions to manipulate the debugged process. | |
Threads | |
Inspect/Manipulate threads of debugged process. | |
Modules | |
Functions to enumerate modules loaded into the process. | |
Execution flow control | |
Use these functions to run instructions in the debugged process. | |
Registers | |
Inspect/Manipulate registers for debugged process. | |
Breakpoints | |
Work with debugger breakpoints. | |
Tracing | |
Trace instructions/functions/basic blocks. | |
High level functions | |
These functions can be used from scripts. | |
Source information providers | |
These providers supply information about the source files and lines to the source level debugger. | |
Debugger memory functions for UI | |
Inspect debugged process memory. | |
Misc | |
Convenience functions offered by the user interface. | |
Generated by