1 Introduction  
1.1 Motivation and scope  

2 Concepts and Seminal Studies  
2.1 Terminology  
2.2 A Brief History of Debugging Techniques  

3 Selection of Studies and Scope  

4 Spectrum-based Fault Localization Techniques  
4.1 Metric-based Techniques  
4.2 Statistics-based Techniques  
4.3 Artificial Intelligence-based Techniques  
4.4 Execution Models  
4.5 Program Dependence-based Techniques  
4.6 Combination of SFL Techniques  
4.7 Comparison of Metric-based Techniques  

5 Program Spectra  
5.1 Types of Spectra  

6 Faults  
6.1 Multiple Faults  
6.2 Fault Interference  
6.3 Fault Classification  

7 Programs  
7.1 Description of the Main Programs  
7.2 Size  
7.3 Number of Faults  

8 Testing Data  
8.1 Test Suite Improvements  
8.2 Mutation Testing  

9 Practical Use  
9.1 Evaluation Metrics  
9.2 User Studies  
9.3 Contextual Information  

10 Discussion  
10.1 Techniques  
10.2 Spectra  
10.3 Faults  
10.4 Programs  
10.5 Testing Data  
10.6 Practical Use  
10.7 Concept Map in Spectrum-based Fault Localization  

Summary of Advances and Challenges

11 Related Work  

12 Conclusion