使用Visual Leak Detector检查内存泄露

近期某处windows版本程序发生故障,归结原因为内存泄露导致资源不足。

前面出现几次都没解决,这次落到我头上了。

 

今日上班时间已经试图将内存增加的情况复现,班车上就在搜相关资料,路上搜到的是用c运行时库函数_CrtDumpMemoryLeaks来检查,回到家后首先找到了Visual Leak Detector的使用

 

下载了VLD-1.9h的安装包,他的使用包含dll,lib库及include。也含有src代码,可以自己编译dll及lib。

 

首先安装,假设安装到d:/Program Files/Visual Leak Detector。安装完后会有说明文档,包括在vc下的设置等。

 

在该安装目录下游vld.ini,修改里面的

ReportTo值为both,表示debugger及file都产生输出

ReportFile值设为文件路径及文件名

 

StartDisabled则根据情况设置,默认为no即程序启动就算开始。

 

在需要分析的程序中,其开始及大部分线程的情况不是当前关注的重点,则可以设为yes,不启动,随后在某个线程内增加代码VLDEnable();用于启动此检测。

 

当只需要分析某一段代码时则可灵活的增加VLDEnable(); VLDDisable();进行控制。

 

 

当当前重点问题解决,继续分析所有代码时则可以将其设为no,以便全部检测。

 

待明天试验其效果了......

 

 

 

附:测试输出效果

Visual Leak Detector Version 1.9h installed.
    Outputting the report to the debugger and to E:/Develop/test/console/Debug/memory_leak_report.txt
    Starting with memory leak detection disabled.
WARNING: Visual Leak Detector detected memory leaks!
---------- Block 0 at 0x00280F28: 100 bytes ----------
  Call Stack:
    e:/develop/test/console/test.c (38): main
    crt0.c (206): mainCRTStartup
    0x77221194 (File and line number not available): BaseThreadInitThunk
    0x7744B495 (File and line number not available): RtlInitializeExceptionChain
    0x7744B468 (File and line number not available): RtlInitializeExceptionChain
  Data:
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD                                                  ........ ........

---------- Block 1 at 0x00280FD0: 600 bytes ----------
  Call Stack:
    e:/develop/test/console/test.c (17): funtest
    e:/develop/test/console/test.c (39): main
    crt0.c (206): mainCRTStartup
    0x77221194 (File and line number not available): BaseThreadInitThunk
    0x7744B495 (File and line number not available): RtlInitializeExceptionChain
    0x7744B468 (File and line number not available): RtlInitializeExceptionChain
  Data:
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD                                   ........ ........

Visual Leak Detector detected 2 memory leaks.
Visual Leak Detector is now exiting.

 

 

你可能感兴趣的:(windows,File,report,dll,include,leak)