Starting with the background and traditional techniques, this book will mainly focus on the up-to-date techniques, tools and critical issues in software fault localization. The techniques covered in this book are grouped into the following categories: traditional, slicing-based, spectrum-based, statics based, program state-based, machine learning-based, data mining-based, model-based and miscellaneous techniques. With this organization, the authors aim to provide a collective discussion with emphasis on the most important features of each approach. Different evaluation metrics to assess the effectiveness of fault localization techniques and tools are described. The book also explores critical aspects of software fault localization, including: fault localization with multiple bugs; inputs, outputs, and impact of test cases; coincidental correctness; faults introduced by missing code; combination of multiple fault localization techniques; ties within fault localization rankings; fault localization for concurrency bugs; spreadsheet fault localization: and theoretical studies on fault localization.