/* Delete the temporary breakpoint which was used to step over or into the instruction. */
KdbpDeleteBreakPoint(-1, BreakPoint);
+ TrapFrame->Eip--;
+
if (--KdbNumSingleSteps > 0)
{
if ((KdbSingleStepOver && !KdbpStepOverInstruction(TrapFrame->Eip)) ||
/* Clear dr6 status flags. */
TrapFrame->Dr6 &= ~0x0000e00f;
- /* Skip the current instruction */
- Context->Eip++;
+ if (!(KdbEnteredOnSingleStep && KdbSingleStepOver))
+ {
+ /* Skip the current instruction */
+ Context->Eip++;
+ }
}
return ContinueType;
VOID
NTAPI
+INIT_FUNCTION
KdbpGetCommandLineSettings(
PCHAR p1)
{
while (p1 && (p2 = strchr(p1, ' ')))
{
- p2++;
+ p2 += 2;
if (!_strnicmp(p2, "KDSERIAL", 8))
{
p2 += 8;
KdbDebugState |= KD_DEBUG_KDNOECHO;
}
+ else if (!_strnicmp(p2, "FIRSTCHANCE", 11))
+ {
+ p2 += 11;
+ KdbpSetEnterCondition(-1, TRUE, KdbEnterAlways);
+ }
p1 = p2;
}