Windows系统中内存泄露与检测工具及方法

1.检测需要使用的工具:windbg工具。
检测前,需要先安装windbg工具。安装了该工具后,会在安装目录下有一个umdh工具。
假设windbg安装在以下目录下:D:\Program Files\Debugging Tools for Windows (x86)

2.内存泄露检测技巧
2.1 运行cmd窗口,将路径设置到安装路径下;
2.2 在该cmd窗口中设置环境变量_NT_SYMBOL_PATH:
D:\Program Files\Debugging Tools for Windows (x86)>set _NT_SYMBOL_PATH="%windir%\symbols";D:\AppPath;  //说明:AppPath为应用程序绝对路径 
2.3 在该cmd窗口中设置标签flags:
D:\Program Files\Debugging Tools for Windows (x86)>gflags -i appname.exe +ust  
2.4 启动应用程序appname.exe;
2.5 保存appname.exe的当前状态:
D:\Program Files\Debugging Tools for Windows (x86)>umdh.exe -pn:appname.exe -f:FirstDump.txt 
2.6 间隔一段时间后,继续保存appname.exe的当前状态:
D:\Program Files\Debugging Tools for Windows (x86)>umdh.exe -pn:appname.exe -f:SecondDump.txt 
2.7 使用umdh.exe工具比较两个dump文件:
D:\Program Files\Debugging Tools for Windows (x86)>umdh.exe FirstDump.txt SecondDump.txt -f:Result.txt
2.8 最后,通过打开result.exe文件,就可以看到里面显示了代码行中的那个语句出现了内存泄露。

原文地址:https://www.cnblogs.com/zhehan54/p/9783635.html

时间: 2024-08-25 12:38:33

Windows系统中内存泄露与检测工具及方法的相关文章

[转]浅谈C/C++内存泄露及其检测工具

转自:http://www.cnblogs.com/taoxu0903/archive/2007/10/27/939261.html 对于一个c/c++程序员来说,内存泄漏是一个常见的也是令人头疼的问题.已经有许多技术被研究出来以应对这个问题,比如 Smart Pointer,Garbage Collection等.Smart Pointer技术比较成熟,STL中已经包含支持Smart Pointer的class,但是它的使用似乎并不广泛,而且它也不能解决所有的问题:Garbage Collec

windows系统中内存被system进程占用了很多很多

1.问题描述: 系统会更新,但是貌似系统更新失败,系统开启了一个线程,既没有完成系统想做的更新,又每次开机会启动.每次吃了我2000M内存,吃不消啊 2. 解决方案 2.1 百度了这个问题,通过这个链接解决了问题 链接:win10内存占用高?怎么办 2.2 做了什么就好了呢? 根据2.1的网址,根据说明去做操作,然后重启电脑,系统就没有打开那个很占用内容的进程 如图所示 原文地址:https://www.cnblogs.com/todaylockhere/p/9434070.html

Cmder命令行工具在Windows系统中的配置

一.Cmder简介 Cmder:一款用于Windows系统中,可增强传统cmd命令行工具的控制台模拟器(类似于Linux系统中的终端控制窗口) 特点: 无需安装,解压即用 可使用较多Linux命令,如:vi.vim.ls.pwd.grep.unzip.bash.perl.ssh 可在窗口内外自由使用常规的复制和粘贴操作 支持多Tab页的cmd窗口 提供了对命令窗口中的字符串进行快速搜索定位的功能 在传统cmd命令行工具的基础上,增加了Monokai配色方案,界面美观 命令窗口尺寸大小可自由调整

内存泄漏及其检测工具

一.什么是内存泄露? 在计算机科学中,内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况.内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费. 通常我们所说的内存泄漏是指堆内存的泄漏.堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显示释放的内存.应用程序一般使用malloc,realloc,new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或del

Windows系统CPU内存网络性能统计第一篇 内存

最近翻出以前做过的Windows系统性能统计程序,这个程序可以统计系统中的CPU使用情况,内存使用情况以及网络流量.现在将其整理一下(共有三篇),希望对大家有所帮助. 目录如下: 1.<Windows系统CPU内存网络性能统计第一篇 内存> 2.<Windows系统CPU内存网络性能统计第二篇 CPU> 3.<Windows系统CPU内存网络性能统计第三篇网络流量> 本篇将介绍统计系统内存使用情况,包括内存使用率.总物理内存大小.可用物理内存大小.总虚拟内存大小,可用虚

iOS内存泄漏自动检测工具PLeakSniffer

http://www.cocoachina.com/ios/20160706/16951.html 本文授权转自MrPeak技术分享(公众号:MrPeakTech) 新款Objective-C内存泄漏自动检测工具PLeakSniffer,GitHub地址. 背景 前些天读到WeRead团队分享的一款内存泄漏检测工具MLeaksFinder,恍惚想起早些时候自己也有过编写这样一个小工具的想法,不知道由于什么原因把这事给忘记了.在仔细读过MLeaksFinder源码,了解实现思路之后,发现和自己最初

linux中内存泄漏的检测(二)定制化的malloc/free

<linux中内存泄漏的检测(一)最简单的方法>介绍了最简单的内存泄漏检测方法,这种方法虽然简单,却有很多现实的问题,导致它不能用于实际的生产中. 直接使用这种方法肯定是不现实的,因为: (1)把整个工程里所有调用malloc/free的地方都改成my_malloc/my_free,代码改动很大. (2)通常动态库和静态库的代码是没有权限修改的. 今天就来解决这个问题,动态地决定让程序使用自己的还是系统的内存管理接口. wrap选项 不希望修改产品代码,那么用于申请/释放内存的接口还是mall

C++内存泄露和检测

C++中的内存泄露一般指堆中的内存泄露.堆内存是我们手动malloc/realloc/new申请的,程序不会自动回收,需要调用free或delete手动释放,否则就会造成内存泄露.内存泄露其实还应该包括系统资料的泄露,比如socket连接等,使用完后也要释放. 内存泄露的原因: 总结下来,内存泄露大概有一下几个原因: 1.编码错误:malloc.realloc.new申请的内存在堆上,需要手动显示释放,调用free或delete.申请和释放必须成对出现malloc/realloc对应free,n

在windows系统中使用backoff2005的测试脚本来测试分词结果

分词程序的测试一般用backoff2005的脚本,但是backoff2005脚本是运行在linux系统上的.如果在windows系统中时,怎么使用该脚本呢?假设用户已经有了icwb2-data压缩包了. 首先得安装perl开发环境.下载地址: https://dwimperl.googlecode.com/files/dwimperl-5.14.2.1-v7-32bit.exe接下来,需要安装diff工具,下载地址: http://superb-dca3.dl.sourceforge.net/p