锁定老帖子 主题:调试C++ memory leak常用手段
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-08-27
最后修改:2009-08-27
from http://sunxiunan.com/?p=1289
1, check handle leak. Use Lua script to search the codes.
2, check memory leak. If you use CRT, you could use: _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF); // http://msdn.microsoft.com/en-US/library/e5ewb1h3(VS.80).aspx
3, get performance data. We could use PDH functions. CPDHData
4, 注释代码隔离问题。
5, 1. 加一个对象计数器, 哪种对象一直增加, 就是它了.
6, VLD boundchecker ADPlus WinDbg SysInternals-Tools (handle)
7, OANOCACHE=1 8, some tools Mozilla uses: http://www.mozilla.org/performance/tools.html 9, 启用或禁用内存诊断可以调用全局函数 AfxEnableMemoryTracking() #ifdef _DEBUG CMemoryState oldMemState, newMemState, diffMemState; oldMemState.Checkpoint(); #endif ... (被测试的代码) ... #ifdef _DEBUG newMemState.Checkpoint(); if(diffMemState.Difference(oldMemState, newMemState)) { TRACE(“Memory Leaked Here:\n\n" ); } #endif 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 2135 次