前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用VS2012调试ReactOS源码

使用VS2012调试ReactOS源码

作者头像
战神伽罗
发布2019-07-24 14:37:46
1.5K0
发布2019-07-24 14:37:46
举报

一. 下载并安装VS2012

我安装的是VS2012_ULT_chs.iso, 网上随便下载

二. 下载并安装WDK8.0

下载地址: http://msdn.microsoft.com/zh-cn/windows/hardware/hh852365

安装完之后打开VS2012, 会发现新建项目中多了一些Driver项目, 菜单栏上也多了一个菜单项DRIVER

三. 下载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/

下载RosBE-2.1.1.exe, 安装完之后记得导入生成的注册表文件, 然后把bin目录添加到环境变量path中

我的安装路径为D:\ProgramFiles\RosBE, 把D:\ProgramFiles\RosBE\Bin添加到环境变量path中

五. 用RosBE命令行编译ReactOS源码

1. 双击ReactOS Build Environment进入编译环境, 因为安装RosBE时选择了ReactOS源码位置, 所以自动进入了D:\ReactOS

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恢复虚拟机运行, 然后在虚拟机中随便运行一个程序创建新的进程, 则虚拟机会中断到刚才设置的断点位置, 开始调试吧 !!!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一. 下载并安装VS2012
  • 二. 下载并安装WDK8.0
  • 三. 下载ReactOS0.3.15源码
  • 四. 下载并安装RosBE2.1.1
  • 五. 用RosBE命令行编译ReactOS源码
  • 六. 用VS2012编译ntoskrnl模块
  • 七. 制作ReactOS安装盘
  • 八. 用VirtualBox安装ReactOS
  • 九. 建立调试环境
  • 十. 调试ReactOS源码
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档