windows性能分析

一、VSPerf性能分析

通过VSPerf工具抓取性能报告,通过VS进行分析;

1、抓取方法:(分析文件和pdb必须匹配!!!)

备注:win8以上系统(如果提示错误,使用管理员启动cmd在尝试)

命令:

开始抓取性能报告:vsperf /attach:[pid/exename]

停止抓取性能报告:vsperf /detach

 2、以前的系统抓取性能报告命令:

::start the profiler

vsperfcmd /start:sample /output:test1.vsp

::send the profiler to a waiting state

vsperfcmd /global off

::attach to your application by specifying the pid

vsperfcmd /attach:[pid]

::activate the profiler

vsperfcmd /global on

::detach the profiler from your application

vsperfcmd /detach

::shutdown the profiler

vsperfcmd /shutdown

3、分析性能报告

1)分析性能报告文件(vs打开性能文件进行分析)

2)根据目标程序执行情况,结合CPU曲线选择合适的周期进行分析

3)根据函数试图和调用栈试图,确定性能热点

4)右键函数可以显示函数详情

备注:独占样本:函数自身占用的样本数,不包含子函数占用时间;非独占样本:包含函数调用的子函数的时间;一般使用非独占样本进行分析;

二、UMDH内存分析

umdh是windbg自带的内存检测工具,原理gflags记录内存时的调用栈,通过内存泄漏前后快照对比分析出占用大量内存的函数;

命令:

::设置pdb路径

SET _NT_SYMBOL_PATH_=pdb路径

::开启收集用户态信息

gflags.exe -i test.exe +ust

::抓取快照1

umdh.exe -pn:test.exe -f:umdh1.txt

::抓取快照1

umdh.exe -pn:test.exe -f:umdh2.txt

::比对快照

umdh.exe -d umdh1 umdh2 >> umdb12.txt

::停止收集用户态信息

gflags.exe -I text.exe -ust

三、Heap内存分析

1、开启收集用户态信息,gflags.exe -i test.exe +ust

2、任务管理器,抓取dmp

3、关闭收集用户态信息,gflags.exe -i test.exe -ust

4、打开windbg(版本:10.0.18362.1         AMD64)

5、!heap -s

备注:如果提示your debugger do not have full symbol information,表示pdb不一致,需要使用.sympath SRV*d:\mysymbols*http://msdl.microsoft.com/download/symbols去符号服务器下载pdb,然后执行.reload重新加载符号文件,另外,使用ld xxx命令强制加载符号文件,lmvm xxx显示文件信息,其中xxx为dll(exe)文件名,如ld test.dll是强制加载test.dll的符号文件,lm显示所有模块符号文件加载情况。

6、显示堆列表,找到占用内存最大的堆进行分析

7、!heap -stat -h xxx,其中xxx为堆地址;size表示每次分配的内存大小,blocks表示分配的次数,total表示内存分配的总大小;

8、!heap -flt s xxx,其中xxx为size上一步看到的size的值,使用该命令分析内存为size大小的内存被哪些地方占用

9、!heap -p -a xxx,分析具体的堆栈,xxx为内存地址,即上一步获取到的HEAP_ENTRY的值;

10、分析堆栈,在结合具体代码和使用场景,可以确定内存泄漏问题;

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值