以前見他們調試驅動程序之類的都是使用的VMWare, 我沒怎么用這軟件, 感覺這軟件有點臃腫, 后台服務掛得太多了, 感覺不爽, 於是就沒搞它.
加上電腦上很早就裝有Oracle的Virtual Box, 於是就看了下, 其實Virtual Box也有支持串口設備, 按理說也可以用Windbg進行連接的. 一直覺得Virtual Box挺好用的.
既然寫了這篇博客, 那就證明我確實已經成功地進行調試了.
下面說下步驟吧(已經完成的就忽略吧):
(如果圖片顯示不完整, 請在右鍵菜單中查看該圖片)
1.安裝Virtual Box虛擬機
官方網址:https://www.virtualbox.org/
在左邊找到Downloads標簽, 選擇合適自己平台的安裝包就行了(可比VMWare小多了).
這軟件自帶中文語言包, 且說是開源+免費軟件, 所以不要到其它地方去找什么破解, 綠色之類, 搞得不好反倒弄一身的XX.
2.安裝虛擬機操作系統
對於VBox安裝虛擬機操作系統, 百度一下, 太多了...百度吧.
我安裝的操作系統是XP_SP3, 新手嘛, 還是從"低級"的東西慢慢學起.
3.對虛擬機中的操作系統進行額外的設置
常規的設置,比如內存大小, 顯存大小等, 請酌情分配就行.
3.1 對串口的支持設置(需要在關機的條件下設置)
注意管道的命名規則, 否則會創建失敗.
3.2 在虛擬機和實機之間共享文件
第一種辦法(目錄共享):
第二種辦法(簡單方便, 但貌似會使電腦出現拖放問題):
3.3 修改操作系統配置文件以啟動調試模式
在虛擬機中, 找到 C:\Windows\boot.ini(隱藏,只讀),在最后加上一行:
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /debug /debugport=com1 /baudrate=115200
/debugport=com1就是上面創建的管道的命名后面的部分:\\.\pipe\com1,/baudrate=115200表示設置波特率(這個可以大點,速度快些,但不能隨便亂設置)
/debug 表示啟用調試
修改后大概是這樣的:
[boot loader]
timeout=5
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="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /debug /debugport=com1 /baudrate=115200
重啟虛擬機, 選擇第2項啟動菜單進入調試模式:
4. 配置Windbg進行調試
4.1 下載符號文件(如果沒有)
1) 到http://msdn.microsoft.com搜索下載
2)到http://msdn.microsoft.com/en-us/windows/hardware/gg463028.aspx
我下載的是Windows XP with Service Pack 3 x86 checked symbols, all languages (File size: 202 MB)
自己按需下載吧.
4.2 新建一批處理腳本文件(雙機調試.bat)
內容如下:
@echo off ::調試Windbg的路徑(有空格請加上雙引號) set Windbg="I:\Dynamic Debug\WinDbg v6.11.0001.404 X86\windbg_EN.exe" ::設置命令行參數 ::其中com:port=\\.\pipe\com1是上面創建的管道. 波特率設置要一致 ::-y H:\Cache\symbols表示調試符號文件的路徑 set Param=-b -k com:port=\\.\pipe\com1,baud=115200,pipe -y H:\Cache\symbols ::打開調試 start "" %Windbg% %Param% goto :eof
附圖:
保存后, 直接雙擊打開該bat腳本文件即可打開WinDbg並調試虛擬機(先要打開虛擬機並進入調試模式)
一開始虛擬機可能處理未響應狀態(被調試), 按照上面的說明, 在下面的命令行中執行命令g即可繼續.
之后通過共享文件的方式, 加載相應的驅動/程序, 通過手動下斷點的方式進入調試:
在驅動中手動加入斷點:
#if DBG
__asm int 3
#endif
即可使虛擬機掛起到調試狀態了.
女孩不哭(QQ:191035066)@2013-01-02 10:34:47 http://www.cnblogs.com/nbsofer