gpt4 book ai didi

【VisualLeakDetector】源码调试VLD库

转载 作者:我是一只小鸟 更新时间:2023-05-07 14:31:16 29 4
gpt4 key购买 nike

说明

使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记。本篇介绍 VLD 源码的调试。同系列文章目录可见 《内存泄漏检测工具》目录 。

目录
  • 说明
  • 1. VLD 库源码调试步骤
    • 1.1 设置为启动项目
    • 1.2 设置调试程序
    • 1.3 设置输出目录
    • 1.4 拷贝 vld 依赖文件
    • 1.5 加断点调试
  • 2. 注意事项


1. VLD 库源码调试步骤

以 vld2.5.1 版本为例, 下载源码 后,源码包中各文件的用途可看本人另一篇博客 【VLD】源码文件概览 。使用 VLD 进行泄漏检测时,有时候会出现突然崩溃、退出时没有打印以下提示信息等情况,此时就可以调试一下 VLD 的源码,查一查是哪里出了问题.

                        
                          Visual Leak Detector is now exiting.

                        
                      

与其他 DLL 的调试方法一样, VLD 源码调试遵循以下步骤(参考 MSDN - how-to-debug-from-a-dll-project ).

1.1 设置为启动项目

使用 VS2015 打开 vld_vs14.sln ,将 vld 设置为启动项目.

Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”

1.2 设置调试程序

进入 vld 属性页 -> 配置属性 -> 调试 页面。选择 Debug 模式,选择 本地 Windows 调试器 ,根据自己需求设置调试程序与调试程序的启动参数。点击确定.

Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”

这个 命令 就是指调用 vld.dll 的程序(被称为调试程序)所在路径,我的是 E:\Cworkspace\VSDemo\testVLD\Debug\testVLD.exe ,如果这个调试程序需要额外的参数,就把参数填写在下一行 命令参数 中,没有参数空着就好.

Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”

1.3 设置输出目录

进入 vld 属性页 -> 配置属性 -> 常规 页面。选择 Debug 模式,根据自己需求设置输出目录。点击确定.

Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”

设置为调试程序的同一级目录,我的是 E:\Cworkspace\VSDemo\testVLD\Debug ,由于 vld_vs14.sln 的路径为 E:\Cworkspace\VSDemo\vld-master ,因此这里显示为相对路径.

Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”

1.4 拷贝 vld 依赖文件

将 vld 安装目录中的 dbghelp.dll 与 Microsoft.DTfW.DHL.manifest 这两个文件拷贝至调试程序的同一级目录,我的是 E:\Cworkspace\VSDemo\testVLD\Debug ,要注意是 Win32 还是 x64 ,拷对应的才行.

Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”

1.5 加断点调试

至此,就可以开始调试了,不妨在 VisualLeakDetector 类的构造函数中加一个断点,点击 本地 Windows 调试器 开始调试(或者按 F5 ),程序成功停在了断点处.

Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”

2. 注意事项

调试时,有以下几点需注意:

  • vld 源码生成的 vld.dll 与调试程序所引用的 vld.dll 必须是 同一路径下的同一个文件 ,这也是要重新设置 vld 输出目录的原因。为确保调试程序运行时能正确找到 vld 生成的 dll ,可以将 vld 输出目录设置 为调试程序所在目录 ,或者 Path 环境变量的某个目录(例如 vld 安装目录的 bin 子目录下)
  • vld 的依赖文件 dbghelp.dll Microsoft.DTfW.DHL.manifest 也应该放在调试程序能找到的地方。
  • 平台位数必须一致, Win32 时都必须得是 Win32 x64 时都必须得是 x64
  • 调试程序必须能找到它所依赖的其他环境(比如 xx.dll )。特别是 QT 开发的调试程序,其依赖的 Qt DLL 比较多,直接运行时会提示缺失某某 DLL
  • 调试程序与 DLL 都必须是 Debug 版本。

最后此篇关于【VisualLeakDetector】源码调试VLD库的文章就讲到这里了,如果你想了解更多关于【VisualLeakDetector】源码调试VLD库的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com