!avrf
!avrf扩展用于控制Application Verifier的设置,并且显示由Application
Verifier产生的各种输出。
语法
!avrf
!avrf -a Address
!avrf -cs { Length | -a Address }
!avrf -hp { Length | -a Address }
!avrf -vs { Length | -a Address }
!avrf -dlls [ Length ]
!avrf -ex [ Length ]
!avrf -cnt
!avrf -trm
!avrf -threads [ThreadID]
!avrf -trace TraceIndex
!avrf -brk [BreakEventType]
!avrf -flt
!avrf -flt EventType Probability
!avrf -flt break EventType
!avrf -flt stacks Length
!avrf -trg [ Start End | dll Module | all ]
!avrf -skp [ Start End | dll Module | all | Time ]
参数
- -a Address
- 指定一个地址。会显示包含这个地址的内存分配记录、以这个地址为开始的内存释放操作记录。如果该选项前面没有–cs、
-hp或者–vs,那么会搜索light heap。
- -cs
- 显示临界区(critical section)的删除日志。详细信息查看Application Verifier 文档中的"Critical
Section Delete Logs"。
- -hp
- 显示堆操作日志。详细信息查看Application Verifier文档中的"Heap Operation Logs"。
- -vs
- 显示虚拟地址空间(virtual space)操作日志。详细信息,查看Application Verifier 文档中的"Virtual Space
Operation Logs"。
- -dlls
- 显示DLL的加载/卸载日志。详细信息查看Application Verifier 文档中的"DLL Load/Unload Logs"。
- -ex
- 显示异常日志。详细信息查看Application Verifier文档中的"Exception Logs"。
- Length
- 指定要显示的记录数量。如果使用了-dlls或者-ex选项,则可以省略Length来显示所有的DLL
加载/卸载操作或者所有异常记录。
- -cnt
- 显示全局计数器(global counter)的清单。
- -trm
- 显示所有终止和挂起线程的日志。
- -threads
- 显示目标进程中线程的信息。对于子线程,还会显示堆栈大小和由父线程指定的CreateThread标志。
- ThreadID
- 指定要显示的线程ID。省略时显示所有线程。
- -trace TraceIndex
- 显示指定的TraceIndex的调用堆栈。一些结构用到了这个16位索引来标识调用堆栈。这个索引指向调用堆栈数据库(stack
trace database)中的位置。如果正在分析这样的结构,那么这个选项非常有用。
- -brk
- 表明这是一个break-event命令。不带参数使用!avrf -brk时,会显示break event设置。可以在
文档的 "Requesting Breaks on Certain Events" 中查看示例。
- BreakEventType
- 指定break event 的type number 。查看Application Verifier 文档的"Requesting Breaks on
Certain Events"获得可用type的列表。
- -flt
- 表示这是一个fault-injection 命令。不带参数使用!avrf –flt时,显示当前的fault
injection设置。查看Application Verifier 文档中的"Choosing Which Events to Fault"获得示例。
- EventType
- 指定event的type number。查看Application Verifier 文档中的"Choosing Which Events to
Fault"获得可能的type的列表。
- Probability
- 指定该event将会失败的频率。可以是从0到100(0x64)之间的任意整数。
- break
- 让每次该fault 被inject时,Application Verifier都中断到调试器中。这种中断的示例,查看Application
Verifier 文档中的"Choosing Which Events to Fault"。
- stacks
- 显示最近一次fault-injected 操作的调用堆栈。查看Application Verifier 文档的"Choosing Which
Events to Fault"获得示例。
- -trg
- 表明这是一个target range 命令。 不带参数使用 –trg时,显示当前的target
range。详细信息查看Application Verifier文档中的"Choosing Where to Fault"。
- -skp
- 表示这是一个exclusion range 命令。不带参数使用-trg时,显示当前的target
range。详细信息查看Application Verifier 文档中的"Choosing Where to Fault"。
- Start
- 指定target range 或者exclusion range 的开始地址。
- End
- 指定target range 或者exclusion range 的结束地址。
- Module
- 指定要targeted 或者excluded 的模块名。Module是完整的模块名,包括.exe或.dll扩展名。不能含有路径信息。
- all
- 使得所有的target range或者exclusion range重置。
- Time
- 恢复执行后的Time毫秒内消除任何fault。
DLL
Windows 2000 |
不可用 |
Windows XP和之后 |
Exts.dll |
注释
不带参数使用!avrf扩展时,会显示当前的Application Verifier选项。如果已经启用了Full
page heap或者Fast fill heap选项,那么还会显示active page
heap的信息。查看Application Verifier 文档中的 "Heap Operation Logs"获得示例。
如果发生了Application Verifier Stop,不带参数的!avrf扩展会显示停止的类型以及原因。查看Application
Verifier 文档中的"Debugging Application Verifier Stops" 获得示例。
如果没有ntdll.dll和verifier.dll的符号,那么!avrf扩展会产生错误信息。关于如何定位这种问题的信息,查看Application
Verifier 文档中的"Setting Up a Debugger for Application Verifier"。
附加信息
关于如何下载和安装Application Verifier ,以及它的文档的信息,查看Application Verifier。
Build machine: CAPEBUILD