借助VMware實現單機使用WinDbg

2022-12-27 00:18:01 字數 3014 閱讀 3997

偵錯程式中,softice可以說是鼎鼎大名。而 microsoft 的偵錯程式 windbg 則有很多 softice 不具備的非常有用的功能。對於從事 windows 系統研究和驅動開發的人來說,windbg 實在是件上好的兵器,值得推薦。

不過要想使用它並不是件容易的事,它需要有兩台計算機,一台除錯,一台被除錯。這個條件對於大多數人來說是非常苛刻的。

今天我們介紹借助vmware實現單機使用windbg進行除錯的方法。

vmware support 中說,自 4.0.18.

0 版本之後的 windbg 都支援了通過 pipe 來進行除錯,不過微軟對此並沒有任何說明。所以,在vmware中虛擬被除錯的系統,然後通過vmware虛擬乙個com埠。使用這個虛擬的埠,就可以用 windbg 進行除錯了。

具體步驟如下:

1 設定 vmware 的虛擬com

1.1 執行 vmware ,點選 "edit virtual machine settings"

1.2 點選 "add..." 來執行 vmware 的 hardware wizard

1.3 選擇 "serial port",點 "下一步"

1.4 選擇 "output to named pipe",點 "下一步"

1.5 第一框裡保持預設的 "\\.\pipe\com_1"

第二框裡選"this end is the server."

第三框裡選"the other end is an application."

選中 "connect at power on"

然後點選 "advanced>>"

1.6 選中 "yield cpu on poll"(vmware support 中提到了這一點),然後點完成。

1.7 這樣就完成了虛擬com的設定。

1.8 重新啟動一下。

2 設定 vmware 虛擬出來的 guest os

現在 power on 虛擬出來的 guest os

2.1 設定

在c:\下,可以找到可以用記事本開啟它。我們需要在 guest os 的啟動項上加些引數,才能夠使用windbg除錯它。

我們可以在現有的行後面直接加引數,不過強烈推薦複製乙個新行,在新行的後面加引數。這樣在除錯啟動有問題的時候,我們可以方便的換回原來的啟動方式。下面就是我改好的

其中 " multi(0)disk(0)rdisk(0)partition(1)\winnt="microsoft windows 2000 professional" /fastdetect "

是原來的行。

" multi(0)disk(0)rdisk(0)partition(1)\winnt="microsoft windows 2000 professional - debug" /fastdetect /debug /debugport=com1 /baudrate=115200 " 是我新加的將來用於 windbg 除錯的行。

[boot loader]

timeout=10

default=multi(0)disk(0)rdisk(0)partition(1)\winnt

[operating systems]

multi(0)disk(0)rdisk(0)partition(1)\winnt="microsoft windows 2000 professional" /fastdetect

multi(0)disk(0)rdisk(0)partition(1)\winnt="microsoft windows 2000 professional - debug" /fastdetect /debug /debugport=com1 /baudrate=115200

這裡還要注意的是,timeout不要為0,否則直接啟動預設的項。新行後面加上了引數 /debug /debugport=com1 /baudrate=115200 ,可以看到 debugport=com1 ,baudrate=115200 。引數的具體作用,可以參考 windbg 的幫助檔案。

2.2 設定com1埠的速度

在 guest os 的裝置管理器中把com1埠的速度也就是"每秒位數"項,設為和上面一樣的115200。

3 設定 windbg

我們需要告訴windbg通過pipe進行連線和連線的速度。可以在命令提示符(下加引數

-k com:port=\\.\pipe\com_1,baud=11520,pipe 執行windbg(vmware support 中沒有提到 baud=11520 這個引數,其實這是個比較重要的引數)。

更方便的方法是在桌面建立乙個windbg的快捷方式,在該快捷方式的屬性,"目標"框中,加上引數 -k com:port=\\.\pipe\com_1,baud=11520,pipe 。

這樣執行這個快捷方式啟動的windbg就完成了設定。引數的具體作用,可以參考 windbg 的幫助檔案。

4 推薦的操作順序

4.1 首先執行 vmware ,啟動 guest os ,到系統啟動選擇,選擇 "microsoft windows 2000 professional - debug" 項,先不要按回車。

4.2 通過剛才設定好的快捷方式執行windbg。

4.3 在 guest os 中選擇 "microsoft windows 2000 professional - debug" 項,按回車。

4.4 稍等片刻,就連線上了。如果很長時間沒有連線上的話,可以按 windbg 選單中的 "debug"->"kernel connection"->"resynchronize"。

4.5 最後按 windbg 選單中的 "debug"->"break" ,你就可以向 windbg 下命令了。

其他 5.1 vmware support 中還提到了可以通過修改虛擬機器的配置檔案來改變虛擬串列埠的速度,有興趣的話可以參考 vmware support 中的方法。

5.2 windbg 的選單項 "view"->"show version" 可以看到一些相關資訊。

參考 driver debugging with windbg and vmware

vmware support 相關部分

單機遊戲如何才能實現品牌與盈利

你覺得在今後的數年裡手機單機遊戲和網路遊戲誰將在中國內地成為主流?楊總,對於手機單機遊戲和網遊您更看好哪乙個發展前景?我比較看好網遊,我們公司的產品主線也將放在 遊戲上面。你怎麼看待未來單機遊戲市場?貴公司是否還會繼續單機遊戲的研發?單機遊戲是我們手機娛樂不可或缺的部分,所以我們公司還是會有單機遊戲...

傳統品牌借助網路渠道分銷實現業績倍增秘籍

課程背景 2013年 雙11以350億的交易額,再次引發了一場零售行業的巨大變革。電子商務為傳統品牌企業的渠道運營創造了乙個全新的商業環境,而隨著電子商務的發展,傳統企業 上的運營逐漸從店鋪管理模式轉變為品牌管理模式,全網分銷已成為其發展電商的必然趨勢。你想知道一家以oem 訂單出口為主的服裝企業,...

如何使簡單機械更高 教學設計

二 自主 找出因素 1 實驗 學生四人一組進行實驗,做到分工明確 記錄員1人 發言人1人 實驗員2人 1 分別對滑輪 斜面的機械效率影響因素作出猜想。2 各個小組分析猜想合理性,驗證合理的猜想。3 各小組設計實驗方案,選擇合適器材 有些器材可以到講台上自取 3 各小組完成實驗,得出結論。4 最後由發...