Visual Leak Detector(vld)无法显示内存泄露文件名与行号

1、F5 运行程序后,提示"无法定位程序输入点 ???? 于动态链接库 dbghelp.dll 上"

查看[输出]窗口,看看加载的是哪个目录下的 dbghelp.dll 。如果发现 “???.exe”: 已加载“C:/WINDOWS/system32/dbghelp.dll” 之类的内容,那么问题出在这里,程序自动加载了系统目录下的dbghelp.dll ,而没有加载 VLD 的dbghelp.dll。

解决方法:

  1. 删除系统目录下的dbghelp.dll 或暂时改名。
  2. 或者把 VLD 安装路径下的 dbghelp.dll拷贝到你的程序的Debug文件夹里。 总之,只要能够让程序加载VLD的dbghelp.dll就行了。考虑到一般不要动系统目录里的东西,建议采用方法(2)。采用方法(2)时,不要把 vld_x86.dll 拷贝到Debug目录下,如果拷了,会使程序堆栈溢出,崩溃。

   注:如果vld_x86.dll也不能正常加载,说明没有设置环境变量,重新安装VLD,并且在安装程序询问是否设置环境变量时,选[Yes]
             
2、检测出泄露时,无法显示泄露的位置,无法定位到CPP文件和代码行。并且有大量误报。
例如:Call Stack:0x0041907C (File and line number not available): (Function name unavailable)

解决方法:

该问题的起因是VLD没能找到.PDB文件,导致产生误报、无法定位代码位置。要解决该问题,就要从怎么让VLD找到.PDB文件入手:

  1. 确保VC工程文件所在的目录路径不含中文字符、双字节字符。(VLD对中文路径支持不了)
  2. 查看是否正常生成了.pdb文件。
  3. 如果前2条都没问题却还是显示File and line number not available,那么请确认运行目录(是运行目录不是工作目录)下是否有最新的dbghelp.dll,之前我就是使用了系统自带的dbghelp.dll导致无法显示文件和行名,所以多换几个dbghelp.dll试一下。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值