我安裝的是VS2012_ULT_chs.iso, 網上隨便下載react
下載地址: http://msdn.microsoft.com/zh-cn/windows/hardware/hh852365windows
安裝完以後打開VS2012, 會發現新建項目中多了一些Driver項目, 菜單欄上也多了一個菜單項DRIVERapp
下載地址: http://download.reactos.org/reactos/ReactOS/0.3.15/函數
下載ReactOS-0.3.15-REL-src.zip, 解壓縮到D:\ReactOS工具
下載地址: 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
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
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
在第六步中, 其實咱們用VS20120編譯工程bootcd也能夠生成bootcd.iso, 可是不知爲什麼在虛擬機中不能引導安裝, 所以咱們須要第五步生成的bootcd.iso
1. 用光盤映像編輯工具(UltraISO)打開第五步生成的bootcd.iso
2. 用第六步生成的ntoskrnl.exe和window 2003系統中的kdcom.dll替換bootcd.iso中的同名文件, 保存生成新的bootcd.iso
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捕獲該中斷
1. 在VS2012中打開源碼文件 D:\ReactOS\ntoskrnl\ps\process.c, 在函數PspCreateProcess處按F9下斷點
2. 按F5恢復虛擬機運行, 而後在虛擬機中隨便運行一個程序建立新的進程, 則虛擬機會中斷到剛纔設置的斷點位置, 開始調試吧 !!!