Jump to content

DBG C Stop: Difference between revisions

From EDM2
Created page with "Debug Command 10 - Stop Command ;Parameters *Pid= Process ID of debuggee *Cmd= DBG_C_Stop ;Returns The function performed by this command depends on the current state..."
 
Ak120 (talk | contribs)
mNo edit summary
 
Line 1: Line 1:
Debug Command 10 - Stop Command  
Debug Command 10 - Stop Command


;Parameters  
;Parameters
*Pid= Process ID of debuggee
*Cmd= DBG_C_Stop


*Pid= Process ID of debuggee  
;Returns:The function performed by this command depends on the current state of the debuggee process, as follows:
*Cmd= DBG_C_Stop  
*If the debuggee is already stopped:
:If there is a pending notification from the current thread, it is returned. See [[DosDebug]] Notifications for information about pending notifications.
:If there is no pending notification from the current thread, DBG_N_Success is returned.
*If the debuggee is executing user code:
:The debuggee is marked to stop before the next time it is ready to execute user-space (ring 2 or 3) code. This is known as an asynchronous stop.
:Kernel operations will not be interrupted for this DBG_C_Stop That is, threads blocked in the kernel (via a semaphore or internal operation) will not be interrupted. However, an infinite loop in user space will be stopped.


;Returns
;Note:The asynchronous variation of the stop command implies a debugger with a minimum of two threads; one waits for a [[DBG_C_Go]] or [[DBG_C_SStep]] command to finish, and another executes the DBG_C_Stop command.


The function performed by this command depends on the current state of the debuggee process, as follows:
[[Category:Debug Command]]
 
*If the debuggee is already stopped:
 
:If there is a pending notification from the current thread, it is returned. See DosDebug Notifications for information about pending notifications.
 
:If there is no pending notification from the current thread, DBG_N_Success is returned.
 
*If the debuggee is executing user code:
 
:The debuggee is marked to stop before the next time it is ready to execute user-space (ring 2 or 3) code. This is known as an asynchronous stop.
 
:Kernel operations will not be interrupted for this DBG_C_Stop That is, threads blocked in the kernel (via a semaphore or internal operation) will not be interrupted. However, an infinite loop in user space will be stopped.
 
 
:;Note
::The asynchronous variation of the stop command implies a debugger with a minimum of two threads; one waits for a DBG_C_Go or DBG_C_SStep command to finish, and another executes the DBG_C_Stop command.
 
[[Category:DBG_C]]
{{DISPLAYTITLE:DBG_C_Stop}}
{{DISPLAYTITLE:DBG_C_Stop}}

Latest revision as of 12:17, 10 March 2020

Debug Command 10 - Stop Command

Parameters
  • Pid= Process ID of debuggee
  • Cmd= DBG_C_Stop
Returns
The function performed by this command depends on the current state of the debuggee process, as follows:
  • If the debuggee is already stopped:
If there is a pending notification from the current thread, it is returned. See DosDebug Notifications for information about pending notifications.
If there is no pending notification from the current thread, DBG_N_Success is returned.
  • If the debuggee is executing user code:
The debuggee is marked to stop before the next time it is ready to execute user-space (ring 2 or 3) code. This is known as an asynchronous stop.
Kernel operations will not be interrupted for this DBG_C_Stop That is, threads blocked in the kernel (via a semaphore or internal operation) will not be interrupted. However, an infinite loop in user space will be stopped.
Note
The asynchronous variation of the stop command implies a debugger with a minimum of two threads; one waits for a DBG_C_Go or DBG_C_SStep command to finish, and another executes the DBG_C_Stop command.