1.简单配置
在windbg程序目录下有个gflags.exe,运行后设置:

运行CMD.EXE,输入"D:\Debugging Tools for Windows (x86)\gflags.exe" /i test.exe +ust,如果设置成功则显示:

如果设置失败,说明注册表被禁用了,可以尝试解除所有对注册表的禁用。这个注册表位置为:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options,命令“gflags.exe /i test.exe +ust”实际上就是在该路径下创建一个子键“test.exe”并创建一个名为GlobalFlag内容为0x00001000的REG_DWORD值。
参考:http://support.citrix.com/article/CTX106970

我起初的时候也设置失败了,后来发现是360的一个服务禁止了对上述注册表的操作,卸载之后就行了。

2.关于符号
如果符号不全或者不正确,也不能使用该方法侦测内存泄露的位置。如果真机系统符号不全(如xp sp3),可以在虚拟机中侦测。

3.具体实例
例如内存泄露:
Detected memory leaks!
Dumping objects ->
e:\vs工程\tests\testsdlg.cpp(101) : {118} normal block at 0x003BBAD8, 100 bytes long.
Data: <                > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD 
Object dump complete.

!heap -x 0x003BBAD8

Entry     User      Heap      Segment       Size  PrevSize  Unused    Flags
-----------------------------------------------------------------------------
003bbab0  003bbab8  003b0000  003b0640        a0      17f0        18  busy extra fill

!heap -p -a 003bbab0

address 003bbab0 found in
_HEAP @ 3b0000
HEAP_ENTRY Size Prev Flags    UserPtr UserSize - state
003bbab0 0014 0000  [07]   003bbab8    00088 - (busy)
Trace: 0357
7c98eed2 ntdll!RtlDebugAllocateHeap+0x000000e1
7c96b394 ntdll!RtlAllocateHeapSlowly+0x00000044
7c938f21 ntdll!RtlAllocateHeap+0x00000e64
1024db9c MSVCR80D!malloc_base+0x000000ec
1020faa5 MSVCR80D!malloc_dbg+0x000002d5
1020f839 MSVCR80D!malloc_dbg+0x00000069
1020f7ef MSVCR80D!malloc_dbg+0x0000001f
78332934 MFC80UD+0x00052934
783329b8 MFC80UD+0x000529b8
78332396 MFC80UD+0x00052396
4129ae tests!CtestsDlg::OnInitDialog+0x0000013e
7839bfae MFC80UD+0x000bbfae
77d18734 USER32!InternalCallWinProc+0x00000028
77d2413c USER32!UserCallDlgProcCheckWow+0x000000f0
77d23b30 USER32!DefDlgProcWorker+0x000000a8
77d23d5c USER32!DefDlgProcW+0x00000022
77d18734 USER32!InternalCallWinProc+0x00000028
77d18816 USER32!UserCallWinProcCheckWow+0x00000150
77d2a013 USER32!CallWindowProcAorW+0x00000098
77d2a039 USER32!CallWindowProcW+0x0000001b
7835e302 MFC80UD+0x0007e302
7835cb1b MFC80UD+0x0007cb1b
7839d393 MFC80UD+0x000bd393
7835fbf7 MFC80UD+0x0007fbf7
7835f3b0 MFC80UD+0x0007f3b0
7835c9be MFC80UD+0x0007c9be
7835ceb4 MFC80UD+0x0007ceb4
78358979 MFC80UD+0x00078979
77d18734 USER32!InternalCallWinProc+0x00000028
77d18816 USER32!UserCallWinProcCheckWow+0x00000150
77d2927b USER32!SendMessageWorker+0x000004a5
77d2651a USER32!InternalCreateDialog+0x000009df

其中4129ae 地址就是分配内存的地方,从而导致的内存泄露。

http://support.microsoft.com/kb/268343/zh-cn

强大的windbg定位内存泄露,两句命令搞定!的更多相关文章

  1. 对百度WebUploader开源上传控件的二次封装,精简前端代码(两句代码搞定上传)

    前言 首先声明一下,我这个是对WebUploader开源上传控件的二次封装,底层还是WebUploader实现的,只是为了更简洁的使用他而已. 下面先介绍一下WebUploader 简介: WebUp ...

  2. 对百度WebUploader的二次封装,精简前端代码之图片预览上传(两句代码搞定上传)

    前言 本篇文章上一篇: 对百度WebUploader开源上传控件的二次封装,精简前端代码(两句代码搞定上传) 此篇是在上面的基础上扩展出来专门上传图片的控件封装. 首先我们看看效果: 正文 使用方式同 ...

  3. css两句话搞定漂亮表格样式

    CSS代码: table { background-color:#c0de98; width:500px; height:100px; } td { background-color:#ffffff; ...

  4. umdh windbg分析内存泄露

    A.利用工具umdh(user-mode dump heap)分析:此处以程序MemoryLeak.exe为例子 1.开启cmd 键入要定位内存泄露的程序gflags.exe /i memroylea ...

  5. FastMM 定位内存泄露的代码位置

    FastMM 定位内存泄露的代码位置 开源的FastMM,使用很简单,在工程的第一行引用FastMM4即可(注意,一定要在第一个Uses的位置),可以在调试程序时提示内存泄露情况,还可以生成报告. 在 ...

  6. 利用linux的mtrace命令定位内存泄露(Memory Leak)

    一谈到内存泄露, 多数程序猿都闻之色变. 没错, 内存泄露非常easy引入. 但非常难定位.  以你我的手机为例(如果不常常关机). 如果每天泄露一些内存, 那么開始的一个星期, 你会发现手机好好的. ...

  7. JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(三):两个Viewmodel搞定增删改查

    前言:之前博主分享过knockoutJS和BootstrapTable的一些基础用法,都是写基础应用,根本谈不上封装,仅仅是避免了html控件的取值和赋值,远远没有将MVVM的精妙展现出来.最近项目打 ...

  8. IOS 一句代码搞定启动引导页

    前言引导页,一个酷炫的页面,自从微博用了之后一下就火起来了,对于现在来说一个app如果没有引导页似乎总显那么不接地气,那么为了让我们的app也“高大上”一次,我写了一个demo来实现启动引导页的实现, ...

  9. [转] Java程序员学C#基本语法两个小时搞定(对比学习)

    Java程序员学C#基本语法两个小时搞定(对比学习)   对于学习一门新的语言,关键是学习新语言和以前掌握的语言的区别,但是也不要让以前语言的东西,固定了自己的思维模式,多看一下新的语言的编程思想. ...

随机推荐

  1. PRML读书会第五章 Neural Networks(神经网络、BP误差后向传播链式求导法则、正则化、卷积网络)

    主讲人 网神 (新浪微博:@豆角茄子麻酱凉面) 网神(66707180) 18:55:06 那我们开始了啊,前面第3,4章讲了回归和分类问题,他们应用的主要限制是维度灾难问题.今天的第5章神经网络的内 ...

  2. 利用CSS预处理技术实现项目换肤功能(less css + asp.net mvc4.0 bundle)

    一.背景 在越来越重视用户体验的今天,换肤功能也慢慢被重视起来.一个web系统用户可以选择一个自己喜欢的系统主题,在用户眼里还是会多少加点分的.我们很开心的是easyui v1.3.4有自带defau ...

  3. Javascript/jQuery 获取地址栏URL参数的方法

    1.jquery获取url很简单,代码如下 window.location.href; 2.javascript获取url参数 function getUrlParam(name) { var reg ...

  4. mysql 启动失败

    1 mysql 启动时报:MySQL Daemon failed to start.并且启动失败 2 查看mysql log日志  less /var/log/mysqld.log 3 从两行erro ...

  5. java中的URLConnection

    *URLConnection是个抽象类,它有两个直接子类分别是HttpURLConnection和JarURLConnection.另外一个重要的类是URL,通常URL可以通过传给构造器一个Strin ...

  6. ElasticSearch入门系列(二)交互API

    一.基于HTTP协议,以JSON为数据交互格式的RESTful API 向ElasticSearch发出请求的组成部分与其他的普通的HTTP请求是一样的: curl -X<VERB> '& ...

  7. yii2搭建完美后台并实现rbac权限控制实例教程

    1.安装yii2 未安装的请参考yii2史上最简单式安装教程,没有之一 或者参考yii2实战教程之详细安装步骤 已安装的请继续看下一步操作 2.配置数据库 2.1 配置数据库 修改common/con ...

  8. java之自定义回调接口

    本质上为:传递不同的实现的接口实例,执行不同的程序,即有扩展性. 在一个方法中,可以实现一个对象中的接口,实例化该接口,即可完成对不同对象的不同回掉. 在原有类中,调用接口中的方法,根据不同的接口实例 ...

  9. java 时间操作

    设置获取时间日期格式 // 设置日期格式 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); // 为 ...

  10. 强连通 HDU 1827

    n个点m条边 n个权lcy 要叫这个人的花费 m条边 缩点后 新的图中 入度为0的点要通知  通知强连通分量中权值最小的 #include<stdio.h> #include<alg ...