调试环境
从WDK 8.0 开始, 驱动开发环境和 Windows 调试器就被继承到Microsoft Visual Studio。
当你安装了Visual Studio 和 WDK, 你就有六种可用的调试环境:
- 集成了Windows 调试器的Visual Studio
- 微软的Windows 调试器(WinDbg)
- 微软的Kernel 调试器(KD)
- NTKD
- 微软的Console 调试器(CDB)
- 微软的NT Symbolic 调试器(NTSD)
note:个人认为上面的windows应该翻译为“窗口”。
下面这部分描叙了调试环境。
集成了Windows 调试器的Visual Studio
从WDK8.0开始, 驱动开发环境和Windows 调试器被继承到Visual Studio。 在集成的环境里,用户需要的关于编码,生成,打包,测试, 调试,及部署驱动绝大部分工具,可以通过Visual Studio用户界面找到。
传统的 kernel-mode 调试需要两台计算机。调试器运行在主计算机上,调试代码运行在目标计算机上。随着Windows调试器集成到Visual Studio中, 你可以在主计算机中执行各种调试任务,如下列表。
- 配置一组目标计算机进行调试。
- 配置和一组目标计算机进行连接调试。
- 在主计算机和目标计算机间,执行内核模式的调试会话。
- 在主计算机上调试用户模式的进程。
- 在目标计算机上调试用户模式的进程。
- 连接远程调试会话。
- 查看汇编代码和源代码。
- 查看和操作局部变量,参数,及其它符号。
- 查看和操作内存。
- 导航调用堆栈。
- 设置断点。
- 执行调试命令。
在Visual Studio 用户界面中,你也可以生成驱动,部署驱动,并运行驱动测试。如果使用Visual Studio 集成环境提供的WDK和Windows调试工具,你可以在目标计算机的Visual Studio里进行几乎所有的驱动开发,打包,部署,测试, 及 调试任务。下面的WDK功能已经集成Visual Studio中。
- 配置一组目标计算机用于驱动测试。
- 创建并签名驱动程序包。
- 部署一个驱动包到目标计算机。
- 在目标计算机上安装并加载驱动。
- 在目标计算机上测试驱动。
WinDbg
微软 Windows 调试器(WinDbg)是一款基于windows平台的强大调试器。它支持用户模式调试和内核模式调试。WinDbg为Windows内核,内核模式的驱动,系统服务,及用户模式应用和驱动提供调试。
WinDbg使用Visual Studio 调试符号格式进行源码级调试。它可以从含有PDB符号文件的模块访问任何标号或变量,还可以访问使用COFF符号文件编译的模块的共有接口(例如:Windows .dbg 文件)。
WinDbg 可以查看源代码,设置断点,查看变量(包括 C++ 对象), 堆栈跟踪,内存。它的调试器命令窗口允许用户发出各种命令。
关于内核模式调试, WinDbg 通常要求两台计算机(主计算机和目标计算机)。WinDbg 对用户模式和内核模式的目标也支持各种远程调试设置。
WinDbg 是CDN/NTSD 和 KD/NTKD 的图形界面副本。
KD
微软的内核调试器(KD) 是一个基于字符的控制台程序,它支持对所有基于NT的操作系统内核模式活动进行深入分析。你可以使用KD调试内核模式组件和驱动,或者监控操作系统自身的行为。KD也支持多线程调试。
通常,KD不会运行在被调试的计算机上。你需要两台计算机(主计算机和目标计算机)来进行内核模式调试。
NTKD
KD调试器的一个别名叫做NTKD。它在各个方面都和KD是一样的,除了在启动是他会生成一个新的文本窗口,而KD则是继承调用它的命令提示窗口。
CDB
微软的控制台调试器(CDB)是一个基于字符的控制台程序, 它支持Windows用户模式内存和构造的低级分析。通过“控制台”这个名称可以看出,CDB是一个控制台应用;但是这并不意味目标应用程序也必须是控制台应用。实际上,CDB完全支持控制台应用和图形窗口应用的调试。
CDB对于调试程序来说是个非常强大的工具,无论它是正在运行,还是最近崩溃(实时分析),而且只需要简单的设置。他可以用于追究一个运行中的应用程序的行为。当应用程序运行失败,CDB可以用来获取堆栈记录或者查看有问题的参数。由于是基于字符的,在整个网络中可以正常运行(使用远程访问服务端)。
通过CDB, 你可以显示并执行代码,设置断点,查看并更改内存中的值。CDB可以对二进制代码进行反汇编并显示汇编指令,从而对二进制代码进行分析。它也可以直接对源码进行分析。
因为CDB通过地址或者全局符号可以反问内存位置,你可以通过名称而不是地址来引用数据和指令,这样可以更直观的定位并调试指定的代码。CDB支持调试多线程和多进程。它是可拓展的,可以读写分页内存和非分页内存。
如果目标应用是控制台应用,那么它将和CDB共享控制台窗口。通过使用 -2 命令行选项,为目标控制台应用产生一个独立的控制台窗口。
NTSD
Microsoft NT Symbolic Debugger(NTSD)是CDB调试器的别名。在各个方面和CDB相同,除了在启动时NTSD会生成一个文本窗口,而CDB则是继承调用它的命令提示窗口。
由于start 命令也可以用于生成一个新的控制台窗口,下面的两个命令将产生相同的结果:
start cdb parameters
ntsd parameters
从NTSD(或CDB)重定向输入和输出,以便内核调试器(Visual Studio, WinDbg, 或 KD)的控制。如果这种技术和NTSD一起使用,那么控制台窗口将完全不会出现。通过内核调试器控制NTSD因此尤其有用,因为它会让调试器及其轻巧,几乎不会给目标应用的计算机增加负担。这种组合可以用具调试系统进程,关闭,及启动的后期阶段。详情,见“通过内核调试器控制用户模式调试器”。
相关问题
Windows 调试

浙公网安备 33010602011771号