首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
MCU 单片机技术
»
X86
» 侦测程序句柄泄露的统计方法(3)
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
侦测程序句柄泄露的统计方法(3)
发短消息
加为好友
look_w
当前离线
UID
1066743
帖子
8283
精华
0
积分
4142
阅读权限
90
在线时间
233 小时
注册时间
2017-6-23
最后登录
2019-5-18
论坛元老
UID
1066743
1
#
打印
字体大小:
t
T
look_w
发表于 2018-6-13 14:50
|
只看该作者
侦测程序句柄泄露的统计方法(3)
基于统计方法的侦测句柄泄露通过运行 lsof 工具我们可以得到一个程序打开的所有句柄数量。我们基于统计方法的侦测句柄泄露的基本思想就是:在该程序连续运行的相当长时间内,对它打开的所有句柄数量进行固定周期采样,再利用作图工具对采样数据绘图,通过图形我们基本可以判断该程序是否存在句柄泄露。在程序运行的同时,我们可以运行大量测试用例,尽可能的覆盖程序的所有功能。
下面脚本对某进程采样 3000 个数据,每 10 秒采样一次,依此数据绘制句柄统计趋势图。
1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/sh
set -x
echo "">total_handler
psid=`ps -ef|grep $1|head -1|awk '{print $2}'`
count=0
while [ $count -lt 3000 ]
do
lsof -p $psid|wc -l >> total_handler
sleep 10
count=`expr $count + 1`
done
根据我们项目的测试经验,通常统计出来的句柄图形如下列三种:
平稳图 4. 平稳图
在程序运行当中,句柄被不断地打开关闭,因此统计图形呈现平稳的锯齿形。在程序运行后期,很多临时打开的句柄被逐渐关闭,总的句柄数量没有随着时间的推移而增加,因此该程序不存在句柄泄露。
峰值稳定图 5. 峰值稳定图
在该程序运行初期,程序打开的句柄数量会随着时间的推移而逐步增加。但是当运行一段时间后,句柄数量会达到一个相对平稳的状态,大概 3500 左右。这个时候表明程序打开了很多临时句柄,但是句柄数量相对稳定,也不存在句柄泄露问题。
递增图 6. 递增图
程序在运行当中,某一操作引起了程序打开句柄数量逐步增加,而且没有出现相对平稳的迹象,说明该程序可能存在句柄泄露,需要进一步分析是哪一部分的句柄存在泄漏,以及什么操作会引起程序句柄的泄露。
通过对程序句柄数量进行采样统计,并且绘制出相应的统计图形,能够以比较直观的方式判断在程序中是否存在句柄泄露。该方法基于程序要运行大量的测试用例,增加测试用例的覆盖率,尽可能多的用测试用例触发程序打开和关闭句柄的操作,这样才能发现潜在的句柄泄露 bug。对于如何能够快速的发现句柄泄露代码,我们将做进一步研究。
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议