【Visual Leak Detector】在 VS 高版本中使用 VLD
说明
使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记。 本篇介绍如何在 VS
高版本中使用 vld2.5.1
。同系列文章目录可见 《内存泄漏检测工具》目录
1. 使用前的准备
参考本人另一篇博客 安装 Visual Leak Detector 下载 vld-2.5.1-setup.exe 并按步骤安装 VLD。注意配置环境的时候一定要把三个选项都打上勾,在一台电脑上配置完成后,用的时候十分方便,包含头文件就可以使用,不需添加任何多余的代码。
2. 在 VS 2015 及更早版本中使用 VLD
可以在 Using-Visual-Leak-Detector 官方文档里看到如何使用 VLD,里面介绍了如何在 Visual C++ 2003/2005/2008/2010/2012/2013 中配置 VLD 的环境、如何使用 VLD。在 VS 2015
中使用 VLD
的方法,可参考本人另一篇博客 在 VS 2015 中使用 VLD。
3. 在 VS 高版本中使用 VLD
v2.5.1
默认只支持到 VS 2015
,其使用的 dbghelp.dll
版本为 6.11.1.404
。若要在高版本的 Visual Studio
里面使用 VLD
,且想完全使用高版本的开发环境,可以先尝试按 VS2015
的用法来,当出现崩溃、闪退、无法检测已知泄漏等情况时,再考虑修改 VLD
的源码。由于目前本人对此需求不大,所以仅说下个人思路,供日后参考。具体来说,需要解决以下问题:
- 源码里面有些宏的用法,限制了能编译
VLD
的VS
版本,例如_MSC_VER
宏(详见 vld.cpp 第 975~977 行),需要修改,可参考 MSDN - predefined-macros。 - 高版本的
MFC/CRT/COM
等底层DLL
若有新的内存分配/释放函数,则需要把这些函数也添加到IAT hook
的目标函数里面,详见 dllspatches.cpp 与 vld_hooks.cpp。 - 有些函数在高版本中进行了更新,原先的逻辑在新版本中不适用,典型的如
dbghelp.dll
库的SymInitialize()
函数(详见 vld.cpp 第 483 行), 这个函数在10.0
版本的dbghelp.dll
中的行为不同于6.11
,导致在VS2019/VS2022
中使用VLD
时可能出现闪退,参考 GitHub-KindDragon-Vld-Issue#86。
3.1 参考资料:在 VS 2017 中使用 VLD
如下,点击可跳转。
- 博客园 - VS2017 编译使用 VLD,这篇文章写了如何用
VS 2017
编译VLD
,并对源码进行了一些修改,然后在同版本的VS
项目中使用 。 - 博客园 - 在 VS2017 中使用 VLD,这篇文章写了如何在
VS 2017
中直接使用VLD 2.5.1
库,无任何源码修改。 - MSDN - What happened to vld,这篇文章介绍了如何在
VS 2017
中直接使用VLD 2.5.1
库,无任何源码修改,但会替换默认的dbghelp.dll
文件。
3.2 参考资料:在 VS 2019 中使用 VLD
如下,点击可跳转。
- GitHub-razor950-vld,修改过的
VLD
,介绍说支持2017/2019
,参考 GitHub-KindDragon-Vld-Issue#75。 - GitHub-Azure-vld,修改过的
VLD
,更新日志 说支持到2019
,参考 StackOverflow-how-to-install-visual-leak-detector-vld-on-visual-studio-2019。 - GitHub-oneiric-vld,修改过的
VLD
,介绍说支持2019
,参考 GitHub-KindDragon-Vld-Issue#65。 - CSDN - VS2019 编译 VLD,这篇文章写了如何用
VS 2019
编译VLD
,并对源码进行了一处修改,然后在同版本的VS
项目中使用 。
3.3 参考资料:在 VS 2022 中使用 VLD
如下,点击可跳转。
- GitHub-hongxinGuo-vld,修改过的
VLD
,介绍说支持2008~2022
,参考 GitHub-KindDragon-Vld-Issue#85。
【Visual Leak Detector】在 VS 高版本中使用 VLD的更多相关文章
- 【Visual Leak Detector】核心源码剖析(VLD 1.0)
说明 使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记.本篇对 VLD 1.0 源码做内存泄漏检测的思路进行剖析.同系列文章目录可见 <内存泄漏检测工具>目录 目录 说明 1. 源码 ...
- VS2017 编译 Visual Leak Detector + VLD 使用示例
起因 一个Qt5+VS2017的工程,需要进行串口操作,在自动时发现一段时间软件崩溃了,没有保存log,在 debug 的时候发现每运行一次应用占据的内存就多一点,后来意识到是内存泄漏了.这个真是头疼 ...
- Cocos开发中性能优化工具介绍之Visual Studio内存泄漏检测工具——Visual Leak Detector
那么在Windows下有什么好的内存泄漏检测工具呢?微软提供Visual Studio开发工具本身没有什么太好的内存泄漏检测功能,我们可以使用第三方工具Visual Leak Detector(以下简 ...
- 【Visual Leak Detector】在 QT 中使用 VLD(方式二)
说明 使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记. 目录 说明 1. 使用前的准备 2. 在 QT 中使用 VLD 2.1 在项目 .pro 文件中指明路径 2.2 在 main.cpp ...
- 【Visual Leak Detector】在 QT 中使用 VLD(方式三)
说明 使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记. 目录 说明 1. 使用前的准备 2. 在 QT 中使用 VLD 2.1 复制 lib 库及头文件 2.2 在项目 .pro 文件中指明路 ...
- 【Visual Leak Detector】QT 中 VLD 输出解析(一)
说明 使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记. 目录 说明 1. 使用方式 2. 无内存泄漏时的输出报告 1. 使用方式 在 QT 中使用 VLD 的方法可以查看另外几篇博客: [Vi ...
- 【Visual Leak Detector】QT 中 VLD 输出解析(二)
说明 使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记. 目录 说明 1. 使用方式 2. 有一处内存泄漏时的输出报告(int 型) 3. 有一处内存泄漏时的输出报告(int 数组型) 1. 使 ...
- 【Visual Leak Detector】QT 中 VLD 输出解析(四)
说明 使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记. 目录 说明 1. 使用方式 2. 测试代码 3. 使用 32 bit 编译器时的输出 4. 使用 64 bit 编译器时的输出 5. 输 ...
- 使用Visual Leak Detector检测内存泄漏[转]
1.初识Visual Leak Detector 灵活自由是C/C++语言的一大特色,而这也为C/C++程序员出了一个难题.当程序越来越复杂时,内存的管理也会变得越加复杂,稍有不慎就会出现内存问题 ...
- vld(Visual Leak Detector) 内存泄露检测工具
初识Visual Leak Detector 灵活自由是C/C++语言的一大特色,而这也为C/C++程序员出了一个难题.当程序越来越复 杂时,内存的管理也会变得越加复杂,稍有不慎就会出现内存问题.内存 ...
随机推荐
- dubbo服务多网卡IP问题
起因 更换电脑,dubbo服务不能调试,win7电脑好使,win10不行 分析 经过调试发现注册的ip地址,不是VPN分配的地址,多方面查找资料说ip排序的问题,尝试一下方法: 网络连接重新命名成一样 ...
- Oracle 取Group By 第一条
select *from (select emp.*,row_number() over(partition by deptno order by rownum) cn from emp)where ...
- keshe第三周
本周尝试在openeuler中运行java代码 实现bc库和crypto.gmsm 如下: 实现gmlib C语言库
- springboot + mybatisplus出现was not registered for synchronization because synchronization is not active
原因一:缺少事务注解,底层mybatisplus的接口方法有事务 原因二:该服务器被限制访问要连接的数据库 原因三:乐观锁失效 乐观锁由@version注解标注,有以下使用要求 支持的数据类型只有:i ...
- Postman请求Https接口与认证
http://t.zoukankan.com/embedded-linux-p-12656769.html
- 咕咕list
做完以后会留在榜上一天,这样显得咕咕list长一些 CF666E Forensic Examination(done on 2023.2.6) dp选做
- 【Visual Leak Detector】配置项 ForceIncludeModulesmd
说明 使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记.本篇介绍 VLD 配置文件中配置项 ForceIncludeModules 的使用方法. 同系列文章目录可见 <内存泄漏检测工具&g ...
- NoSQL之 Redis配置与优化
目录 一.缓存概念 1.1 系统缓存 1.1.1buffer与cache 1.2 缓存保存位置及分层结构 1.2.1 DNS缓存 1.2.2 应用层缓存 1.2.3数据层缓存 1.2.4 硬件缓存 二 ...
- mixins使用混入引入组件,并可以使用公共函数。组件类同名函数可以替代公共函数。使用$ref获得子元素数据和元素dom节点。使用$parents获得父元素数据。slot插槽的使用
父组件: <template> <div class="box"> <Header > <div slot="left" ...
- lua快速入门~在js基础上,知道Lua 和 Js 的不同即可
lua 和 javaScript 差不多的,就是一些语法的细节不同,学过js,再注意一下下面的细节,就能上手了~ 快速入门,可以直接看一下菜鸟教程的lua:https://www.runoob.com ...