使用Virtual PC進行Windows核心調試的詳細過程

來源:互聯網
上載者:User
使用Virtual PC進行Windows核心調試的詳細過程  使用WinDbg進行Windows核心調試通常需要兩台 電腦,一台是Debuggee,一台作為Debugger,又成為Host。使用Virtual PC可以在同一台電腦上進行核心調試,對於某些調試任務來說還是非常有用的。

下面以Virtual PC 2004為例,介紹一下利用Virtual PC進行Windows核心調試的詳細過程。

1,下載並安裝Virtual PC 2004,從略。

2,啟動Virutal PC Console(控制台),建立一台新的虛擬PC,安裝嚮導的提示配置硬碟、記憶體等參數。

3,在剛才建立的虛擬PC上安裝作業系統,這個作業系統應該是你要調試的Windows版本。比如你想調試你的驅動程式在Windows Server 2003上出現的問題,那麼就安裝Windows Server 2003。我們以Windows 2000為例。

4,配置虛擬PC的串列口,在Virtual PC的控制台中選擇Windows 2000,然後點擊Settings按鈕彈出設定對話方塊,然後在左側的列表中(如)選擇COM1。

右側選擇Named Pipe選項,即使用具名管道來類比串列口,然後輸入管道的完整名稱:file&://./pipe/com_1,com_1可以為其它名稱,但是前面的部分應該保持不變。

5,啟動虛擬PC中的Windows 2000,然後進入命令列視窗,執行如下命令以便在啟動菜單中增加調試選項:

c:

cd/

attrib -r -h

edit boot.ini

然後將其最末一行複製,並加入調試選項,成為為如下狀態:

點擊查看大圖

6,在虛擬PC中選擇重新啟動Windows 2000,當出現啟動菜單時,按方向鍵使其停止自動計時,等待在這裡。

點擊查看大圖

7,在主機(debugger)上準備啟動WinDbg,考慮每次輸入命令列參數太麻煩,所以建議建立一個如下內容的批次檔,並將其放到與WinDbg.exe同位置的目錄中。

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

8,運行批次檔,使其也進入等待狀態:

點擊查看大圖

9,切換到虛擬PC視窗,選擇帶有“Debug Enabled”的一項然後斷行符號啟動。

10,切換到WinDbg視窗並觀察,如果一切順利,那麼會有如下類似資訊輸出:

Connected to Windows 2000 2195 x86 compatible target, ptr64 FALSE

Kernel Debugger connection established.

Symbol search path is: SRV*c:/symbols*

http://msdl.microsoft.com/download/symbols

Executable search path is: 

Windows 2000 Kernel Version 2195 UP Free x86 compatible

Kernel base = 0x80400000 PsLoadedModuleList = 0x8046a4c0

System Uptime: not available

11,見到如上資訊就說明WinDbg已經與虛擬PC中啟動並執行Windows 2000成功建立調試對話了。如果想感受一下將Windows控制於股掌之中的快感,那麼就按下Ctrl+Break,隨著按鍵發出,Windows 2000會被立刻定住。WinDbg中會顯示如下資訊:

You are seeing this message because you pressed either 

CTRL+C (if you run kd.exe) or,                                       

CTRL+BREAK (if you run WinDBG),                   

on your debugger machine's keyboard.

THIS IS NOT A BUG OR A SYSTEM CRASH

If you did not intend to break into the debugger, press the "g" key, then 

press the "Enter" key now.  This message might immediately reappear.  If it 

does, press "g" and "Enter" again. 

此時WinDbg的命令提示字元區會顯示一段時間*BUSY*(或者其它無效狀態,老本本的WinDbg),這是因為WinDbg在尋找偵錯符號。

在你非常熟悉以上過程之後,其實可以不完全拘泥以上過程的, 比如可以先讓Windows 2000以調試選項運行起來,然後再運行WinDbg。

最後再介紹幾種常見的失敗情況:

1)啟動WinDbg,但是出現所示的錯誤資訊,Win32 error 2,即指定的檔案名稱找不到,這是因為虛擬PC還沒有啟動,還沒有建立這個管道file&://./pipe/com_1, 系統中不存在這樣的檔案。應該運行虛擬PC,哪怕只到啟動選項也可以,便不會再有這個錯誤了。

點擊查看大圖
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.