mirror of
https://github.com/reactos/reactos.git
synced 2026-05-30 05:51:26 +08:00
- The "IRQ" debugger option was introduced in commit5a6adb4f13(r2546). It was used by the in-kernel GDB stub, to manually wire an interrupt handler `GspBreakIn()` to allow the debugger to break into the system when a command is received on the GDB serial port. Side-remark: The hooking was done via `HalGetInterruptVector()` + `IoConnectInterrupt()`, but only at phase 1 initialization when the memory manager was up, which can be "late" enough during system boot initialization. Instead of using `IoConnectInterrupt()`, one could have used explicit `KeInitializeInterrupt()` + `KeConnectInterrupt()` calls that would have worked much earlier in the boot stage. - This functionality was soon after disabled in commitc804ca06be(r2946) in the GDB stub (see `ntoskrnl/kd/gdbstub.c!KdGdbStubInit()`), never to be re-enabled again. It was removed completely in commite160c0fb26(r14799). - Since ReactOS was (until recently) always debugged locally using the in-kernel KDBG debugger, break-in was done with TAB-K keypress, intercepted by the keyboard driver that triggered a `DbgBreakPoint()`, thus no break-in via serial port interrupt was necessary. - Remote debugger break-in detection, which is the standard method that is used when remote-debugging using KD transport DLLs and WinDbg, was introduced in commit12e7593f24(r25984). As with the rest of debugger communication and as done on Windows, detection is done by polling the serial port at certain times, namely in the `KeUpdateSystemTime()` kernel procedure periodically invoked by the timer interrupt. This break-in detection was then erroneously removed in commitbf8b9467dc(r45140), and reinstated in commit014b23b9a(r56194). - Parsing of this "IRQ" option was copy-pasted in other modules (FreeLoader, KDCOM, and KDGDB), even though it was never used. The parsing was then removed in KDBG itself in commit95faf65ebf, but left in the other modules... until now!