Skip to Main Content
Summary form only given. Program debugging is an important activity in the development of reliable and trustworthy software. This activity can be very expensive and time consuming due to the difficulty of identifying the exact locations of program faults. In this talk, I will explain how to take advantage of sophisticated analysis of the static and dynamic behavior of the software under examination to prioritize suspicious code in terms of its likelihood of containing program bugs. Code with a higher risk can then be examined before that with a lower risk, as the former is more suspicious (more likely to contain program bugs) than the latter. Different techniques for fault localization based on execution slicing, code coverage, heuristics, neural networks, statistical analysis and fuzzy clustering will be discussed. Empirical data from case studies on programs with single and multiple bugs is used to show that our techniques outperform others that have the same goal.