本文主要記錄我的安裝VMware+Windgb+Win7內核驅動調試的筆記。session
1、安裝環境app
主機:Windows Vista Bussiness ide
虛擬機:VMware 7 ui
GUestOS: Win7 this
Windbg: 6.11 spa
2、虛擬機配置debug
打開相應 vmware 虛擬機上的 「Virtaul Machine Settings「3d
2.「Hardware 」選項中 —-> 點擊「Add」 添加一個串口設備 SeriallPort .調試
3.」Next」,在 「Serial Port」 裏選中 「Output to named pipe」code
4.」next」,而後以下設置:
5.肯定以後,回到以下界面,在右腳」Virtual Machine Settings」 頁面時,在「I/O Mode」 裏選中「Yield CPU on poll「
6. Ok以後就設定完畢了。
3、Windbg設置
下載地址: Windbg
安裝以後,設置一個桌面快捷方式,而後,右鍵->屬性,在Target中的引號後面添加以下:-b -k com:pipe,port=\\.\pipe\com_1,resets=0
或者是: -b -k com:port=\\.\pipe\com_1,baud=115200,pipe 【兩者彷佛皆可】
4、GuestOS設置
Vista和XP不一樣, 沒有boot.ini文件, 須要用bcdedit進行啓動設置。
1. 在administrator權限下, 進入command line模式, 鍵入bcdedit命令, 會出現如下界面:
2. 而後, 設置端口COM1, baudrate爲115200 (除COM1外, 也能夠用1394或USB. 1394用起來比COM口快多了, 固然前提是你須要有1394卡及其驅動. 很噁心的是Vista再也不支持1394的文件傳輸協議, 可是用windbg雙機調試仍是能夠的)
命令爲:
bcdedit /dbgsettings {serial [baudrate:value][debugport:value] | 1394 [channel:value] | usb }
3.接着, 咱們須要複製一個開機選項, 以進入OS的debug模式
命令爲:
bcdedit /copy {current} /d DebugEnty
DebugPoint 爲選項名稱, 名字能夠本身定義. 而後複製獲得的ID號.
4. 接着增長一個新的選項到引導菜單
bcdedit /displayorder {current} {ID}
這裏的{ID}的ID值是剛 生成的ID值.
5. 激活DEBUG : bcdedit /debug {ID} ON
這裏的{ID} 的ID值仍是剛纔的ID值.
6. 命令執行成功後, 從新啓動機器.或者更簡單的圖形界面設置:在msconfig界面中,選Boot,再選Advanced options,在選擇Debug、Debug port、Baud rate都打上鉤。若是所示:
7. 選擇DebugEntry[debug]做爲等入口。啓動後,打開windbg.能夠看到相似以下的信息:
Microsoft (R) Windows Debugger Version 6.11.0001.404 X86
Copyright (c) Microsoft Corporation. All rights reserved.Opened \\.\pipe\com_1
Waiting to reconnect…
Connected to Windows 7 7600 x86 compatible target at (Thu Dec 10 17:46:36.928 2009 (GMT+8)), ptr64 FALSE
Kernel Debugger connection established. (Initial Breakpoint requested)
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. *
****************************************************************************
Executable search path is:
*********************************************************************
* Symbols can not be loaded because symbol path is not initialized. *
* *
* The Symbol Path can be set by: *
* using the _NT_SYMBOL_PATH environment variable. *
* using the -y <symbol_path> argument when starting the debugger. *
* using .sympath and .sympath+ *
*********************************************************************
*** ERROR: Symbol file could not be found. Defaulted to export symbols for ntkrpamp.exe -
Windows 7 Kernel Version 7600 MP (1 procs) Free x86 compatible
Product: WinNt, suite: TerminalServer SingleUserTS
Built by: 7600.16385.x86fre.win7_rtm.090713-1255
Machine Name:
Kernel base = 0x83e0f000 PsLoadedModuleList = 0x83f57810
Debug session time: Thu Dec 10 17:46:32.658 2009 (GMT+8)
System Uptime: 0 days 0:06:18.429
Break instruction exception – code 80000003 (first chance)
*******************************************************************************
* *
* 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. *
* *
*******************************************************************************
nt!DbgBreakPointWithStatus+0×4:
83e7a394 cc int 3
5、操做方式提示
1. 我發現,若是在GuestOs -win7啓動過程當中,若是打開了windbg以後,整個系統就像死機,不動了。估計是windbg啓動後設定了斷點作調試,試試按F5,或者go這樣就能夠恢復原來的狀態。