1. 程式人生 > >33.Windbg-VMware+windbg搭建雙機除錯(增加virtualKD)

33.Windbg-VMware+windbg搭建雙機除錯(增加virtualKD)

虛擬機器環境

1.xp

虛擬機器用的是XP系統,找到XP系統開啟系統盤(比如C盤),找到Boot.ini,去掉這個檔案的只讀屬性,用記事本開啟Boot.ini
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="WIN XP Debug" /fastdetect /debug /debugport=com2 /baudrate=115200

其中最後一行為自己新加,用於建立一個新的除錯系統,這裡設定的是com2,所以會佔用com2

2.win7

虛擬機器如果是win7,就要用bcdedit進行啟動設定:

我們需要複製一個開機選項, 以進入OS的debug模式

找到cmd,右擊管理員身份執行:

命令為:
bcdedit /copy {current} /d DebugOS
DebugOS可以自己定義. 然後複製得到的ID號


接著增加一個新的選項到引導選單
bcdedit /displayorder {current} {ID}
這裡的{ID}的ID值是剛生成的ID值.


啟用DEBUG : bcdedit /debug {ID} ON


這裡的{ID} 的ID值還是剛才的ID值.


命令執行成功後, 重新啟動機器.或者更簡單的圖形介面設定:在msconfig介面中,選引導,再選高階選項,在選擇除錯、除錯埠、波特率都打上鉤

要刪除也容易了:


看到刪除了吧~~~~~~~~~~~~~~,同時也注意,這裡除錯埠是com1

注意看虛擬機器的右下角:

除錯埠要和通迅埠相同,所以要使用COM2,和命名管道的名字無關,只是window會預設生成同名的命名管道

//---------------------------------分隔線 ---------------------------------------------------------------------------------------------------------------------

虛擬機器設定

關閉虛擬機器系統,並配置其屬性:加一項Serial Port 2


在真實系統中檢視"裝置管理器",在端口裡找到Com1,然後在屬性頁中的“埠設定”修改速率為115200


WinDbg的快捷方式屬性中的“目標(T)”欄裡輸入:

"C:\Program Files\Debugging Tools for Windows (x86)\windbg.exe" -y C:\Windows\Symbols\ -b -k com:port=\\.\pipe\com_2,baud=115200,pipe


使用時,首先執行虛擬機器系統,到bootloader選擇進入哪個系統的時候,按下上下方向鍵倒計時就會停止:


然後再到真實系統中執行剛才建立的WinDbg快捷方式,執行完成後再在虛擬系統中選擇帶有除錯標誌的系統即可。此時回到真實系統,稍等一會就可以看到WinDbg輸出資訊告訴我們兩個系統已經連線上了:


當windbg連線上後按Ctrl+Break中斷, 輸入命令:bu DriverName!DriverEntry(大小寫不限)。然後F5(或者輸入G命令)讓windbg跑起來。 在虛擬機器中使用第三方工具(例如:InstDrv)載入你的驅動檔案並啟動,那麼該驅動檔案的入口函式DriverEntry便會被呼叫。 由於剛才下好了斷點,因此windbg便中斷在了該函式的入口。

更新下:


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

//-----------------------------------------------------------------------------------分隔線-------------------------------------------------------------------------------

1.windows使用虛擬COM串列埠和host主機之間進行資料交換;
2.WinDbg/KD使用VM提供的一個PIPE管道來與目標除錯機進行通訊。
這裡最弱的連線是虛擬COM串列埠,其傳輸速率僅為:115200 baudrate,等效於115200 bit per second,也就是大約10KB/S的傳輸速率。VirtualKD取代了虛擬COM串列埠的功能,極大的提高了資料交換速率,可達6MB/S,但是官方給出的用!irpfind命令測試的話,vmware平臺可達150KB/S,不過已經比虛擬COM串列埠快了15倍了。具體的效果只有在除錯過程當中,才會體會到 -:) 事實上,VirtualKD的主要原理是,利用KD的擴充套件DLL功能,並且向虛擬機器patch一個程序,二者通過pipe來進行通訊。

安裝:

1.http://virtualkd.sysprogs.org/download/下載

2.解壓到本地,把它的target目錄copy到虛擬機器,點選target/vminstall.exe 執行,然後直接安裝即可


3.選擇install以後,按照提示直接重啟。
4.在host主機端開啟vmmon.exe程式(vmmon程式要始終開啟著),設定下windbg路徑


新版的不要勾選"Replace kdcom.dll"(win10虛擬機器才需要)