2014-05-13 28 views
2

我最近開始嘗試爲Windows開發一個文件系統驅動程序,並開始着眼於Visual Studio 2013中提供的內核調試器。內核開發人員是一個了不起的軟件 - 它能夠調試活動的內核(斷點,堆棧跟蹤,內存訪問以及其他所有)通過RS232連接連接的遠程機器。但我不明白的一件事 - 是如何通過RS232端口進行調試?我對內核的理解是,它是一個直接針對硬件組件的軟件,是系統中最低級別的軟件之一。如何在內核之上「運行」,這將允許遠程調試內核本身?它是如何純粹用軟件進行內核調試的;而不會干擾軟件響應機器本身的調試請求(這可能會在內核中運行)?Visual Studio中的Windows內核調試器如何工作?

回答

4

內核調試器既不是以上的也不是以下的內核。相反,它是內核的部分。即使在調試時,並且內核停止了,處理調試器連接的內核部分仍處於活動狀態。

例如,您將在內核中看到以Kd爲前綴的多個符號,如KdEnableDebugger。這些是與內核調試有關的功能。 Kdp功能是私人

調試器的接口特定部分在kd1394.dll(Firewire),kdcom.dll(Serial)或kdusb.dll(USB)中實現。內核鏈接到這些DLL以實現低級協議,其功能如KdSendPacket

你應該看看這個非常翔實的文章:Kernel and remote debuggers。摘錄如下:

Win2k內核調試支持內置在內核中。 Win2k操作系統定義了一組例程,這些例程協同地爲遠程調試器(如WinDbg)提供內核調試支持。這些例程共同實現了稱爲「內核調試器」的Win2k操作系統組件。

內核調試器的基本操作非常簡單。當目標系統正常運行時,內核調試器正在安靜地睡眠;只有當某些事件發生時纔會採取行動。具體來說,只要發生異常(由處理器或通過調用ZwRaiseException),命中斷點或請求本地調試服務,就會激活它。而且,當目標檢測到來自遠程調試器的闖入請求時,內核調試器也被激活。內核調試器的工作是構建系統中發生的事件的描述,並將其轉發給遠程調試器供用戶分析。

相關問題