ReactOS - debug

这个只是纪录个流水账,据说ReactOs跟windows长得很像,又有人说它是
抄袭的NT/2k的代码(早期版本0.2.9(包括)之前),ROS开始检查代码,然后
框架好像都变化了.
看雪上面有篇文章调试的用的fdebug,0.3.7以后的版本增加了个GUI界
面的Rosdbg.exe,可以查看相应的变量之类.我是用的vmware做的测试.
版本version 6.5.2 build-156735,ReactOs做成iso装系统也快.

好了,下面开始了.


首先我们必须要下载一份最新的source.为了方便我们编译,

ReactOs为我们提供好了编译环境,我们只需要下载个编译环境就可以了.
具体的下载位置,http://www.reactos.org/wiki/ReactOS_Build_Environment
它提供了2个平台的编译一个win一个unix的.当然我们在win平台下面编译也就
只用下载win的,目前最新的版本的是version 1.4.4,还有64位平台的,跟我们
这次的没相关.安装的过程需要说明下,不要选择认的目录,不要有空格的文件
我是直接安装在根目录下面的,包括他的basedir也是直接安装在根目录.

安装完以后直接运行ReactOS Build Environment.这个就是认的下载文件
一般为reactos,运行下help显示帮助.

ssvn [OPTIONS] - Create,update or clean-up your ReactOS source
tree or show the revision number of the local
and online trees.
这样我们只要输入ssvn Create就可以了程序就认帮我们下载ReactOs的source
了.以后你也可以通过ssvn update来生机或者clean-up来清理.
下好以后我们就需要编译了.因为我们需要调试,所以编译需要增加些参数.因为
需要用Rosdbg调试,所以生成内容就不一样.具体的可以参看.
http://www.reactos.org/wiki/ReactOS_Remote_Debugger
我这里就直接写了,直接在下载好的目录运行 make ROS_BUILDNOSTRIP=yes bootcd
接下来,你可以去打几把游戏或者看部碟了,因为这个过程是相当的慢,我的机器编译
了快1个小时.
如图1:

接下来就是把编译生成的ReactOS.iso放到虚拟机里面去安装了.过程挺简单,装系统
的时间也不算长,但是有点要注意,在虚拟机里面装显卡驱动的时候,可能会卡住,这个我
看了下论坛说是要不停的重新启动,然后在某一次的安装就可以通过了.这个我确实遇到
了,另外就是有人说在虚拟机里面安装的时候,选择系统不要选择xp选择nt就可以了,后来
删除了镜像,选择nt,也能够顺利进行,后来要我放入光盘安装vmware tools,我直接点的取消.
接下来就是配置虚拟机了,跟windbg的调试一样添加串口,不过名字要修改\\.Pipe\RosDbg
选择
This end is the client
The other end is a virtual machine.
http://www.reactos.org/wiki/ReactOS_Remote_Debugger 这个也有截图可以参考.
Yield cpu on poll这个可以不用勾选.

系统安装完以后启动系统有几个选择项目给你选择.
如图2:

我们用RosDbg所以也只关系这个,早期的应该用的(Debug)这个选择项目.我们需要编译
下我们的连接工具.Rosdbg
还是上面的http://www.reactos.org/wiki/ReactOS_Remote_Debugger,用乌龟TortoiseSVN下载:
svn://svn.reactos.org/reactos/trunk/tools/reactosdbg

下载好以后就可以直接用vs2008编译了.如果不想编译的话上面也提供了直接运行的
程序,不过你的极其需要装dotnetfx35来支持,不然运行程序出错.
我们把编译好的程序直接放到ReactOs的目录下面,建个文件夹叫Rosdbg.exe,然后运行程序
RosDBG.exe,然后选择菜单Debug,Connect,认的连接方式Named Pipe,Type认的Server也就可以
了.程序的左小角可以看到连接的模式以及状态.

我们开好以后,就在运行刚才的虚拟机,启动Reactos系统,到了选择菜单,下面的State已经
变成绿色的:Debug显示了然后选择第3项(RosDbg)启动.接下来你就可以看到RosDbg里面Console
页面显示的一些信息了.
如图3:


接下来你就可以在kdb窗口里面下命令了,具体的可以参看:
http://www.reactos.org/wiki/Kdbg

如果要下断点Tab+k就可以了,类似SoftIce里面的Ctrl+D,windbg里面的ctrl+Break.接下你就可以
下命令做你想做的事情了.
它的bpx命令似乎只支持地址,不支持Api名字,所以有点头疼.另外它的Rosdbg里面有对源码目录
设置但是目前还不知道如何显示源码进行调试.不像windbg调试wrk可以直接选择源代码下断点,这个
目前似乎没有,也许我没找到方式.如果有知道的朋友也可以交流下.如果能够在源码的情况下调试那就
更爽了.另外他的操作几乎都是要下命令的方式,不支持键盘的快捷键的方式,如果有可能希望它能够
改进下就好了.reactos似乎也支持windbg的调试方式,但是好像不太全面,所以也没测试.

就写这么多了,希望有知道如何源码调试的朋友能够告诉下,呵呵.我也不知道它那断点下 做什么用的,难道是crash的时候才用??不然我哪里知道要下到哪里?

相关文章

react 中的高阶组件主要是对于 hooks 之前的类组件来说的,如...
我们上一节了解了组件的更新机制,但是只是停留在表层上,例...
我们上一节了解了 react 的虚拟 dom 的格式,如何把虚拟 dom...
react 本身提供了克隆组件的方法,但是平时开发中可能很少使...
mobx 是一个简单可扩展的状态管理库,中文官网链接。小编在接...
我们在平常的开发中不可避免的会有很多列表渲染逻辑,在 pc ...