博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用按键精灵+umdh定位内存泄露问题的方式
阅读量:6276 次
发布时间:2019-06-22

本文共 1220 字,大约阅读时间需要 4 分钟。

使用按键精灵+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-Minuteif "%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

你可能感兴趣的文章
关于再次查看已做的多选题状态逻辑问题
查看>>
动态下拉菜单,非hover
查看>>
政府安全资讯精选 2017年第十六期 工信部发布关于规范互联网信息服务使用域名的通知;俄罗斯拟建立备用DNS;Google打击安卓应用在未经同意情况下收集个人信...
查看>>
简单易懂的谈谈 javascript 中的继承
查看>>
多线程基础知识
查看>>
iOS汇编基础(四)指针和macho文件
查看>>
Laravel 技巧锦集
查看>>
Android 使用 ViewPager+RecyclerView+SmartRefreshLayout 实现顶部图片下拉视差效果
查看>>
Flutter之基础Widget
查看>>
写给0-3岁产品经理的12封信(第08篇)——产品运营能力
查看>>
ArcGIS Engine 符号自动化配置工具实现
查看>>
小程序 · 跳转带参数写法,兼容url的出错
查看>>
flutter error
查看>>
Flask框架从入门到精通之模型数据库配置(十一)
查看>>
10年重新出发
查看>>
2019年-年终总结
查看>>
聊聊elasticsearch的RoutingService
查看>>
让人抓头的Java并发(一) 轻松认识多线程
查看>>
从源码剖析useState的执行过程
查看>>
地包天如何矫正?
查看>>