|
|
Community > ReactOS Newsletter Archive > ReactOS Newsletter: 时事通讯 67 期时事通讯 67 期by Z98 on 2009-12-09 调试上次讨论WinDBG 的支持是在将近一年前。所需的第一步骤是一个能够与 WinDBG 兼容的内核,并已经通过两年前的主要结论所完成的内核重写所完成。所需的功能多半围绕在处理正在执行线程的上下文已经读取虚拟内存。虽然内核重写使得这些功能成为可能,有几个错误却阻碍它们的使用。调试需要中断正在执行线程的流程但也必须还原它以便让程序继续。其中一个错误居然损坏执行上下文并最终导致所调试的结果都崩溃。另一个问题是在 HAL(硬件抽象层) 试图使用内存管理器来映射到第一个实体页面。这样的做法最终失败,这是由于内存管理器的函数也做了一些额外的同步,然而当硬件抽象层正在运行于调试的情况下时再重启后却无法正确地运作。这是因为当在这种调试的情况下,没有一个所执行的同步是需要的,并且有个已经由其他东西所锁定一些可能有问题的风险。这也可能造成系统死机。有了这些和其他的修正后, Stefan 能够连接ReactOS 的内核到 WinDBG 并执行操作如设置和清除断点,读取 I/O(输入、输出)和内存。可是,连接到 ReactOS 需要使用Windows 2003 的KDCOM 驱动。 Stefan 使用Windows 2003 KDCOM 驱动的原因是ReactOS KDCOM 在当时 Stefan 开始他的工作根本不能运作。虽然 Timo Kreuzer 的努力让它兼容,它还不到那个可以让 Stefan 依赖的程度并也还未找出KDCOM 和内核之间的失败位置。在同时,Stefan 有了对 WinDBG 的支持产生兴趣,也为此 Timo 恢复他的工作在ReactOS KDCOM 于 x64 的分支。一系列的时序问题造成缺失字符以及掉包的问题,尤其是在较大的包。这导致驱动程序相对的不稳定。Timo 已经增加额外的错误的检测以及处理以便补偿这些问题。其中一个怪时序问题是试图写出到串行端口会失败,并且是由于该设备声称它还未准备发送,尽管检查其状态后已返回“就绪”。Timo 的现有修正只不过是增加一个延时以便让串行端口有足够的时间接受数据,可是这个方案并非完美。Timo 当前的测试平台是Virtual Box,在历史上对串行的输出是很有问题的。在使用 VirtualBox 时只是获取常用的调试输出从ReactOS 都需要花测试者一些时间去断定该信息并且过后有时信息的格式也被完全的混乱了。Virtual Box 工程似乎规划重写他们的串行实现,并希望这将解决我们工程所经历的问题并且允许更可靠的测试于KDCOM 和 WinDBG。 top壳用户所互动的壳,其实是数个组件捆绑在一起,这也是重写为何是无关紧要的。除了资源管理器的壳本身,只是举例一些,那里也有shell32, browseui, comctl32, 和 shlwapi 库。 Andrew Hill 已经花费上几个月的时间研究在Windows壳的系统和ReactOS 所缺失的是什么。他已经成功让数个与壳相关的库以及explorer_new,所计划现有 ReactOS 的壳替代品,能够在Windows XP 使用 Visual Studio 来编译它。这将允许他找出所缺少的功能以及现有功能所缺少的部分。其中一个例子是缺乏开始菜单,其中一个菜单不被 user32 所管理。 新开发者Andrew Hill 是在上已经被提起的人物,并且已经在数月的时间跟了工程进出。他虽然选择不在焦点的范围,这是因为他正在进行他自己初始的研究。他起初与Ged Murphy 合作来开始并最近开始提交一些他自己劳动的成果。他的IRC 昵称是ash77,但更有可能的是 “|away”(离开)的标记将会附加到它,无论其真正是缺席或存在。 另一位新的开发者加入团队是Giannis Adamopoulos,在 IRC 名为smiley_。Giannis 这段时间经常都在IRC 。他先在的主要兴趣是在 Win32 子系统的内核部分并且将帮忙实现所缺少的功能。 最近所增加的新人才肯定会帮助ReactOS 的进展,虽然工程仍然有许多工作可以使用帮助。我们正处于重写旧,破碎的组件已经充分的完成以便增加新功能。这些新增将会帮助ReactOS 更加兼容,但是有限的人手下,就只能完成这么多。希望随着工程本身成熟后新开发者的数量也能够继续增长。 top |