文档章节

使用按键精灵+umdh定位内存泄露问题的方式

yagerfgcs
 yagerfgcs
发布于 2016/06/26 17:50
字数 492
阅读 15
收藏 0

使用按键精灵+umdh定位内存泄露问题的方式

一、配置方法

1、 安装windbg版本,必须安装:X86 Debuggers And Tools-x86_en-us.msi

2、 安装windows相关pdb和客户端程序对应的pdb

a) 比如:F:\symbols下创建两个目录,windows存放操作系统pdbpdb目录存放播放器pdbPdb一定要与运行的播放器版本完全匹配,否则定位结果没意义

3、 配置环境变量

a) 将windbg的路径配置到path环境变量中

path=C:\Program Files\Windows Kits\8.0\Debuggers\x86

b) 配置umdh使用的symbols目录

添加_NT_SYMBOL_PATH

c) 配置gflags标记

在命令行输入gfalgs,按下图方式配置

gflags打开堆栈开关

 打开gflags中对应开关


4、 按键精灵配置

a) 录制脚本。注意脚本必须是从初始页面开始最终回到初始界面。(比如从登陆页面开始,经过一系列操作后,最终回到登陆界面。)

b) 录完,双击脚本,在最后增加以下几行内容,catch_memory_snapshot.bat参考下面的附件。注意,例子里是将bat脚本放到D:\umdh目录下。脚本里抓取的快照也是存放在D:\umdh目录下的。

Delay 1883

RunApp "D:\umdh\catch_memory_snapshot.bat"

Delay 5000

看上去像这样


5、 验证配置结果是否正确

使用umdh命令对比两次快照结果。

umdh 2015-05-09-17-14.txt 2015-05-09-17-21.txt -f:result.txt

二、查看result.txt的结果

1) 能看到pdb加载成功

umdh_result

2) 能定位到代码行位置

三、附件

供按键精灵调用的脚本catch_memory_snapshot.bat,功能定时抓取内存信息生成对比信息

for /f "tokens=1,2,3 delims=/-" %%a in ('date /t') do (
 set yyyy=%%a
 set mm=%%b
 set dd=%%c
)
set Date=%yyyy:~-4%-%mm%-%dd:~0,2%
Time=`time /t`

::格式为Year-Month-Day-Hour-Minute
if "%Time:~0,1%" neq " "  (
set DateTime=%Date%-%Time:~0,2%-%Time:~3,2%) else (
if "%Time:~1,1%" neq " "  (
set DateTime=%Date%-0%Time:~1,1%-%Time:~3,2%) 	else (
set DateTime=%Date%-%Time:~0,2%-%Time:~3,2%
))

umdh -pn:iexplore.exe -f:D:\\umdh\\%DateTime%.txt


© 著作权归作者所有

共有 人打赏支持
yagerfgcs
粉丝 5
博文 34
码字总数 13476
作品 0
南京
技术主管
私信 提问
使用按键精灵+umdh定位内存泄露问题的方式

使用按键精灵+umdh定位内存泄露问题的方式 一、配置方法 1、 安装windbg版本,必须安装:X86 Debuggers And Tools-x86_en-us.msi 2、 安装windows相关pdb和客户端程序对应的pdb。 a) 比如:F...

筱骏
2016/04/18
0
0
Xcode8 使用Instruments检测定位并解决iOS内存泄漏问题

缘由 最近公司项目更新了几个版本,主要是客户端配合H5上一些活动和优化解决一些遗留下来的问题。review代码的过程中,发现项目在模拟器里跑时内存使用很大,达到了130多兆,趁着刚发完新版有...

春夏love雨雪
2017/09/12
0
0
95行代码破解极验滑动验证码(附源码)

  前言   前段写了一个破解极验滑动验证码的程序,事后发现网上的教程给出的方法全都非常复杂,一写就是一个系列。而我写的程序全加起来连100行都不到,所以我想还是有必要和大家分享一下...

FreeBuf
2018/05/09
0
0
利用Valgrind和gperftools解决内存问题

近期,在对于系统进行性能测试,暴露一些问题。在定位过程中尝试使用一些工具,有效的帮助识别问题,并且解决了问题。由于问题比较典型,分享给大家,以便大家遇到类似问题时,借鉴参考。 工...

通爸
2017/12/28
0
0
Android 内存泄露优化处理

参考: Android应用内存泄露分析、改善经验总结 使用新版Android Studio检测内存泄露和性能 解决安卓CPU使用率过高问题 Android CPU使用过大的问题解决以及造成的原因 AndroidStudio CPU Mo...

天鬼
2017/11/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

js数组遍历和对象遍历

数组遍历 for for(var i=0,len=arr.length;i<len;i++){console.log(arr[i]);} forEach - ES5语法,性能比for弱,不能使用break终止循环,不能使用return arr.forEach(function(item,inde......

祖达
32分钟前
2
0
Java网络编程

基本概念 网络IO会涉及到同步,异步,阻塞,非阻塞等几个概念。 一个网络IO读取过程是数据从 网卡 到 内核缓冲区 到 用户内存 的过程。同步和异步区别在于数据从内核到用户内存的过程是否需要...

春哥大魔王的博客
53分钟前
2
0
Spring "reg:zookeeper" 的前缀 "reg" 未绑定等类似问题解决方案。

今天同事遇到一个Spring启动加载配置文件时,不识别reg:zookeeper标签的问题。 我查看配置,发现是Spring配置文件的头部没有引入reg标签的命名空间,具体如下图: 所以,以后遇到类似的标签未...

花漾年华
今天
2
0
阿里云领衔云市场

近期,2018年Q4及全年的全球云基础设施服务市场数据新鲜出炉,发布方是美国市场研究机构Synergy Research Group。这个机构是专做电信网络市场情报的公司,成立于1999年,每年都会公布各大公有...

linuxCool
今天
2
0
C++友元函数和友元类(C++ friend)详解

私有成员只能在类的成员函数内部访问,如果想在别处访问对象的私有成员,只能通过类提供的接口(成员函数)间接地进行。这固然能够带来数据隐藏的好处,利于将来程序的扩充,但也会增加程序书...

shzwork
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部