windbg 调试器简明手册——第 7 章——调试器命令——第 6 节——用户模式扩展命令

   

目录

1.  !avrf (控制应用程序验证器设置及设置输出)

2.  !critsec (显示临界区)

3.  !dp (!ntsdexts.dp)(显示临界区)

4.  !dreg (显示注册表信息)

5.  !dt (显示 CSR 线程详情)

6.  !findstack (寻栈)

7.  !gatom (显示全局原子表)

8.  !igrep (在反汇编码中搜索模式)

9.  !locks(!ntsdexts.locks)(显示临界区列表)

10.  !mapped_file (显示文件映像)

11.  !runaway (显示线程耗时详情)

12.  !uniqstack(显示线程栈详情)

13.  !vadump(显示虚拟内存范围及相应保护信息)

14.  !vprot(显示虚拟内存保护信息)


        本参考文档的这一部分介绍了主要用于用户模式调试的扩展命令。

    调试器会自动加载这些扩展命令的正确版本。除非您手动加载了不同的版本,否则无需跟踪正在使用的 DLL 版本。有关默认模块搜索顺序的说明,请参阅“使用调试器扩展命令”。

    每一个扩展命令参考页面都列出了公开该命令的 DLL。请使用以下规则确定要从中加载此扩展 DLL 的正确目录:

    如果目标应用程序运行在 Windows XP 或更高版本的 Windows 上,请使用 winxp\Ntsdexts.dll。

    此外,不特定于任何单个操作系统的用户模式扩展位于 winext\Uext.dll 中。

更详细参数见:

https://learn.microsoft.com/en-us/windows-hardware/drivers/debuggercmds/user-mode-extensions

1.  !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 ]

DLL:

exts.dll

2.  !critsec (显示临界区)

    !critsec 显示临界区。

!critsec Address

DLL:

Ntsdexts.dll

3.  !dp (!ntsdexts.dp)(显示临界区)

    Ntsdexts.dll 中的 !dp 扩展命令用于显示 CSR 进程。请勿将此扩展命令与 dp(显示内存)命令或 !kdext*.dp 扩展命令混淆。

!dp [v] [ PID | CSR-Process ]

DLL:

Ntsdexts.dll

4.  !dreg (显示注册表信息)

    !dreg显示注册表信息。

!dreg [-d|-w] KeyPath[!Value]

!dreg

DLL:

Ntsdexts.dll

5.  !dt (显示 CSR 线程详情)

    !dt 扩展命令用于显示 CSR (Certificate Signing Request)线程的相关信息。

请勿将此扩展命令与 dt(显示类型)命令混淆。

!dt [v] CSR-Thread

DLL:

Ntsdexts.dll

6.  !findstack (寻栈)

    !findstack 可以找到所有包含指定符号或模块的栈。

!findstack Symbol [DisplayLevel]

!findstack -?

DLL:

Uext.dll

7.  !gatom (显示全局原子表)

    !gatom 显示全局原子表。

DLL:

Ntsdexts.dll

8.  !igrep (在反汇编码中搜索模式)

    !igrep用于在反汇编代码中搜索模式(pattern)。

!igrep [Pattern [StartAddress]]

DLL:

Windows 2000:Ntsdexts.dll

Windows XP and later:Unavailable

9.  !locks(!ntsdexts.locks)(显示临界区列表)

Ntsdexts.dll 中的 !locks会显示与当前进程关联的临界区列表。

请勿将此扩展命令与 !kdext*.locks 扩展命令混淆(不同的扩展DLL中出现相同的扩展命令)。

DLL:

Ntsdexts.dll

10.  !mapped_file (显示文件映像)

    !mapped_file 显示支持包含指定地址的文件映射的文件名。

!mapped_file Address

DLL:

Uext.dll

!mapped_file 只能在实时、非远程调试期间使用。

11.  !runaway (显示线程耗时详情)

    !runaway 会显示每一个线程所消耗的时间信息。

!runaway [Flags]

例如:

0:000> !runaway

 User Mode Time

  Thread       Time

    3:4b2c     0 days 0:00:00.000

    2:c9c      0 days 0:00:00.000

    1:42c0     0 days 0:00:00.000

    0:4f0c     0 days 0:00:00.000

0:000> !runaway

 User Mode Time

  Thread       Time

    0:3238     0 days 0:00:01.015

DLL:

Ntsdexts.dll

12.  !uniqstack(显示线程栈详情)

    !uniqstack显示当前进程中所有线程的所有栈,但排除出现重复堆栈的情况。

!uniqstack [ -b | -v | -p ] [ -n ]

DLL:

Uext.dll

例如:

Processing 1 threads, please wait

.  0  Id: 51b0.3238 Suspend: 0 Teb: 000000b6`01193000 Unfrozen

      Start: TestVC__!ILT+23800(wmainCRTStartup) (00007ff7`b44a6cfd)

      Priority: 0  Priority class: 32  Affinity: ff

 # Child-SP          RetAddr               Call Site

00 000000b6`012ff8a8 00007ffd`ed641168     ntdll!NtTerminateProcess+0x14

01 000000b6`012ff8b0 00007ffd`ec737fab     ntdll!RtlExitUserProcess+0xb8

02 000000b6`012ff8e0 00007ff7`b462f65b     KERNEL32!ExitProcessImplementation+0xb

03 000000b6`012ff910 00007ff7`b462f5ec     TestVC__!exit_or_terminate_process+0x3b [minkernel\crts\ucrt\src\appcrt\startup\exit.cpp @ 142]

04 000000b6`012ff940 00007ff7`b462fa06     TestVC__!common_exit+0xac [minkernel\crts\ucrt\src\appcrt\startup\exit.cpp @ 288]

05 000000b6`012ff9a0 00007ff7`b44d8fab     TestVC__!exit+0x16 [minkernel\crts\ucrt\src\appcrt\startup\exit.cpp @ 302]

06 000000b6`012ff9d0 00007ff7`b44d8e4e     TestVC__!__scrt_common_main_seh+0x14b [D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl @ 295]

07 000000b6`012ffa40 00007ff7`b44d917e     TestVC__!__scrt_common_main+0xe [D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl @ 331]

08 000000b6`012ffa70 00007ffd`ec73257d     TestVC__!wmainCRTStartup+0xe [D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_wmain.cpp @ 17]

09 000000b6`012ffaa0 00007ffd`ed64af08     KERNEL32!BaseThreadInitThunk+0x1d

0a 000000b6`012ffad0 00000000`00000000     ntdll!RtlUserThreadStart+0x28

Total threads: 1

13.  !vadump(显示虚拟内存范围及相应保护信息)

    !vadump 显示所有虚拟内存范围及其相应的保护信息。

!vadump [-v]

DLL:

Uext.dll

14.  !vprot(显示虚拟内存保护信息)

!vprot显示虚拟内存保护信息。

!vprot [Address]

DLL:

Uext.dll

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值