分析扩展插件的元数据文件

编写分析扩展插件时,还编写一个元数据文件,描述要调用插件的情况。 当 !analyze 调试器命令运行时,它使用元数据文件来确定要加载的插件。

创建一个元数据文件,该文件与您的分析扩展插件同名,并且其扩展名为 .alz。 例如,如果分析扩展插件命名为 MyAnalyzer.dll,则必须将元数据文件命名为 MyAnalyzer.alz。 将元数据文件放置在与分析扩展插件相同的目录中。

分析扩展插件的元数据文件是包含键值对的 ASCII 文本文件。 键和值用空格分隔。 键可以具有任何非空格字符。 键不区分大小写。

在键和随后的空白区域之后,相应的值开始。 值可以具有以下形式之一。

  • 行末尾的任意一组字符。 此窗体适用于不包含任何换行符的值。

    重要 如果元数据文件中的最后一个值具有此形式的值,则行必须以换行符结尾。

  • 大括号 { }之间的任意字符集。 表单适用于包含换行符的值。

以 # 开头的行是注释,将被忽略。 注释只能从预期键的位置开始。

可以在元数据文件中使用以下键。

密钥 DESCRIPTION
PluginId 字符串 - 标识插件。
DebuggeeClass 字符串 - 可能的值为“Kernel”和“User”。 指示插件对仅分析内核模式故障或仅分析用户模式故障感兴趣。
错误检查代码 32 位错误检查代码 - 表示插件有兴趣分析此 错误检查代码。 单个元数据文件可以指定多个 bug 检查代码。
异常代码 32 位异常代码 - 指示插件有兴趣分析此 异常代码。 单个元数据文件可以指定多个异常代码。
ExecutableName 字符串 - 指示插件仅对要分析的进程正在运行的可执行文件的会话感兴趣。 单个元数据文件可以指定多个可执行文件名称。
图像名称 字符串 - 指示插件仅对默认分析认为此图像(dll、sys 或 exe)出错的会话感兴趣。 分析确定哪个图像出现故障后,将调用插件。 单个元数据文件可以指定多个映像名称。
MaxTagCount 整数 - 插件需要的最大自定义标记数。 自定义标记是 extsfns.h 中定义的标记以外的标记。

示例元数据文件

以下元数据文件描述了一个插件,该插件有兴趣分析错误检查代码0xE2。 (请记住,最后一行必须以换行符结尾。)

PluginId      MyPlugin
DebuggeeClass Kernel
BugCheckCode  0xE2

以下元数据文件描述了一个插件,该插件有兴趣分析 bug 检查0x8、0x9 和 0xA,如果 MyDriver.sys 被视为故障模块。

PluginId      MyPlugin
DebuggeeClass Kernel
BugCheckCode  0x8
BugCheckCode  0x9
BugCheckCode  0xA
ImageName     MyDriver.sys

以下元数据文件描述了一个插件,该插件有兴趣分析异常代码0xC0000005,当MyApp.exe是正在分析进程的运行可执行文件时。 此外,该插件可能创建多达三个自定义标记。

PluginId        MyPlugin
DebuggeeClass   User
ExceptionCode   0xC0000005
ExecutableName  MyApp.exe

Windows 调试工具有一个示例,可用于生成名为 dbgexts.dll的调试器扩展模块。 此扩展模块实现多个调试器扩展命令,但它也可以用作分析扩展插件;也就是说,它导出 _EFN_Analyze 函数。 下面是将 dbgexts.dll 描述为分析扩展插件的元数据文件。

PluginId         PluginSample
DebuggeeClass   User
ExceptionCode   0xc0000005
ExecutableName      cdb.exe
ExecutableName      windbg.exe
#
# Custom tag descriptions 
#
TagDesc         0xA0000000  SAMPLE_PLUGIN_DEBUG_TEXT    {Sample debug help text from plug-in analysis}
#

另请参阅

编写分析扩展插件以扩展 !analyze

_EFN_Analyze

!分析