Windows驅動學習(四)-- 雙機除錯
1. 概述
跟除錯應用層程式不同,驅動不穩定,可能會導致藍屏,所以我們不能在本機除錯。一般的操作是在一個虛擬機器中載入驅動,然後通過串列埠對該虛擬機器的驅動進行除錯。
2. 虛擬機器配置
2.1 開啟除錯選項
以管理員身份執行cmd。
鍵入bcdedit命令,檢視當前啟動項,輸出如下:
純淨的系統,一般只有一個標識為{current}的啟動載入器是當前的啟動配置。
建立一個新的啟動項: bcdedit /copy {current} /d “Windwos7”
設定新的啟動項: bcdedit /debug ON bcdedit /bootdebug ON
檢視當前的除錯配置: bcdedit /dbgsettings
一般來說,會顯示出使用的第一個串列埠,波特率為115200bps,和期望的一致,不需要修改。
選擇選單的超時,我設定為10秒: bcdedit /timeout 10
重新啟動,當需要除錯時就用除錯模式進入。
2.2 設定串列埠
首先移除掉印表機,因為它佔用了第一個串列埠,然後新增一個串列埠,命名為\.\pipe\com_1,同時設定另一端是應用程式。
3. VS2017配置
配置串列埠連線。
Display name隨便填,Network host name則填虛擬機器的計算機名。
然後連線型別選擇串列埠,勾上Pipe和Reconnect,Pipe name填入串列埠名“\.\pipe\com_1”。
4. 拍攝快照
配置好的虛擬機器最好打上一個快照,方便以後除錯。
5. 連線
做好以上配置後,在VS2017上點選Debugging Tools for Windows - Kernel Debugger進行除錯。
一路點繼續。
當右下角出現提示訊息後就意味著連線成功啦。
6. 除錯
在程式碼上下好斷點後,將對應的驅動檔案複製到虛擬機器中並載入,VS2017會自動斷在斷點處,如右所示,這時就可以開始除錯啦。