1. 程式人生 > 實用技巧 >windbg+VM 設定核心除錯環境

windbg+VM 設定核心除錯環境

虛擬機器是XP情況:

啟動項新增除錯啟動,並設定波特率為115200

具體操作可在boot.ini中新增如下程式碼:

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="MicrosoftWindows XP Professional" /noexecute=optin /fastdetect /debug/debugport=com1 /baudrate=115200


虛擬機器是WIN7 WIN8情況:

1.啟動一個管理員許可權的命令列視窗.

2.執行如下命令將當前的啟動入口複製一份

bcdedit /copy {current} /d "Kernel Debug"


其中雙引號重的字串為新啟動入口的名稱如果執行成功顯示類似如下的資訊:

“已將該項成功複製到 {f349d9f9-660a-11e1-892b-b9453034af9f}。”

花括號中的內容是新啟動入口的GUID,用來唯一標識這個啟動入口。

3.執行如下命令對這個啟動入口啟動核心除錯:

bcdedit /debug {f349d9f9-660a-11e1-892b-b9453034af9f} on

4.設定目標主機與主機間的通訊引數

bcdedit /set {f349d9f9-660a-11e1-892b-b9453034af9f} debugtype serial

bcdedit /set {f349d9f9-660a-11e1-892b-b9453034af9f} debugport 1

bcdedit /set {f349d9f9-660a-11e1-892b-b9453034af9f} baudrate 115200

5.執行bcdedit 列出剛剛建立的啟動項和引數,確認以上設定都已經被記錄下來。

設定完成以後可以通過CMD-> msconfig的引導來檢視結果 如圖



vmware中的設定:

1開啟相應 vmware虛擬機器上的 “Virtaul Machine Settings“


2. “Hardware”選項中 ----> 點選“Add" 新增一個串列埠裝置 SeriallPort


3."Next",在 "Serial Port" 裡選中 “Output to named pipe"


4. "next",然後如下設定


5. 確定之後,回到如下介面,在右腳"Virtual Machine Settings"頁面時,在“I/O Mode”裡選中“Yield CPU on poll“


6. Ok之後就設定完畢了。


Windbg設定

建立windbg的一個桌面快捷方式,然後,右鍵->屬性,在目標中的引號後面新增如下:

-b -k com:pipe,port=\\.\pipe\com_1,resets=0

示例如下:

"C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x86\windbg.exe" -b -k com:pipe,port=\\.\pipe\com_1,resets=0


操作方式提示

如果在虛擬機器系統啟動過程中,如果打開了windbg之後,整個系統就像宕機,不動了。估計是windbg啟動後設定了斷點做除錯,試試按F5,或者g這樣就可以恢復原來的狀態。


多系統同時除錯的設定

比如想同時開啟3個WINDBG除錯VM中的XP,win7,win8.可以想象成有一臺配置很強大的PC假定他為PC_A 他有3個串列埠,還有3臺PC 每臺PC只有一個串列埠,假定他們為PC_1,PC_2, PC_3現在需要讓PC_A同時通過串列埠除錯連線其他3臺PC進行除錯, 需要注意的地方有以下幾點:

1.每個虛擬系統中設定都和以前一樣,都設定為com1,這個可以理解為每個系統都只有一個串列埠裝置,當然都是com1了

2.在vmware中的設定有變化,他直接對應的是PC_A,它有三個串列埠,所以設定分別為\\.\pipe\com_1 \\.\pipe\com_2 \\.\pipe\com_3分別對應了PC_1 PC_2 PC_3的串列埠,這樣一來PC_A就模擬出了3個串列埠,且分別和PC_1 PC_2 PC_3對應起來了具體如圖:





3.設定windbg,以前是建立一個windbg的快捷方式,現在是建立3個分別設定為

"C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x86\windbg.exe" -b -k com:pipe,port=\\.\pipe\com_1,resets=0

"C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x86\windbg.exe" -b -k com:pipe,port=\\.\pipe\com_2,resets=0

"C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x86\windbg.exe" -b -k com:pipe,port=\\.\pipe\com_3,resets=0

具體如圖:





這樣除錯相應的PC_X時執行相應的圖示即可



轉載於:https://blog.51cto.com/whatday/1382654