WinDbg有一个挺有意思的功能,叫做”Trace and Watch Data” — “wt”命令。WinDbg的help文件解释道:
The wt command runs through the whole function and then displays statistics, when you execute this command at the beginning of a function call.
也就是, 当你在debugging的时候,你step到一个function的开头(比如通过break point停在一个function开头),这时候你想获得关于这个function执行时候的详细信息,就在command窗口,输入wt,这时候debugger就会替你执行整个function到它return的地方,并提供给你这次执行的详细信息。比如下图,就是我用WinDbg attach到一个正在执行的notepad后,某次执行”wt”时得到的结果:

可以看到,这个function执行的详细信息被显示出来。比如function在stack的call depth,以及每个被call的function的执行的指令数目, 被执行的system call等等。这个是动态执行的trace,是根据当时的具体输入来的,所以不会cover所有code。另外,因为inline function在这里不被显示为一个function call,所以你还可以知道那些function被编译器inline了,那些没有。
感觉这是一条很有用也很强大的命令,在performance tuning的时候能提供很多有用的信息。我这里描述的是最简单也是最常用的用法。更具体的用法,请查阅WinDbg的帮助文件。


1 comment
Comments feed for this article
Trackback link
http://zeal.haliluya.org/blog/2007/11/10/use-the-wt-command-in-windbg/trackback/
November 13, 2007 at 3:59 am
chinaren
调试高手箴言:
思考才是硬道理
精妙方法,源于思考;精彩案例,源于实践。
——深入剖析数十个微软企业客户的真实案例
——让您成为福尔摩斯一样的排错高手
《Windows用户态程序高效排错》
本书是一本介绍Windows系统上的用户态程序排错方法和技巧的书。本书分为4个章节,先介绍最重要的、通用的思考方法,以便制定排错步骤;再介绍对排错有帮助的知识点和工具;并介绍了.NET Framework(CLR)的相关知识和调试技巧;最后一章针对常见的几大类问题进行了总结。
本书案例丰富,对现实中的实际问题进行了研究,并和读者一起分析解决办法;本书的写作思路为先给出问题描述,然后提供线索,再进行分析,让读者在阅读中也进行思考,以提高实际解决问题的能力。本书适合希望学习排错、调试知识的软件开发、测试人员,以及希望深入学习Windows系统上用户态程序的排错知识的软件开发、测试人员。
《Windows用户态程序高效排错》即将上市,耽误您几分钟,您将获得一本软件调试方面的好书。详情请见:
http://book.csdn.net/bookfiles/555/index.html
或者您在百度中搜索“高效排错”就能获得更多信息。
如果您看了之后,觉得该书无用,请删除此留言,非常抱歉!