Slicing‐Based Techniques for Software Fault Localization
W. Eric Wong, Hira Agrawal, Xiangyu Zhang · 2023
Software is now becoming increasingly large and complex, which makes it difficult to maintain, test, and debug. This chapter introduces the concepts and application of program slicing and dicing in the area of software fault localization, which aims to tackle these issues. The main applications of program slicing include various software engineering activities such as program understanding, debugging, testing, program maintenance, complexity measurement, and so on. Over the last few decades, hundreds of papers have been published with special focus on fault localization. While they focus on similar fundamental principles, the projects can be further divided into four distinctive categories: static slicing-based, dynamic slicing-based, execution slicing-based, and other slicing-based fault localization. One of the important applications of static slicing is to reduce the search domain while programmers locate bugs in their programs. Different types of techniques have unique advantages and can be applied to different settings.