windbg wt命令

0x00

最近好忙,好久没写博客了,更新一波。
Windbg中的wt命令可以简便快速追踪函数调用流程,命令格式如下:
windbg wt命令
我在win10 x64 19h1 release 上测试 CoInitializeEx 的调用流程:
windbg wt命令
使用命令: wt =3e13d4 3e13da
命令会显示两部分信息:树形显示的调用堆栈与每个被调用子函数的指令数与调用次数。
windbg wt命令

0x01

Wt命令除了追踪调用流程以外我认为在两个方面有一定作用:

  1. 确定调用失败大致原因与范围。在调用一些API时经常会发生错误,如果直接跟API会比较烦,存粹体力活。使用wt可以比较简单地看出大致在哪个子函数失败的,那么可以下断点,快速run到出错代码附近;
  2. Wt命令可以作为简单的性能调试工具。因为wt命令列出了指令数与调用次数,因此可以作为性能调试的简单参考。但是有几点要注意:Wt命令可以作为简单的性能调试工具。因为wt命令列出了指令数与调用次数,因此可以作为性能调试的简单参考。但是有几点要注意:
    1) 存在IO性能瓶颈的程序不适合,比较适合CPU密集型程序;
    2) Wt命令使用的是nt自带的event trace,会对程序本身的执行造成一定影响,因此如果程序会一些扰动比较敏感的话也不太适合。

0x02

全量打印的wt命令输出比较烦杂,可以使用一些filter参数来过滤打印,具体看msdn。