使用VS2012調試ReactOS源碼

一. 下載並安裝VS2012

我安裝的是VS2012_ULT_chs.iso, 網上隨便下載react

 

二. 下載並安裝WDK8.0

下載地址: http://msdn.microsoft.com/zh-cn/windows/hardware/hh852365windows

安裝完以後打開VS2012, 會發現新建項目中多了一些Driver項目, 菜單欄上也多了一個菜單項DRIVERapp

 

三. 下載ReactOS0.3.15源碼

下載地址: http://download.reactos.org/reactos/ReactOS/0.3.15/函數

下載ReactOS-0.3.15-REL-src.zip, 解壓縮到D:\ReactOS工具

 

四. 下載並安裝RosBE2.1.1

下載地址: http://download.reactos.org/reactos/RosBE-Windows/i386/2.1.1/ui

下載RosBE-2.1.1.exe, 安裝完以後記得導入生成的註冊表文件, 而後把bin目錄添加到環境變量path中編碼

個人安裝路徑爲D:\ProgramFiles\RosBE, 把D:\ProgramFiles\RosBE\Bin添加到環境變量path中spa

 

五. 用RosBE命令行編譯ReactOS源碼

1. 雙擊ReactOS Build Environment進入編譯環境, 由於安裝RosBE時選擇了ReactOS源碼位置, 因此自動進入了D:\ReactOS.net

 

2. 輸入configure.cmd生成目錄output-MinGW-i386命令行

 

3. 輸入cd output-MinGW-i386\host-tools, 進入D:\ReactOS\output-MinGW-i386\host-tools, 輸入make 編譯生成tools

4. 輸入cd ..\reactos, 輸入make bootcd, 編譯生成bootcd.iso

 

六. 用VS2012編譯ntoskrnl模塊

1. 打開VS2012 X86命令行工具, 進入D:\ReactOS, 輸入configure.cmd VSSolution生成目錄output-VS11-i386



 

2. 下面這些文件夾或者文件須要修正一下, 不然在編譯過程當中會由於編碼問題出現錯誤

下載地址: http://download.csdn.net/detail/ayang1986/7731527

 

. kbdcz
D:\ReactOS\dll\keyboard\kbdcz\kbdcz.c

 

. kbdhu
D:\ReactOS\dll\keyboard\kbdhu\kbdhu.c

 

. butterflies
D:\ReactOS\modules\rosapps\applications\screensavers\butterflies\lang

 

. ctm
D:\ReactOS\modules\rosapps\applications\sysutils\ctm\lang

 

. cylfrac
D:\ReactOS\modules\rosapps\applications\screensavers\cylfrac\lang

 

. kernel32
D:\ReactOS\dll\win32\kernel32\winnls\nls

 

. matrix
D:\ReactOS\modules\rosapps\applications\screensavers\matrix\lang

 

. mazescr
D:\ReactOS\modules\rosapps\applications\screensavers\mazescr\lang

 

. ntvdm
D:\ReactOS\subsystems\ntvdm\lang

 

. starfield
D:\ReactOS\modules\rosapps\applications\screensavers\starfield\lang

 

. usetup
D:\ReactOS\base\setup\usetup\lang

 

3. 進入D:\ReactOS\output-VS11-i386\host-tools, 打開工程文件REACTOS.sln, 編譯生成ALL_BUILD

 

4. 進入D:\ReactOS\output-VS11-i386\reactos, 打開工程文件REACTOS.sln, 編譯生成ALL_BUILD(漫長的等待...........................................................................................)



 

由於咱們只用到工程ntoskrnl生成的ntoskrnl.exe, 因此也能夠只編譯生成工程ntoskrnl, 以節約時間 !



 

5. 如今D:\ReactOS\output-VS11-i386\reactos\ntoskrnl\Debug目錄下應該已經生成了ntoskrnl.exe和ntoskrnl.pdb

 

七. 製做ReactOS安裝盤

在第六步中, 其實咱們用VS20120編譯工程bootcd也能夠生成bootcd.iso, 可是不知爲什麼在虛擬機中不能引導安裝, 所以咱們須要第五步生成的bootcd.iso

 

1. 用光盤映像編輯工具(UltraISO)打開第五步生成的bootcd.iso

 

 

2. 用第六步生成的ntoskrnl.exe和window 2003系統中的kdcom.dll替換bootcd.iso中的同名文件, 保存生成新的bootcd.iso

 

八. 用VirtualBox安裝ReactOS

1. 下載並安裝VirtualBox, 我使用的是VirtualBox-4.3.12-93733

2. 新建虛擬機, 選擇載入第七步生成的bootcd.iso

 

3. 設置串口參數

 

4. 啓動虛擬機, 安裝ReactOS, 建議選擇English版本進行安裝. 安裝過程當中會重啓一次, 按照步驟來就行了

5. 安裝完成後啓動進入選擇界面, 選擇ReactOS (Debug)啓動

 

 

九. 創建調試環境

1. 打開VS2012(Win7, Win8 要以管理員身份運行), 選擇菜單DRIVER -> Test -> Configure Computers, 打開Computer Configuration窗口

 

2. 點擊Add New Computer, 在Computer name:中輸入你真實的計算機的名字(不是虛擬機中計算機的名字), 下邊三個選項選擇最後一項」Manually configure debuggers and do not provision」,手動配置調試

 

3. 按下圖配置調試參數

Connection Type選爲Serial (串口)
(波特率)Baud Rate 115200
 (管道)Pipe勾選
(重鏈接)Reconnect勾選
(管道名)Pipe name  \\.\pipe\com_debug
這幾個選項是根據第八步的虛擬機設置來設置的
最後點擊下一步, 完成。

 

4. 在vs2012中選擇菜單  工具 -> 附加到進程, 打開附加到進程窗口

傳輸:Windows Kernel Mode Debugger
限定符:就是咱們上面添加的計算機名

 

選擇Kernel進程, 點擊附加進入調試狀態



 

5. 在VirtualBox虛擬機中按Tab+K產生中斷, VS2012捕獲該中斷

 

十. 調試ReactOS源碼

1. 在VS2012中打開源碼文件 D:\ReactOS\ntoskrnl\ps\process.c, 在函數PspCreateProcess處按F9下斷點

 

2. 按F5恢復虛擬機運行, 而後在虛擬機中隨便運行一個程序建立新的進程, 則虛擬機會中斷到剛纔設置的斷點位置, 開始調試吧 !!!

相關文章
相關標籤/搜索