The relentless growth in size and complexity of integrated circuits over the past decades continues to present new challenges to the electronic design community. Today, debugging is a bottleneck that jeopardizes the efficiency of the design industry. To alleviate this burden, scalable and practical automated solutions are required. This book presents novel techniques and methodologies to bridge the gap between current capabilities of debuggers and the strict industry requirements. The contributions proposed leverage powerful advancements made in the formal methods community, such as model checking and reasoning engines, to ease the debugging effort. The first contribution, abstraction and refinement, is a systematic methodology that reduces the complexity of debugging problems under analysis. The second contribution, Bounded Model Debugging, is a methodology based on the observation that erroneous behaviour is more likely caused by errors excited temporally close to observation points. The third and fourth contributions are a formulation based on maximum satisfiability and a trace reduction technique that using reachability analysis.