!avrf

!avrf 扩展控制应用程序验证程序的设置,并显示应用程序验证程序生成的各种输出。

    !avrf
    !avrf -vs { Length | -a Address }
    !avrf -hp { Length | -a Address }
    !avrf -cs { Length | -a Address }
    !avrf -dlls [ Length ]
    !avrf -trm
    !avrf -ex [ Length ] 
    !avrf -threads [ ThreadID ]
    !avrf -tp [ ThreadID ]
    !avrf -srw  [ Address | Address Length ] [ -stats ]
    !avrf -leak  [ -m ModuleName] [ -r ResourceType] [ -a Address ] [ -t ]
    !avrf -trace TraceIndex 
    !avrf -cnt
    !avrf -brk [BreakEventType]  
    !avrf -flt [EventType Probability] 
    !avrf -flt break EventType 
    !avrf -flt stacks Length 
    !avrf -trg [ Start End | dll Module | all ] 
    !avrf -settings 
    !avrf -skp [ Start End | dll Module | all | Time ] 

参数

-vs { Length | -a Address }
显示虚拟空间操作日志。 Length 指定要显示的记录数,从最近的记录开始。 Address 指定虚拟地址。 将显示包含此虚拟地址的虚拟操作的记录。

-hp { Length | -a Address }
显示堆操作日志。 Address 指定堆地址。 将显示包含此堆地址的堆操作的记录。

-cs { Length | -a Address }
显示关键节删除日志。 Length 指定要显示的记录数,从最近的记录开始。 Address 指定关键节地址。 指定 Address 时,将显示特定关键节的记录。

-dlls [ 长度 ]
显示 DLL 加载/卸载日志。 Length 指定要显示的记录数,从最近的记录开始。

-trm
显示所有已终止和挂起的线程的日志。

-ex [ Length ]
显示异常日志。 应用程序验证程序跟踪应用程序中的所有异常。

-threads [ ThreadID ]
显示有关目标进程中线程的信息。 对于子线程,还会显示父级指定的堆栈大小和 CreateThread 标志。 如果提供线程 ID,则仅显示该线程的信息。

-tp [ ThreadID ]
显示线程池日志。 此日志包含各种操作的堆栈跟踪,例如更改线程关联掩码、更改线程优先级、发布线程消息以及从线程池回调中初始化或取消初始化 COM。 如果提供线程 ID,则仅显示该线程的信息。

-srw [ 地址 | 长度 ] [ -stats ]
显示精简读取器/编写器 (SRW) 日志。 如果指定 Address,将显示该地址处的 SRW 锁定的记录。 如果指定 AddressLength,将显示该地址范围内的 SRW 锁定的记录。 如果包含 -stats 选项,将显示 SRW 锁定统计信息。

-leak [ -m ModuleName] [ -r ResourceType] [ -a Address ] [ -t ]
显示未完成的资源日志。 这些资源在任何给定点都可能或可能不泄漏。 如果指定 Modulename(包括扩展),将显示指定模块中的所有未完成资源。 如果指定 ResourceType,将显示该资源类型的所有未完成资源。 如果指定 Address,将显示具有该地址的未完成资源的记录。 ResourceType 可以是下列类型之一:

堆:使用 Win32 堆 API 显示堆分配

本地:显示本地/全局分配

CRT:使用 CRT API 显示分配

虚拟:显示虚拟预留

BSTR:显示 BSTR 分配

注册表:显示注册表项打开

电源:显示电源通知对象

句柄:显示线程、文件和事件句柄分配

-trace TraceIndex 显示指定跟踪索引的堆栈跟踪。 某些结构使用此 16 位索引号来标识堆栈跟踪。 此索引指向堆栈跟踪数据库中的位置。

-cnt 显示全局计数器的列表。

-brk [ BreakEventType ] 指定中断事件。 BreakEventType 是中断事件的类型编号。 有关可能类型的列表和当前中断事件设置的列表,请输入 !avrf -brk

-flt [ EventType Probability ] 指定错误注入。 EventType 是事件的类型编号。 Probability 是事件失败的频率。 这可以是介于 0 和 1,000,000 之间的任意整数 (0xF4240)。 如果输入 !avrf -flt 且没有使用其他参数,将显示当前的错误注入设置。

-每次注入 EventType 指定的此错误时,flt break EventType 会导致应用程序验证程序进入调试器。

-flt 堆栈长度显示最近错误注入操作的堆栈跟踪的长度数。

-trg [ Start End | dll Module | all ] 指定目标范围。 Start 是目标范围的起始地址。 End 是目标范围的结束地址。 Module 指定要作为目标的模块的名称(包括 .exe 或 .dll 扩展,但不包括路径)。 如果输入 -trg all,则会重置所有目标范围。 如果输入不带其他参数的 -trg,则显示当前目标范围。

-skp [ Start End | dll Module | all | all | 时间 ] 指定排除范围。 Start 是排除范围的起始地址。 End 是排除范围的结束地址。 模块指定要作为目标或排除的模块的名称。 Module 指定要排除的模块的名称(包括 .exe 或 .dll 扩展,但不包括路径)。 如果输入 -skp all,则将重置所有目标范围或排除范围。 如果输入Time值,则执行恢复后,会抑制所有故障 Time 毫秒。

DLL

exts.dll

其他信息

有关如何下载和安装应用程序验证程序及其文档的信息,请参阅应用程序验证程序

注解

当在不使用任何参数的情况下使用 !avrf 扩展时,它将显示当前的应用程序验证程序选项。 如果已启用“整页堆”或“快速填充堆”选项,也会显示有关活动页堆的信息。 有关一些示例,请参阅调试应用程序验证程序停止中的“堆操作日志”。

如果发生了应用程序验证程序停止,则不使用任何参数的 !avrf 扩展将显示停止的性质及其原因。 有关一些示例,请参阅调试应用程序验证程序停止

如果缺少 ntdll.dll 和 verifier.dll 的符号,!avrf 扩展将生成错误消息。 有关如何解决此问题的信息,请参阅调试应用程序验证程序停止中的“调试器安装和设置”。