Debugging Tools for Windows

!analyze

!analyze 扩展显示当前异常或bug check的信息。

语法

用户模式

!analyze [-v] [-f | -hang] [-D BucketID
!analyze -c [ -load KnownIssuesFile | -unload | -help ]

内核模式

!analyze [-v] [-f | -hang]  [-D BucketID
!analyze -c [ -load KnownIssuesFile | -unload | -help ]
!analyze -show BugCheckCode [BugParameters

参数

-v
显示详细输出。
-f
生成!analyze 的异常输出。即使调试器未检测到异常时也可以使用该参数来查看异常分析。
-hang
生成!analyze 的挂起程序输出。也可以在目标经历了bug check或者异常之后使用该参数,但是用于进行挂起状态分析会和问题相关性更高。内核模式下,!analyze -hang 会调查系统持有的锁并且扫描DPC队列。用户模式下,!analyze -hang 对线程堆栈进行分析,以查看是否某些线程阻塞了其他线程。

在用户模式下运行该扩展之前,要考虑将当前线程变为被认为停止响应(即,挂起)的那个线程,因为异常可能造成当前线程改变。

-D BucketID
仅显示和指定的BucketID 相关的项。
-show
显示指定的bug check代码的信息。
-c
当调试器遇到已知问题时,继续执行。如果该问题不是"已知"的,则调试器仍然保持中断目标的状态。

-c选项可以和下面的子参数一起使用。这些子参数可以配置已知问题的列表。它们本身不会造成执行。至少执行!analyze -c -load 一次, !analyze -c 才会起作用。

-load KnownIssuesFile
加载指定的已知问题文件。KnownIssuesFile 指定该文件的路径和名字。这个文件必须是XML格式的。可以在调试器安装目录的sdk\samples\analyze_continue 子目录中找到示例文件。 (必须完整安装Windows调试工具包才能包含该文件。完整安装的更多信息,查看安装调试器。)

KnownIssuesFile 文件中的已知问题列表将会用于之后的所有!analyze -c 命令,直到使用!analyze -c –unload,或者再次使用 !analyze -c -load (这时,新数据会覆盖掉旧的数据)。

-unload
卸载当前的已知问题列表。
-help
调试器命令窗口中显示!analyze –c扩展命令的帮助文本。
BugCheckCode
指定要显示的bug check代码。
BugParameters
指定最多4个bug check参数。以空格分隔这些参数。这些参数使得以后的搜索更加精练。

DLL

Windows 2000 Ext.dll
Windows XP 和之后 Ext.dll

注释

用户模式下,!analyze !analyze -v 扩展显示当前异常的信息。

内核模式下,它们显示最近的bug check的信息。如果发生了bug check,会自动产生!analyze 的显示。可以使用!analyze -v 来显示更多信息。如果只需要查看基本的bug check 参数,可以使用.bugcheck (Display Bug Check Data)命令。

可以使用!analyzebugcheck -show 扩展命令来单独显示bug check 代码的信息。这些信息不受目标机当前状态的影响。

这是一个断点中断时的!analyze 结果示例。

0:000> !analyze
Last event: Hit breakpoint 10000

附加信息

用户模式异常和内核模式停机错误(即崩溃)的示例分析、以及!analyze 如何使用triage.ini 文件的更多信息,查看使用 !analyze 扩展

Build machine: CAPEBUILD