mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 09:43:04 +00:00
- Unregress KDBG: It has to increment EIP in case of STATUS_BREAKPOINT to skip over the current instruction, but now do it inside KDBG's exception handler.
- In Kd and GDB exception handler wrappers, return FALSE if kdDoNotHandleException, and return TRUE otherwise (kdHandled / kdContinue). After my previous commit these functions were always returning FALSE / exception not handled. svn path=/trunk/; revision=33929
This commit is contained in:
parent
8a2b9285a7
commit
87f175a68a
2 changed files with 6 additions and 10 deletions
|
@ -167,7 +167,7 @@ KdpEnterDebuggerException(IN PKTRAP_FRAME TrapFrame,
|
||||||
|
|
||||||
/* Convert return to BOOLEAN */
|
/* Convert return to BOOLEAN */
|
||||||
if (Return == kdDoNotHandleException) return FALSE;
|
if (Return == kdDoNotHandleException) return FALSE;
|
||||||
return FALSE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
|
@ -196,7 +196,7 @@ KdpCallGdb(IN PKTRAP_FRAME TrapFrame,
|
||||||
|
|
||||||
/* Convert return to BOOLEAN */
|
/* Convert return to BOOLEAN */
|
||||||
if (Return == kdDoNotHandleException) return FALSE;
|
if (Return == kdDoNotHandleException) return FALSE;
|
||||||
return FALSE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* PUBLIC FUNCTIONS *********************************************************/
|
/* PUBLIC FUNCTIONS *********************************************************/
|
||||||
|
|
|
@ -1269,7 +1269,7 @@ KdbpGetExceptionNumberFromStatus(IN NTSTATUS ExceptionCode)
|
||||||
*
|
*
|
||||||
* \param ExceptionRecord Unused.
|
* \param ExceptionRecord Unused.
|
||||||
* \param PreviousMode UserMode if the exception was raised from umode, otherwise KernelMode.
|
* \param PreviousMode UserMode if the exception was raised from umode, otherwise KernelMode.
|
||||||
* \param Context Unused.
|
* \param Context Context, IN/OUT parameter.
|
||||||
* \param TrapFrame Exception TrapFrame.
|
* \param TrapFrame Exception TrapFrame.
|
||||||
* \param FirstChance TRUE when called before exception frames were serached,
|
* \param FirstChance TRUE when called before exception frames were serached,
|
||||||
* FALSE for the second call.
|
* FALSE for the second call.
|
||||||
|
@ -1280,7 +1280,7 @@ KD_CONTINUE_TYPE
|
||||||
KdbEnterDebuggerException(
|
KdbEnterDebuggerException(
|
||||||
IN PEXCEPTION_RECORD ExceptionRecord OPTIONAL,
|
IN PEXCEPTION_RECORD ExceptionRecord OPTIONAL,
|
||||||
IN KPROCESSOR_MODE PreviousMode,
|
IN KPROCESSOR_MODE PreviousMode,
|
||||||
IN PCONTEXT Context OPTIONAL,
|
IN PCONTEXT Context,
|
||||||
IN OUT PKTRAP_FRAME TrapFrame,
|
IN OUT PKTRAP_FRAME TrapFrame,
|
||||||
IN BOOLEAN FirstChance)
|
IN BOOLEAN FirstChance)
|
||||||
{
|
{
|
||||||
|
@ -1324,12 +1324,6 @@ KdbEnterDebuggerException(
|
||||||
|
|
||||||
if (ExceptionCode == STATUS_BREAKPOINT)
|
if (ExceptionCode == STATUS_BREAKPOINT)
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
* The breakpoint will point to the next instruction by default so
|
|
||||||
* point it back to the start of original instruction.
|
|
||||||
*/
|
|
||||||
//TrapFrame->Eip--;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ... and restore the original instruction.
|
* ... and restore the original instruction.
|
||||||
*/
|
*/
|
||||||
|
@ -1618,6 +1612,8 @@ continue_execution:
|
||||||
/* Clear dr6 status flags. */
|
/* Clear dr6 status flags. */
|
||||||
TrapFrame->Dr6 &= ~0x0000e00f;
|
TrapFrame->Dr6 &= ~0x0000e00f;
|
||||||
|
|
||||||
|
/* Skip the current instruction */
|
||||||
|
Context->Eip++;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ContinueType;
|
return ContinueType;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue