使用WinDbg和虛擬機器調試Windows驅動程式

來源:互聯網
上載者:User

本文範圍和說明:

本文只講解具體的操作過程,不涉及詳細的原理,若要深入瞭解,請參閱Debugging Help(Debugging Tools For Windows);

文中使用Virtual PC 2007作為虛擬機器,但對於Virtual PC的其他版本或者VMWare都適用(VMWare設定具名管道的方式有點小不同)。

WinDbg更新很快,幾乎月月有更新,下面是微軟網站的下載連結:http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx

本文:

在開發驅動程式時,調試是一件很頭痛的事情,如果你在自己機器的作業系統上安裝你要調試的驅動程式的話,可能一不小心就是一個Bug Check(藍屏),這個時候,你可能要進安全模式,卸載你的驅動程式,甚至有可能你需要重新安裝作業系統。解決驅動程式的調試,一個比較好的方案就是在你的物理機器上裝上一個虛擬機器,在虛擬機器上安裝你要調試的驅動程式,然後使用WinDbg在你的物理機器上調試你虛擬機器上的驅動程式。大致的如下:

基本的步驟分為三步:

1. 安裝過程:在你的機器上安裝安裝虛擬機器和WinDbg軟體;

2. 配置過程:對你的WinDbg和虛擬機器軟體做一些必要的配置;

3. 調試過程:給出一個最簡單的調試啟動過程,不涉及複雜的核心調試技術;

一、 安裝過程

首先,你需要在你自己的機器上安裝虛擬機器,我安裝的是Virtual PC 2007,然後需要在你的虛擬機器上安裝好作業系統,作業系統的版本取決於你要在哪一個作業系統上調試你的驅動程式。虛擬機器以及虛擬機器作業系統的安裝過程網路上針對VirtualPC或者VMWare都有很詳細的資料。

然後在你的物理機器上裝上WinDbg,我用的是寫本文時的最新版:6.8.0004.0,可以按我給出的連結在微軟的網站上去下最新版,好像安裝過程也不是很複雜,沒有什麼特別的配置,在此不再贅述。

二、 配置過程

安裝好軟體以後,剩下的就是配置了。首先你要對你的虛擬機器作如下的配置:

配置具名管道:你需要在你的虛擬機器上建立具名管道,WinDbg通過此管道與你的虛擬機器建立串連。給虛擬機器設定具名管道的方法在虛擬機器的協助文檔或網上很容易找到。以下給出Virtual PC 2007上建立具名管道的方法(so easy:))

開啟Virtual PC 2007,點擊”Action”->”Settings”,進入虛擬機器的設定頁面:

在虛擬機器的設定頁面中,選擇”COM1”或者”COM2”,在右邊的屬性項中點選”Named Pipe”,然後指定一個管道名稱,注意具名管道的名稱格式,當虛擬機器的物理機和你的調試機器是同一台機器時,管道名稱格式如下:

//./pipe/your_pipename_whatever

給虛擬機器設定好具名管道以後,還需要給虛擬機器設定啟動模式,以偵錯模式啟動:

找到"C:/boot.ini"(%SystemRoot%)檔案(別告訴我你找不到啊,嘿嘿),將此檔案的唯讀屬性去掉(右擊檔案,選擇” 屬性”,去掉”唯讀”的選項),用記事本和其他文本工具開啟,加上如下啟動選項:

/debug /debugport=com1 /baudrate=115200

注意這裡的debugport指定的連接埠必須與你在上一步配置的具名管道的連接埠相同,至於baudrate,你可以指定為57600或115200,需要注意的是,物理機上該連接埠的baudrate值必須和你在這裡指定的baudrate相同。配置如:

至此,虛擬機器的配置已完畢。

剩下的是物理機的配置,這個工作就比較簡單了。

首先,安裝WinDbg;然後,配置物理機COM連接埠的baudrate:“我的電腦”->(右鍵)”屬性”->”硬體”->”裝置管理員”,選擇你在虛擬機器上配置的相同的COM口,右擊”屬性”,配置COM的每秒位元值與你在虛擬機器的/baudrate值相同。其他的值可以就用預設值,如:

然後,配置WinDbg的啟動選項,我喜歡做成一個批次檔,bat(或cmd)檔案內容如下:

windbg -k com:pipe,port=//./pipe/your_pipe_name

這裡的your_pipe_name名稱就是你配置的虛擬機器的具名管道名稱。把這個批次檔放在你的WinDbg.exe所在的目錄。然後就一切OK了。

三、 調試過程

首先,啟動你的虛擬機器,然後單擊物理機上你做的那個bat檔案,注意,如果這時候你的虛擬機器還沒有啟動,單擊bat檔案會出現"系統找不到指定檔案"的錯誤。這是因為你的虛擬機器沒有啟動,或者你的虛擬機器的COM口還沒有準備好。不要緊,在虛擬機器作業系統啟動的過程中等個一兩秒,再執行批次檔,如果一切OK的話,WinDbg中會出現如所示的資訊:

--------------------------------------------------------------------------------------------------------------------------------

Microsoft (R) Windows Debugger Version 6.8.0004.0 X86
Copyright (c) Microsoft Corporation. All rights reserved.

Opened //./pipe/my_pipe
Waiting to reconnect...
Connected to Windows XP 2600 x86 compatible target, ptr64 FALSE
Kernel Debugger connection established.
Symbol search path is: *** Invalid ***
****************************************************************************
* Symbol loading may be unreliable without a symbol search path.           *
* Use .symfix to have the debugger choose a symbol path.                   *
* After setting your symbol path, use .reload to refresh symbol locations. *
****************************************************************************

--------------------------------------------------------------------------------------------------------------------------------

此時,按住ctrl+break,你就可以掛起虛擬機器作業系統,open你的source file,F9加入斷點,你就開始你的驅動程式調試之旅了:)。如果你還想加入作業系統的偵錯符號,你需要將如下的值加入到你的WinDbg配置中:

在WinDbg中,"File"->"Symbol file path"中加入如下的值:

--------------------------------------------------------------------------------------------------------------------------

SRV*d:/winsymbols*http://msdl.microsoft.com/download/symbols

--------------------------------------------------------------------------------------------------------------------------

其中,d:/winsymbols就是你期望下載下來的符號的儲存路徑,因為是動態下載,所以要保證機器連網才行。

Lastly,enjoy your kernel debug journey!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.