- Add proper bootcd/install freeldr.ini flags to allow KD debugging to work.

- Fix KdPollBreakIn.
- Add initial debug breakpoint code to ExpInitializeExecutive.
- WinDBG now breaks at the initial breakpoint and you can continue execution from there.
- There's still a lot of weird hangs when using WinDBG, it's far from usable.

svn path=/trunk/; revision=25996
This commit is contained in:
Alex Ionescu 2007-03-05 02:29:46 +00:00
parent 05f82784bd
commit e707b70756
6 changed files with 12 additions and 14 deletions

View file

@ -305,12 +305,12 @@ CreateFreeLoaderIniForDos(PWCHAR IniPath,
L"SystemPath",
ArcPath);
/* Options=/DEBUGPORT=SCREEN /NOGUIBOOT /SOS*/
/* Options=/DEBUG /DEBUGPORT=COM1 /BAUDRATE=115200 /SOS*/
IniCacheInsertKey(IniSection,
NULL,
INSERT_LAST,
L"Options",
L"/DEBUGPORT=SCREEN /SOS");
L"/DEBUG /DEBUGPORT=COM1 /BAUDRATE=115200 /SOS");
/* Create "DOS" section */
IniSection = IniCacheAppendSection(IniCache,
@ -423,12 +423,12 @@ CreateFreeLoaderIniForReactos(PWCHAR IniPath,
L"SystemPath",
ArcPath);
/* Options=/DEBUGPORT=COM1 /NOGUIBOOT /SOS*/
/* Options=/DEBUG /DEBUGPORT=COM1 /BAUDRATE=115200 /SOS*/
IniCacheInsertKey(IniSection,
NULL,
INSERT_LAST,
L"Options",
L"/DEBUGPORT=COM1 /SOS");
L"/DEBUG /DEBUGPORT=COM1 /BAUDRATE=115200 /SOS");
/* Save the ini file */
IniCacheSave(IniCache, IniPath);

View file

@ -40,7 +40,7 @@ Cabinet=reactos.cab
[SetupData]
DefaultPath = \ReactOS
;OsLoadOptions = "/NOGUIBOOT /NODEBUG"
OsLoadOptions = "/NOGUIBOOT /DEBUGPORT=COM1"
OsLoadOptions = "/NOGUIBOOT"
;OsLoadOptions = "/NOGUIBOOT /DEBUGPORT=SCREEN"
;OsLoadOptions = "/NOGUIBOOT /DEBUGPORT=BOCHS"

View file

@ -734,9 +734,6 @@ ExpLoadBootSymbols(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
i++;
NextEntry = NextEntry->Flink;
}
/* Check if we should break after symbol load */
if (KdBreakAfterSymbolLoad) DbgBreakPointWithStatus(DBG_STATUS_CONTROL_C);
}
VOID
@ -916,6 +913,9 @@ ExpInitializeExecutive(IN ULONG Cpu,
/* Load boot symbols */
ExpLoadBootSymbols(LoaderBlock);
/* Check if we should break after symbol load */
if (KdBreakAfterSymbolLoad) DbgBreakPointWithStatus(DBG_STATUS_CONTROL_C);
/* Set system ranges */
SharedUserData->Reserved1 = (ULONG_PTR)MmHighestUserAddress;
SharedUserData->Reserved3 = (ULONG_PTR)MmSystemRangeStart;

View file

@ -248,9 +248,8 @@ extern WORK_QUEUE_ITEM KdpTimeSlipWorkItem;
extern LONG KdpTimeSlipPending;
extern PKEVENT KdpTimeSlipEvent;
extern KSPIN_LOCK KdpTimeSlipEventLock;
extern BOOLEAN KdpControlCPressed;
extern BOOLEAN KdpControlCWaiting;
extern BOOLEAN KdpPortLocked;
extern BOOLEAN KdpControlCPressed;
extern KSPIN_LOCK KdpDebuggerLock;
extern LARGE_INTEGER KdTimerStop, KdTimerStart, KdTimerDifference;
extern ULONG KdComponentTableSize;

View file

@ -20,10 +20,9 @@ VOID NTAPI RtlpBreakWithStatusInstruction(VOID);
// Debugger State
//
KD_CONTEXT KdpContext;
BOOLEAN KdpControlCPressed;
BOOLEAN KdpControlCWaiting;
BOOLEAN KdpPortLocked;
KSPIN_LOCK KdpDebuggerLock;
BOOLEAN KdpControlCPressed;
//
// Debug Trap Handlers

View file

@ -86,12 +86,12 @@ KdPollBreakIn(VOID)
_disable();
/* Check if a CTRL-C is in the queue */
if (KdpControlCWaiting)
if (KdpContext.KdpControlCPending)
{
/* Set it and prepare for break */
KdpControlCPressed = TRUE;
DoBreak = TRUE;
KdpControlCWaiting = FALSE;
KdpContext.KdpControlCPending = FALSE;
}
else
{