现在的位置: 首页 > 综合 > 正文

ReactOS – debug

2013年04月19日 ⁄ 综合 ⁄ 共 2458字 ⁄ 字号 评论关闭

这个只是纪录个流水账,据说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的时候才用??不然我哪里知道要下到哪里?

抱歉!评论已关闭.