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

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

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

目录
相关文章
|
8月前
|
Arthas 运维 监控
定位频繁创建对象导致内存溢出风险的思路
定位频繁创建对象导致内存溢出风险的思路
181 1
|
15天前
|
缓存 Java Android开发
安卓开发中的内存泄漏分析与优化策略
【4月更文挑战第27天】 在移动应用开发领域,性能优化始终是提升用户体验的关键因素之一。特别是对于安卓平台,由于设备的硬件配置差异较大,良好的内存管理对于保证应用流畅运行尤为重要。本文将深入探讨安卓开发中常见的内存泄漏问题,并提供一系列检测和解决内存泄漏的实用策略。通过对工具的使用、代码实践以及系统架构设计的多维度分析,旨在帮助开发者有效避免和处理内存泄漏,确保应用性能稳定。
|
1月前
|
监控 安全 Java
线程死循环定位与处理:精准定位,妥善处理,预防为先
精准定位死循环,妥善处理问题,编码阶段防风险。
20 0
|
9月前
cocoscreator查内存泄露,绘制内存监视器
cocoscreator查内存泄露,绘制内存监视器
173 0
|
前端开发 PHP 容器
快速定位无用路由 妈妈再也不用担心人工排雷了
快速定位无用路由 妈妈再也不用担心人工排雷了
81 0
快速定位无用路由 妈妈再也不用担心人工排雷了
|
SQL BI 数据库
记一次bug分析定位过程
其实很多时候,我们在测试过程中发现的很多bug,并不是由于开发人员编码能力不好,或者粗心大意造成,而是在项目开发实施过程中,没有遵循一些必要的项目流程,没有充分认识到质量的重要性;如果能做好这方面的工作,关注流程,而不是喊口号,人人重视质量,人人为结果负责,那么,会有很多问题、不只是bug,都将“被扼杀在摇篮里”......
记一次bug分析定位过程
程序人生 - 汽车后视镜锁车自动折叠为啥失灵?
程序人生 - 汽车后视镜锁车自动折叠为啥失灵?
94 0
程序人生 - 汽车后视镜锁车自动折叠为啥失灵?
|
存储 缓存 监控
来来来,聊聊7种内存泄露场景和13种解决方案
来来来,聊聊7种内存泄露场景和13种解决方案
297 0
来来来,聊聊7种内存泄露场景和13种解决方案
|
存储 缓存 JSON
定位Flutter内存问题很难么?
flutter内存泄漏定位
2230 0
定位Flutter内存问题很难么?
|
设计模式 缓存 JavaScript
90%的人会遇到性能问题,如何用1行代码快速定位?
今天,齐光将会基于之前列举的众多指标,给出一些常见的调优分析思路,即:如何在众多异常性能指标中,找出最核心的那一个,进而定位性能瓶颈点,最后进行性能调优。整篇文章会按照代码、CPU、内存、网络、磁盘等方向进行组织,针对对某一各优化点,会有系统的「套路」总结,便于思路的迁移实践。
2277 0