我最近開始嘗試爲Windows開發一個文件系統驅動程序,並開始着眼於Visual Studio 2013中提供的內核調試器。內核開發人員是一個了不起的軟件 - 它能夠調試活動的內核(斷點,堆棧跟蹤,內存訪問以及其他所有)通過RS232連接連接的遠程機器。但我不明白的一件事 - 是如何通過RS232端口進行調試?我對內核的理解是,它是一個直接針對硬件組件的軟件,是系統中最低級別的軟件之一。如何在內核之上「運行」,這將允許遠程調試內核本身?它是如何純粹用軟件進行內核調試的;而不會干擾軟件響應機器本身的調試請求(這可能會在內核中運行)?Visual Studio中的Windows內核調試器如何工作?
2
A
回答
4
內核調試器既不是以上的也不是以下的內核。相反,它是內核的部分。即使在調試時,並且內核停止了,處理調試器連接的內核部分仍處於活動狀態。
例如,您將在內核中看到以Kd
爲前綴的多個符號,如KdEnableDebugger
。這些是與內核調試有關的功能。 Kdp
功能是私人。
調試器的接口特定部分在kd1394.dll
(Firewire),kdcom.dll
(Serial)或kdusb.dll
(USB)中實現。內核鏈接到這些DLL以實現低級協議,其功能如KdSendPacket
。
你應該看看這個非常翔實的文章:Kernel and remote debuggers。摘錄如下:
Win2k內核調試支持內置在內核中。 Win2k操作系統定義了一組例程,這些例程協同地爲遠程調試器(如WinDbg)提供內核調試支持。這些例程共同實現了稱爲「內核調試器」的Win2k操作系統組件。
內核調試器的基本操作非常簡單。當目標系統正常運行時,內核調試器正在安靜地睡眠;只有當某些事件發生時纔會採取行動。具體來說,只要發生異常(由處理器或通過調用
ZwRaiseException
),命中斷點或請求本地調試服務,就會激活它。而且,當目標檢測到來自遠程調試器的闖入請求時,內核調試器也被激活。內核調試器的工作是構建系統中發生的事件的描述,並將其轉發給遠程調試器供用戶分析。
相關問題
- 1. 調試如何在Visual Studio中工作?
- 2. 調試器在Visual Studio中不工作
- 3. cuda nsight visual studio版內核調試
- 4. Visual Studio調試器不工作
- 5. Visual Studio 2015 Excel調試器不工作
- 6. Visual Studio 2005 - 調試器停止工作
- 7. 如何在Visual Studio或Parallel Nsight中調試CUDA內核
- 8. 調試NotificationEvent在內核調試(Windows)中
- 9. 如何使用visual studio 2008調試到CUDA內核代碼?
- 10. 如何在Visual Studio 2012中指定的32位Windows調試做內核模式調試
- 11. Windows 8 Visual Studio 2012調試器問題
- 12. Windows Phone的編輯器\預覽如何在Visual Studio中工作?
- 13. 如何在Visual Studio中調試時更改工作目錄?
- 14. 的Visual Studio 2012的Windows內核調試 - 不能提供VM目標
- 15. 從Linux調試Windows內核
- 16. 如何獲得在Visual Studio 11中工作的圖形調試器?
- 17. 無法讓調試器在Visual Studio代碼中工作?
- 18. 的Visual Studio 2012的遠程調試內核虛擬機
- 19. visual studio 2012調試器不起作用
- 20. visual studio 2012上的內核模式調試
- 21. 使用Visual Studio調試器調試C++
- 22. Visual Studio圖形調試器
- 23. Visual Studio 2010調試器
- 24. 調試Visual Studio鏈接器
- 25. Visual Studio調試器問題
- 26. Visual Studio調試器問題
- 27. Visual Studio調試器問題
- 28. Visual Studio調試迭代器
- 29. 如何編寫一個windows內核模式調試器?
- 30. 如何爲Visual Studio調試工作進程指定標識?