SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Downloaden Sie, um offline zu lesen
For more details view the technical report
(publicly available. Search on Google)
Locating Crashing Faults based on Crash Stack Traces
Liang Gong
软件崩溃缺陷定位方法的研究
2011开题答辩
To copy, to republish, to post on
servers or to redistribute to lists,
requires prior specific permission.
P r e s e n t e d b y
贡 亮 (2010212412)
导 师: 张洪宇
• 选题动机
• 困难与挑战
• 研究内容
• 研究目标
• 研究方案
• 研究数据
• 研究计划
• 选题背景
• 软件崩溃报告机制
• 基于频谱的缺陷定位技术
2011 Dissertation
Presentation
提 纲
Introduction&
framework
P r e s e n t e d b y
贡 亮 (2010212412)
Gong. Liang
Testing can only prove the presence
of bugs, not their absence.
Edsger W. Dijkstra
“
”
软件崩溃无处不在
当Windows发布的时候
如果不能及时修复软件
缺陷意味着客户的流失
软件崩溃无处不在
2011 Dissertation
Presentation
崩溃报告机制
CrashReportingSystem
P r e s e n t e d b y
贡 亮 (2010212412)
Gong. Liang
Windows Error Reporting
Bug Buddy
Mozilla Crash Reporter
2011 Dissertation
Presentation
崩溃报告机制
CrashReportingSystem
P r e s e n t e d b y
贡 亮 (2010212412)
Gong. Liang
发送崩溃报告
崩溃报告收集
软件崩溃
同一种缺陷的崩溃信息软件调试 报告分类
2011 Dissertation
Presentation
选题动机
ManualDebugging
P r e s e n t e d b y
贡 亮 (2010212412)
Gong. Liang
然而软件调试(Debugging)往往非常费时费力,
通常开发人员被指定修复一个缺陷(Fault)之后需要
阅读大量的崩溃报告(Crash Report) ,讨论,甚至
重现崩溃场景(Reproduce),推断出崩溃的具体位置
然后修复缺陷。
2011 Dissertation
Presentation
选题动机
ManualDebugging
P r e s e n t e d b y
贡 亮 (2010212412)
Gong. Liang
如果能够有某种技术自动定位缺陷
那么将会提高缺陷定位效率,提升软件
质量,降低维护成本。
2011 Dissertation
Presentation
缺陷定位
FaultLocalization
P r e s e n t e d b y
贡 亮 (2010212412)
Gong. Liang
频谱缺陷定位技术
(Spectrum-base Fault Localization)
程序频谱(Program Spectra)
增量调试
(Delta Debugging)
程序切片
(Program Slicing)
每列表示一个语句在所有路径中执行次数
每行表示次程序执行路径
标签列表示执行是否出错
Fault Localization
Ranking Formulas
Ranking
Introduction
P r e s e n t e d b y
Machine Learning Team
Dedicated to premium
ML solution.
• 根据公式计算程序实体含有缺陷的可疑度
2011 Dissertation
Presentation
缺陷定位
FaultLocalization
P r e s e n t e d b y
贡 亮 (2010212412)
Gong. Liang
Ochiai
Tarantula
Jaccard
Ben Liblit 2003 年提出一种抽样插桩的方
法,他们的方法在采样率为1/1000时可以
保证插桩程序效率下降不超过5%,但是条
件是每种缺陷对应的崩溃报告至少需要
2300条,只适用于用户极广的软件系统比
如Office Xp.
正确执行路径
失败执行路径
可执行程序
#include
<stdio.h>
int main()
{
…
}
含缺陷代码
(1) 插桩与编译
频谱缺陷
定位系统
Line 541
Line 387
…
可疑代码列表
(2) 执行测试用例 (3) 计算可疑度
现有频谱缺陷定位技术框架
ConventionalFaultLocalizationFramework
正确执行路径
失败执行路径
可执行程序
#include
<stdio.h>
int main()
{
…
}
含缺陷代码
(1) 插桩与编译
频谱缺陷
定位系统
Line 541
Line 387
…
可疑代码列表
(2) 执行测试用例 (3) 计算可疑度
以往基于频谱缺陷定位的方法需要在客户端进
行插桩,导致发布软件效率下降37%-625%导
致用户体验变差,设置软件不可用
现有频谱缺陷定位技术框架
ConventionalFaultLocalizationFramework
2011 Dissertation
Presentation
结果评估
Evaluation
P r e s e n t e d b y
贡 亮 (2010212412)
Gong. Liang
横轴表示阅读代码百分比
纵轴表示定位缺陷百分比
2011 Dissertation
Presentation
崩溃报告
CrashReport
P r e s e n t e d b y
贡 亮 (2010212412)
Gong. Liang
基于程序频谱(Program Spectra)的缺陷定位技术需
要使用程序动态执行的路径信息。
Gang-Ryung Uh等人的研究发现:程序插桩会使程
序变慢37%-625%,所以出于对客户体验的考虑,发布
版本中的程序中不会进行插桩。
所以通常崩溃报告系统只会记录如下信息:
Information Description
Details
Product 产品编号
Date Processed 崩溃时间
Signature 崩溃的函数
Version 产品版本
OS Version 操作系统版本
Modules
崩溃时所载入模块
以及对应模块版本
Raw Dump
软件崩溃时
所有线程的调用栈
Extensions
所有安装的插件
以及对应版本号
Comments 用户评价以及其他信息
2011 Dissertation
Presentation
问题
CurrentSituation
P r e s e n t e d b y
贡 亮 (2010212412)
Gong. Liang
需要一种技术将频谱缺陷
定位应用于崩溃报告
崩溃报告源源不断发来,
信息不能有效利用
1
•Firefox 每周收到
至少12万条崩溃报告。
•Microsoft 已经收
到了累计超过10亿条
崩溃报告。
现有频谱缺陷定位技
术需要崩溃执行路径,
但是崩溃报告中没有。
2
正确执行路径
扩展出失败执行路径
发布程序
#include
<stdio.h>
int main()
{
…
}
含缺陷代码 基于频谱的
缺陷定位系统 可疑函数列表
崩溃报告
程序崩溃
静态分析
函数调用关系
发送至服务器
客户端
插桩程序
插桩与编译
本研究提出的缺陷定位技术框架
NewFaultLocalizationFramework
客户端程序不需要插桩,
只保留调用栈等信息。
正确执行路径
扩展出失败执行路径
发布程序
#include
<stdio.h>
int main()
{
…
}
含缺陷代码 基于频谱的
缺陷定位系统 可疑函数列表
崩溃报告
程序崩溃
静态分析
函数调用关系
发送至服务器
客户端
插桩程序
插桩与编译
本研究提出的缺陷定位技术框架
NewFaultLocalizationFramework
客户端程序不需要插桩,
只保留调用栈等信息。
2011 Dissertation
Presentation
调用栈扩展
Illustration
P r e s e n t e d b y
贡 亮 (2010212412)
Gong. Liang
(A) 函数调用图
(在函数 f11 处崩溃)
(B) 崩溃调用栈
f1 → f3 f4 → f9
f1 → f4 f4 → f13
f2 → f6 f5 → f4
f3→ f6 f10 → f14
f3 → f7 f11 → f14
f3 → f12
f11 → f15
f12 → f11
f12 → f13
(C) 函数调用对
f9
f1
f3 f4
f6 f7
f12
f13
f15
f14
f11
f2
f10
f5
f11
f12
f3
f1
Frame 0
Frame 1
Frame 2
Frame 3
2011 Dissertation
Presentation
缺陷定位
FaultLocalization
P r e s e n t e d b y
贡 亮 (2010212412)
Gong. Liang
f9
f1
f3 f4
f6 f7
f12
f13
f15
f14
f11
f2
f10
f5
距离 函数 ID
0 f1, f3, f12, f11
1
f4, f6, f7,
f13, f14, f15
2 f9
(D) 函数与调用栈距离
f1 f2 f3 f4 f5 f6 f7 f9 f10 f11 f12 f13 f14 f15
1 0 1 0 0 0 0 0 0 1 1 0 0 0
1 0 1 1 0 1 1 0 0 1 1 1 1 1
1 0 1 1 0 1 1 1 0 1 1 1 1 1
第一层扩展
第二层扩展
(E) 调用栈扩展
(A) 函数调用图
(在函数 f11 处崩溃)
2011 Dissertation
Presentation
缺陷定位
FaultLocalization
P r e s e n t e d b y
贡 亮 (2010212412)
Gong. Liang
f9
f1
f3 f4
f6 f7
f12
f13
f15
f14
f11
f2
f10
f5
(F) f11 扩展带来的噪音
f14 f15
{ }
B
f11 函数体中的循环
CA
(A) 函数调用图
(在函数 f11 处崩溃)
Level 1
Level 2
Level 3
2011 Dissertation
Presentation
启发式规则
Heuristic-1
P r e s e n t e d b y
贡 亮 (2010212412)
Gong. Liang
Mozilla Firefox is a free and open source web browser.
As of August 2011, Firefox is the second most widely used browser.
Firefox
3.6
Firefox 4.0
Bugzilla
Socorro
Thunderbird Breakpad
SeaMonkey
Camino
Fennec
客户端采集崩溃报告
收集崩溃报告,统计信息
产品质量分析
对影响最大的崩溃人工建立
缺陷报告,指定开发人员调试
实验数据 ExperimentalDataset
2011 Dissertation
Presentation
困难&解决方案
DifficultiesandSolutions
P r e s e n t e d b y
贡 亮 (2010212412)
Gong. Liang
合成频谱中的噪音与未被覆盖的路径
表示噪音
表示未被正确路径覆盖的函数
失败路径
正确路径
噪音问题:
•提出一些启发式方法预测可能的噪音并减低其相应的权值。
代码覆盖率问题:
•所有没有覆盖到的代码片段统一降低可疑度。
•对于所有没有覆盖到的代码片段 取平均值
•使用KNN算法找到最相似的近邻,求近邻平均值。
程序静态信息
2011 Dissertation
Presentation
实验流程
EvaluationProcess
P r e s e n t e d b y
贡 亮 (2010212412)
Gong. Liang
Firefox 实验数据收集
程序源代码崩溃调用栈
本研究系统
正确执行路径
程序测试用例
对比评估
预测缺陷
原始数据集
崩溃补丁

Weitere ähnliche Inhalte

Ähnlich wie Locating Crashing Faults based on Crash Stack Traces

Testing survey
Testing surveyTesting survey
Testing surveyTao He
 
Erlang高级原理和应用
Erlang高级原理和应用Erlang高级原理和应用
Erlang高级原理和应用Feng Yu
 
从运维系统的开发谈安全架构设计
从运维系统的开发谈安全架构设计从运维系统的开发谈安全架构设计
从运维系统的开发谈安全架构设计mysqlops
 
半導體製程設備裝機工程管理之研究
半導體製程設備裝機工程管理之研究半導體製程設備裝機工程管理之研究
半導體製程設備裝機工程管理之研究5045033
 
软件工程 第十一章
软件工程 第十一章软件工程 第十一章
软件工程 第十一章浒 刘
 
QM-062-奈米碳管背光模組製程失效模式分析
QM-062-奈米碳管背光模組製程失效模式分析QM-062-奈米碳管背光模組製程失效模式分析
QM-062-奈米碳管背光模組製程失效模式分析handbook
 
软件工程 第七章
软件工程 第七章软件工程 第七章
软件工程 第七章浒 刘
 
软件工程
软件工程软件工程
软件工程bill0077
 
The way to continuous delivery
The way to continuous deliveryThe way to continuous delivery
The way to continuous deliveryQiao Liang
 
基于覆盖信息的软件错误定位技术综述
基于覆盖信息的软件错误定位技术综述基于覆盖信息的软件错误定位技术综述
基于覆盖信息的软件错误定位技术综述Tao He
 
Qa engineer training
Qa engineer trainingQa engineer training
Qa engineer trainingychw365
 
2024 SIMPLIS 系列課程 _ SIMPLIS電路模擬軟體的基礎操作教學
2024 SIMPLIS 系列課程 _ SIMPLIS電路模擬軟體的基礎操作教學2024 SIMPLIS 系列課程 _ SIMPLIS電路模擬軟體的基礎操作教學
2024 SIMPLIS 系列課程 _ SIMPLIS電路模擬軟體的基礎操作教學ssuser29f076
 
测试用例浅析 V1.1
测试用例浅析 V1.1测试用例浅析 V1.1
测试用例浅析 V1.1shijian_dev
 
系統程式 -- 第 12 章
系統程式 -- 第 12 章系統程式 -- 第 12 章
系統程式 -- 第 12 章鍾誠 陳鍾誠
 
國防科技專案管理(Iii)
國防科技專案管理(Iii)國防科技專案管理(Iii)
國防科技專案管理(Iii)Alex Yin
 
Legacy code 讀書會 1st (Ch1 - Ch5)
Legacy code 讀書會 1st (Ch1 - Ch5)Legacy code 讀書會 1st (Ch1 - Ch5)
Legacy code 讀書會 1st (Ch1 - Ch5)Fong Liou
 
Foundation of software development 2
Foundation of software development 2Foundation of software development 2
Foundation of software development 2netdbncku
 
Orclrecove 1 pd-prm-dul testing for oracle database recovery_20141030_biot_wang
Orclrecove 1 pd-prm-dul testing for oracle database recovery_20141030_biot_wangOrclrecove 1 pd-prm-dul testing for oracle database recovery_20141030_biot_wang
Orclrecove 1 pd-prm-dul testing for oracle database recovery_20141030_biot_wangmaclean liu
 

Ähnlich wie Locating Crashing Faults based on Crash Stack Traces (20)

Testing survey
Testing surveyTesting survey
Testing survey
 
Erlang高级原理和应用
Erlang高级原理和应用Erlang高级原理和应用
Erlang高级原理和应用
 
从运维系统的开发谈安全架构设计
从运维系统的开发谈安全架构设计从运维系统的开发谈安全架构设计
从运维系统的开发谈安全架构设计
 
半導體製程設備裝機工程管理之研究
半導體製程設備裝機工程管理之研究半導體製程設備裝機工程管理之研究
半導體製程設備裝機工程管理之研究
 
软件工程 第十一章
软件工程 第十一章软件工程 第十一章
软件工程 第十一章
 
QM-062-奈米碳管背光模組製程失效模式分析
QM-062-奈米碳管背光模組製程失效模式分析QM-062-奈米碳管背光模組製程失效模式分析
QM-062-奈米碳管背光模組製程失效模式分析
 
系統程式 -- 第 5 章
系統程式 -- 第 5 章系統程式 -- 第 5 章
系統程式 -- 第 5 章
 
软件工程 第七章
软件工程 第七章软件工程 第七章
软件工程 第七章
 
软件工程
软件工程软件工程
软件工程
 
The way to continuous delivery
The way to continuous deliveryThe way to continuous delivery
The way to continuous delivery
 
基于覆盖信息的软件错误定位技术综述
基于覆盖信息的软件错误定位技术综述基于覆盖信息的软件错误定位技术综述
基于覆盖信息的软件错误定位技术综述
 
Qa engineer training
Qa engineer trainingQa engineer training
Qa engineer training
 
2024 SIMPLIS 系列課程 _ SIMPLIS電路模擬軟體的基礎操作教學
2024 SIMPLIS 系列課程 _ SIMPLIS電路模擬軟體的基礎操作教學2024 SIMPLIS 系列課程 _ SIMPLIS電路模擬軟體的基礎操作教學
2024 SIMPLIS 系列課程 _ SIMPLIS電路模擬軟體的基礎操作教學
 
测试用例浅析 V1.1
测试用例浅析 V1.1测试用例浅析 V1.1
测试用例浅析 V1.1
 
系統程式 -- 第 12 章
系統程式 -- 第 12 章系統程式 -- 第 12 章
系統程式 -- 第 12 章
 
國防科技專案管理(Iii)
國防科技專案管理(Iii)國防科技專案管理(Iii)
國防科技專案管理(Iii)
 
Legacy code 讀書會 1st (Ch1 - Ch5)
Legacy code 讀書會 1st (Ch1 - Ch5)Legacy code 讀書會 1st (Ch1 - Ch5)
Legacy code 讀書會 1st (Ch1 - Ch5)
 
Foundation of software development 2
Foundation of software development 2Foundation of software development 2
Foundation of software development 2
 
系統程式 -- 第 1 章
系統程式 -- 第 1 章系統程式 -- 第 1 章
系統程式 -- 第 1 章
 
Orclrecove 1 pd-prm-dul testing for oracle database recovery_20141030_biot_wang
Orclrecove 1 pd-prm-dul testing for oracle database recovery_20141030_biot_wangOrclrecove 1 pd-prm-dul testing for oracle database recovery_20141030_biot_wang
Orclrecove 1 pd-prm-dul testing for oracle database recovery_20141030_biot_wang
 

Locating Crashing Faults based on Crash Stack Traces