当前位置:   article > 正文

用Debug Diagnostic诊断内存泄露问题_debug diagnostic tool

debug diagnostic tool

用Debug Diagnostic诊断内存泄露问题

调试一个MFC的程序,发现解决内存泄露问题,用Debug Diagnostic Tool1.2
1.在定位的时候,需要注意多跑几次,多诊断几次,线程很多的话,每次的结果可能不一样,给的Call stack sample也可能不一样,不行就多跑一会。

2.即使多跑几次,堆栈信息也可能不足以一次定位到问题。给了一些分配内存大小的信息“Top 10 allocation sizes by allocation count”和“Top 10 allocation sizes by total size”,一开始也搞不清给这东西有啥用,后来才知道,很多情况下,即使有符号和堆栈信息,也不是一下子能定位到出问题的地方,通过这两个信息,很多时候对分析有很大帮助,如图:分析说明,在“CProtocolScanner!CThreadGroup::WorkProc”工作线程中,有个分配43k内存的地方是有地方的,这个43k的大小是自己后来改的,一开始是40k,这个40k是程序中的一个临时buffer的大小,我找到所有使用这个大小分配内存的地方,并且都修改了下,改成了41k,42k,43k等,在分析一次,就找到那个有问题的43k内存大小的地方了。扩展下,如果分析到了有问题的地方每次分配内存的大小,还可以通过查找对应结构体或者类的大小,来判断是哪个对象有泄露问题。问题定位最后如下图:
这里写图片描述
参考:
http://www.cnblogs.com/zhcncn/archive/2013/01/11/2856000.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/168384
推荐阅读
相关标签
  

闽ICP备14008679号