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輸出資訊告訴我們兩個系統已經連線上了:
更新下:
"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虛擬機器才需要)