Debug Command 27 - Continue After an Exception Command
Parameters
Pid
Returns
You must issue the DBG_C_Continue command to continue after DosDebug has been given preemptive notifications or an exception notification. For such notifications, the DBG_C_Continue command is the only Debug command that will start the child process again. You can issue other Debug commands, but you must eventually issue the DBG_C_Continue command.
If you issue the DBG_C_Continue command and there is no pre-existing notification or exception, the DBG_C_Continue command acts like a Debug DBG_C_Go.
In single-step mode, XCPT_CONTINUE_STOP has the same effect as XCPT_CONTINUE_EXECUTION. That is, execution is always stopped after a single-step operation when DBG_N_Success is returned.
Handling Preemptive Notifications
The DBG_C_Continue command is used to either continue or stop the child process after a preemptive notification has been received from DosDebug.
The XCPT_CONTINUE_STOP parameter can be used to stop the child process after a preemptive notification has been received. Any pending notifications will be held until execution of the child process is resumed using subsequent DosDebug commands. While the child process is stopped, you can issue other DosDebug commands, such as DBG_C_ReadMem.
The XCPT_CONTINUE_SEARCH parameter allows the child process to execute until the next notification is received.
The following is a list of preemptive notifications.
Handling the DBG_N_Exception Notification
Note: XCPT_BREAKPOINT and XCPT_SINGLE_STEP are pre-first chance exception notifications.
The XCPT_CONTINUE_STOP parameter serves two purposes. It stops the child process, and it tells DosDebug that the debugger handled the exception.
The XCPT_CONTINUE_EXECUTION parameter tells DosDebug to restore the execution context of the thread that received the exception, and then continue execution of the child process. This implies that the debugger has handled the exception.
The XCPT_CONTINUE_SEARCH parameter tells DosDebug to pass the exception to the exception handler because the debugger will not handle it. After receiving an exception notification other than XCPT_BREAKPOINT or XCPT_SINGLE_STEP, the DBG_C_Continue command with the XCPT_CONTINUE_SEARCH parameter resumes execution of the child process.