iT邦幫忙

2023 iThome 鐵人賽

DAY 9
0

在成功執行測試程式後,我們接著介紹如何偵錯驅動程式。有許多方式可以偵錯驅動程式,我們會介紹其中兩種方式,WinDbgWPP軟體追蹤

WinDbg

在安裝WDK時也有安裝WinDbg,以我的編譯環境為例子,是位於C:\Program Files (x86)\Windows Kits\10\Debuggers\x64,另外microsoft也有提供使用者介面較為現代的版本,可以在Microsoft Store或是至安裝Windows偵錯工具頁面下載。WinDbg可以透過多種方式連接,例如USB2、USB3或網路,這次示範會使用WinDbg透過網路來偵錯

  • 首先需要準備另外一台機器做為測試端原本主機作為主機端,主機端與測試端需位於相同區網下。
  • 測試端依照Day03的內容建立編譯環境。
  • 在測試端以管理員權限開啟命令提示字元,輸入下列指令開啟偵錯測試模式
    cdedit /set DEBUG YES
    cdedit /set TESTSIGNING ON
    ``
    [](https://raw.githubusercontent.com/papa12804/pics/master/debug-1.png)
    
  • 透過網路偵錯需要設定主機端的IP位址埠號
    cdedit /dbgsettings net hostip:192.168.1.118 port:50000
    ``
    [](https://raw.githubusercontent.com/papa12804/pics/master/debug-3.png)
    
  • 輸入下列指令確認設定是否正確,這邊要將金鑰(Key)跟埠號(Port)記錄下來供後續使用。
    cdedit /dbgsettings
    ``
    [](https://raw.githubusercontent.com/papa12804/pics/master/debug-4.png)
    
  • 回到本機端,開啟WinDbg,這裡是使用介面較為現代的新版本,選取文件>Attach to kernel>NetPort numberKey請輸入先前所記錄下來的值,然後點選OK。
  • 接著將測試端重新開機,等待數分鐘後會顯示以下畫面,代表主機端已成功連線到測試端
  • 回到主機端的WinDbg,按下Break,接著使用.symfix去設定符號路徑。
    symfix
    ``
    
  • 使用.sympath將Non-PnP driver sample的路徑新增至符號路徑+代表將保留現存的符號路徑
    sympath+ <your path of Windows Driver Samples>\general\ioctl\kmdf\exe\x64\Debug
    sympath+ <your path of Windows Driver Samples>\general\ioctl\kmdf\sys\x64\Debug
    ``
    
  • 使用.srcpath將Non-PnP driver sample的路徑新增至來源路徑+代表將保留現存的來源路徑
    srcpath+ <your path of Windows Driver Samples>\general\ioctl\kmdf\exe
    srcpath+ <your path of Windows Driver Samples>\general\ioctl\kmdf\sys
    ``
    
  • 使用.exepath將Non-PnP driver sample的路徑新增至可執行檔路徑+代表將保留現存的可執行檔路徑
    exepath+ <your path of Windows Driver Samples>\general\ioctl\kmdf\exe\x64\Debug
    ``
    
  • 最後使用.reload重載符號/f會刪除指定模組的所有符號資訊。
    reload /f
    ``
    
  • 完成後再按下Go,然後依照Day08的步驟將編譯好的Non-Pnp driver sample從主機端複製到測試端,最後在測試端上以管理者權限開啟命令提示字元並執行nonpnpapp.exe
  • 確認nonpnpapp.exe執行完成後回到主機端,確認WinDbg是否有顯示Non-PnP驅動程式裡使用KdPrint印出的偵錯訊息。

結論

今天介紹了如何使用WinDbg偵錯,WinDbg的功能非常強大,可以加入中斷點和逐行執行,但今天只有簡單介紹如何安裝和基本使用方法,如果想要更加了解可以到下方參考內容連結自行閱讀。

參考內容

偵錯 Windows 驅動程式逐步實驗室 (回應核心模式)


上一篇
Day08 非隨插即用(Non-PnP)驅動程式-4
下一篇
Day10 如何偵錯驅動程式-2
系列文
Windows Driver + Electron 學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言