一对MS内存泄漏查找工具(Leakdiag和LDGrapher)和STL类跨DLL调用引起内存泄漏

LeakDiag检测内存泄漏 の文件分析 1. 设置LeakDiag LeakDiag和LDGrapher下载地址:https://blog.youkuaiyun.com/xl19900502/article/details/115100734?spm=1001.2014.3001.5502 LeakDiag菜单栏:Tools --> Options 有pdb,并且设置Resolve symbols when logging的好处是,日志文件中,会指名是哪个函数泄漏了内存。 2. 启动MemLeak 3. 监视MemLeak .. 阅读详情

转自:http://blog.youkuaiyun.com/zhangbinjn/archive/2009/08/13/4444641.aspx

 

今天写点工作相关的,同时给大家介绍工具(Leakdiag和LDGrapher)。

这两个星期可以说是觉都没睡好,公司公测后运行的游戏,完成一个任务后内存飚到1G多,靠这游戏还能怎么玩,让玩家怎么玩啊,一个月几十万的充值势头,怕没两个星期就会掉下去。这几天一直和主程不停的查找原因。

当然,这么大的内存泄漏,最引起我们注意的当然就是图形引擎这一块了,只有地图、光效和图片资源才会占用如此大的内存。但因为引擎代码是另外项目组在维护,给我们的只是一些库文件,所以没有办法,我们只能对每一个通过底层接口频繁的调用来测试底层的问题(只有拿出证据,你才有说话的权力)。但是,最后的结果让我们失望,通过反复的测试,排除底层的问题。

当然,进一步,我们又从调用特别繁琐的寻路算法进行排除,发现也不是其中的原因。真的是山穷水尽了,大家整的都很疲惫。内存还是飚,问题还是要解决。

可能大家看到标题,我写了这么多的费话可能,你会问题,你们早一点没有想到找一个工具测一下啊。这个当然是首先想到的,不断的去找的,不然要不会介绍今天的Leakdiag和LDGrapher,开始找了很多的工具去试去配,但是都没有达到想要的结果。最后,微软的Leakdiag和LDGrapher凳场了,也给我们带来了光明。(得出一个结论:要用工具,要用好工具,要用对工具)。应该有很多人知道了其强大性,这里再强调一个,我相信,中国的程序员应该学会一点,那就是好工具大家用,好资料大家看,好代码大家学习的分享精神。

不说费话,网上有几篇介绍Leakdiag和LDGrapher的文章,说的也算详细:

http://www.cppblog.com/sandy/archive/2008/08/18/59260.html

还有几点要强调:

1、log下来的并不是内存泄漏的,而是你运行开始,分配了还没有释放的;

2、log的堆栈可以设置为1-32,所以足够你定位错误代码(Tools设置);

3、在你认为的关键点打几个log,用LDGrapher线谱图可以很明显的看出内存分配的情况。

当然,最后写一下出问题的原因,也是大多数有一定项目经验的人都会遇到的STL类跨DLL调用的问题。这个问题的讨论也很多,google一下你会有很大的收获。

http://www.cppblog.com/fwxjj/archive/2009/06/16/87810.html

http://www.cppblog.com/xingmuxixi/archive/2009/05/18/83281.html

我们这次遇到的主要问题是在一个Dll中的接口中返回了一个std::vector的值对象,在.exe文件中用了这接口,对返回的vector做了操作,也就是说,一个在Dll中创建的STL对象,在.exe中释放的时候,会造成STL内存分配的异常,导致内存大量的泄漏。

好了,就写这么多了,问题解决了,可以回家睡个好觉了。

Windows高级调试(学习笔记)-第一章-调试工具简介 Advanced Windows Debugging 第一章 调试工具简介 阅读详情

相关推荐

Windows内存泄漏排查工具

LeakDiag和LDGrapher,windows内存泄漏排查工具,用于进行一些泄漏位置的查找以及可视化展示。

Leakdiag 和LDGrapher的使用

Leakdiag 和LDGrapher的配置   只记录配置,具体使用还在摸索中。 VS编译的项目将调试路径配置到leakdiag,即.pdb文件所在路径 配置自动抓拍 autodiag.ini文件下有,指定进程名称的抓拍间隔,如下: 配置自动抓图,详细参考 使用LeakDiag

kuikuitage的博客 2055

内存泄漏检测工具leakdiag和配套图形化查看工具LDGrapher

LeakDiag是一个监测内存泄漏的工具,可以用来精确地找到内存泄露一直到代码行。它使用微软的Detours 技术,拦截挮......

window使用内存泄漏检测工具Leakdiag记录

Leakdiag安装windows下内存泄漏查找工具Leakdiag使用起来还是蛮方便的。 Leakdiag下载之后按照默认设置安装,否则好像是会出问题的。 默认安装是直接装在C盘下。那它是如何来检测内存泄漏的呢? 下图所示是Leakdiag目录,Logs文件夹里边存储的就是记录的日志,我们则是通过启动leakdiag应用程序进行检测。 第一次试验首先测试一下常见的new和malloc作为练

jianjian1992的专栏 1万+

LeakDiag(内存泄漏检测工具)V1.25免费安装版

内存泄漏检测工具是一款内存检测工具,用于查找内存泄漏的区域,精确到某个代码行,快来下载体验吧。 软件介绍 LeakDiag是微软一款检测内存泄漏的工具,可以用来精确地找到内存泄露一直到代码行。它使用微软的Detours 技术,拦截指定内存分配的调用并跟踪各种调用栈,并报告已分配但尚未释放的内存,这一信息允许让我们在排除一个内存泄露问题时,能精确查看哪些组件进行了该分配。使用正确的调试符号,我们甚至

LeakDiag和LDGrapher内存检测工具下载

很好用个的内存泄漏检测工具,内存泄漏检测工具leakdiag和配套图形化查看工具LDGrapher。

Windows 内存泄漏检测工具——LeakDiag

LeakDiag是微软一款检测memory leak的工具,使用比较简单 首先去下载一个ftp://ftp.microsoft.com/PSS/Tools/Developer%20Support%20Tools/LeakDiag/ 安装好,默认是在c:\leakdiag 对于内存泄漏的检查,本质上在于定位内存泄漏。这种定位包含两层含义: 一是定位模块,即哪个模块出了问题。 二是定位代码,即找到造成内存泄漏的代码。 对此,在分工合作完成一个系统的背景下,我们检查内存泄漏的工作流程就应该是:第一,定位

Hector2015的博客 5739

第17篇:深入解析OpenEuler 24.03系统中的逻辑卷管理(LVM)

OpenEuler 24.03系统中的逻辑卷管理(LVM)提供了灵活的存储管理方案,通过在物理存储与文件系统间构建抽象层实现动态资源分配。

专注于系统运维、数据库、DevOps、虚拟化技术、docker、kubernetes、等云原生技术。 1690

[微软工具][内存溢出] LeakDiag & LDGrapher & LeakDiagAutoLog - 适用于 release后期压力测试...

参考资料 [url]http://download.youkuaiyun.com/download/BlueMap/2518291[/url] [url]http://www.cppblog.com/sandy/archive/2008/08/18/59260.html[/url] [url]http://www.codeproject.com/Articles/108529/LeakDiag-An-E...

Jacky_Dai的专栏 881

Deepseek 10分钟化身理性荐股神器:触碰程序员不敢想的天花板

在这个消息疯狂、波动频繁的市场,“理性”两字显得弥足珍贵。通过Deepseek+AkShare+Aktools+Dify四位一体的方案,能帮我们降低信息搜集成本,并在短期投资领域搭建出一套“可解释、低门槛、易定制”的量化荐股流程。不要再盲目听小道消息或依赖情绪驱动,不妨给自己一个机会,让数据说话。而要注意的是,“理性荐股”并非万能,它只是工具,最终的收益还得依赖投资者自身对风险和机遇的权衡。祝大家都能在这股市里收获理性的底气,寻得更精准的入场时机。

qqxdh的博客 3755

vasp算表面吸附流程_VASP表面吸附计算实例分析

本文主要为了记录在学习Vasp计算过程中如何设置INCAR中的一些参数,并不着重讲解其含义,详见可自行到vasp官网查阅。其次关于建模部分也不做细致讨论,一般结构可从Materials Studio里自带的晶体数据库导出,或从三大数据库网站上下载:1、Materaials Project网址:https://materialsproject.org/(强烈推荐,邮箱注册即可使用)2、CCDC网址:...

weixin_39617669的博客 2241

LeakDiag的使用

LeakDiag是微软一款检测memory leak的工具,使用比较简单首先去下载一个ftp://ftp.microsoft.com/PSS/Tools/Developer%20Support%20Tools/LeakDiag/安装好,默认是在c:/leakdiag然后写一个测试程序来测试#include stdio.h>#include windows.h>int main(){    wh

jamesmf的专栏 4701

用Python写个彩票小助手:自动生成双色球/大乐透号码并保存到桌面

本文介绍如何使用Python开发一个智能彩票助手,实现双色球和大乐透号码的随机生成与桌面文件保存功能。通过详细的代码示例,包括随机号码生成、文件操作、用户交互和错误处理,帮助Python初学者快速掌握实用工具开发技巧。

weixin_42566121的博客 523

内存泄漏测试小工具 - LeakDiag

LeakDiag是一个监测内存泄漏的工具,可以用来精确地找到内存泄露一直到代码行。它使用微软的Detours 技术,拦截指定内存分配的调用并跟踪各种调用栈,并报告已分配但尚未释放的内存,这一信息允许让我们在排除一个内存泄露问题时,能精确查看哪些组件进行了该分配。使用正确的调试符号,我们甚至可以看见请求分配的代码行。 关于detours: http://research.microsoft.

软件质量优化 7620

【3D目标检测】激光雷达和相机联合标定(一)——ROS同步解包

激光雷达和相机联合标定(一)——ROS同步解包

qq_44703886的博客 4236

银河麒麟Arm64 v10 sp1系统QT5.12.8离线环境配置全攻略

本文详细介绍了在银河麒麟Arm64 v10 sp1系统上配置QT5.12.8离线开发环境的完整流程。从安装包获取、依赖检查到环境变量配置,逐步指导开发者解决飞腾处理器架构下的常见问题,包括OpenGL库冲突、中文乱码处理等,特别适合军工、政务等需要离线部署的场景。

weixin_26899659的博客 509

Windows泄漏诊断工具 - 阿里之家 - 博客大巴

导读:  LeakDiag是一个在内存泄漏过程中使用的工具,可以用来精确地找到内存泄露一直到代码行。LeakDiag拦截指定内存分配的调用并跟踪各种调用栈,它报告已分配但尚未释放的内存,这一信息允许一个人排除一个内存泄露问题,以精确查看哪些组件进行了该分配。使用正确的调试符号,甚至请求分配的代码行能看见。它使用微软的Detours技术①。 LeakDiag支持5种不同的分配:l 

xu的blog 1827

[系统安全] 一.什么是逆向分析、逆向分析基础及经典扫雷游戏逆向

娜璋AI安全之家于2020年8月18日开通,将专注于Python和安全技术,主要分享Web渗透、系统安全、CVE复现、威胁情报分析、人工智能、大数据分析、恶意代码检测等文章。真心想把自己近十年的所学所做所感分享出来,与大家一起进步。 系统安全系列作者将深入研究恶意样本分析、逆向分析、攻防实战等,通过在线笔记和实践操作的形式分享与博友们学习,希望能与您一起进步。第一篇文章先带领大家学习什么是逆向分析,然后详细讲解逆向分析的典型应用,接着通过OllyDbg工具逆向分析经典的游戏扫雷,再通过Cheat Engin

杨秀璋的专栏 2万+

【免费下载】 高效解决Windows内存泄漏问题:LeakDiag工具推荐

高效解决Windows内存泄漏问题:LeakDiag工具推荐 【下载地址】Windows内存泄漏调试工具LeakDiag 本仓库提供了一个名为LeakDiag的Windows内存泄漏调试工具的资源文件。LeakDiag是一款专门用于检测和调试Windows应用程序中内存泄漏问题的工具。通过使用LeakDiag,开发者可以...

gitblog_09812的博客 1354

【NVIDIA】Jetson Orin Nano系列:编译外部驱动(交叉编译和板上编译)

Orin Nano外部驱动的开发入门,以hello world为例。使用交叉编译和板上编译两种方法

郭老二 1734

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Windows内存泄漏排查工具:助您高效定位内存泄漏问题

Windows内存泄漏排查工具:助您高效定位内存泄漏问题 【下载地址】Windows内存泄漏排查工具 这款Windows内存泄漏排查工具集成了LeakDiag和LDGrapher两款实用工具,专为高效定位和可视化内存泄漏问题而设计。LeakDiag能够实时监控目标程序,精准识别内存泄漏的源头;LDGrapher则通过图形...

gitblog_06752的博客 996

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

LeakDiag的使用和形成的LOG文件的分析方法

LeakDiag是微软一款检测memory leak的工具   安装默认是在c:\leakdiag下,完成后界面如下:   写如下的测试程序进行测试 #include "stdafx.h" #include     int _tmain(int argc, _TCHAR* argv[]) {     for (int i = 0 ; i i++)

uag 的博客 1884

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

上一篇: Nagle算法TCP_NODELAY和TCP_CORK
下一篇: 什么是Scrum?
UU_Yang
博客等级 码龄23年 926粉丝 213原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值