livekd给调试器传递一个模拟的崩溃转储文件,因此在livekd中可以执行和分析转储文件时一样的命令。
由于livekd依赖物理内存来支持模拟的崩溃转储,内核调试器可能会碰到数据结构处于中间态的情况。每次调试器启动时,都会创建一个新的系统状态视图。如果需要刷新系统状态,可以通过q命令退出调试器,livekd会询问你是否需要重新启动调试器。如果调试器一直在输出内容,可以通过ctrl+c中断。如果调试器挂起,可以通过ctrl+break终结调试器进程。livekd会询问你是否重新启动调试器。
windows软件开发包
windows软件开发包(Windows Software Development Kit SDK)是msdn订阅的一部分,也可以通过msdn.microsoft.com来下载。除了调试工具,它还包含了文档,头文件和库,用于编译和链接windows程序。(vc也附带有一份,但是不如sdk的新)。有些工具还提供了源码。\Program Files\Microsoft SDKs\Windows\v7.0A\Include下的头文件对了解内部机制有一定帮助。
windows 驱动开发包
windows驱动开发包(Windows Driver Kit WDK)是msdn订阅的一部分,也可以通过网络下载。
WDK供驱动开发者使用,同时也是系统内部信息的丰富来源。第二部分第8章讲述io架构,驱动模型,基础驱动程序数据结构,但是并没有讲述内存支持函数的细节。WDK对这些函数有详细描述。
wdk中的某些头文件(ntddk.h ntifs.h wdm.h)定义了关键的内部数据结构和常量以及内部系统例程的接口。当利用调试器探索windows内部结构时,这些文件会非常有用。本书中虽然描述了数据结构的布局和内容,但并没有精确到字段。在wdk中有精确描述。
如果想进一步了解io系统和驱动程序,请参考wdk,特别是Kernel-Mode Driver Architecture Design Guide 和Reference 。还有两本参考书Programming the Microsoft Windows Driver Model,Second Edition by Walter Oney (Microsoft Press, 2002) and Developing Drivers with the WindowsDriver Foundation by Penny Orwick and Guy Smith (Microsoft Press, 2007).
sysinternal的工具
本书中用到了很多sysinternals的免费工具。大部分工具,是由本书作者的之一mark russinovich编写的。其中最受欢迎的有 process exploer,process moniter.由于大部分工具需要安装驱动,需要管理员权限来运行。
sysinternals的大部分工具都在经常更新,我们推荐你订阅它的blog以获取最新消息。
Windows Sysinternals Administrator’s Reference(Microsoft Press, 2011)介绍了如何使用这些工具并用他们来解决实际问题和一些案例研究。
你也可以去sysinternals的论坛进行讨论和提问。
总结
本章,我们介绍了书中用到的关键概念和术语,对很多工具也有了初步了解。现在我们准备了解系统内部设计,从系统架构和关键组件的概要开始。