Episode 367: Diomidis Spinellis on Debugging

Topics covered
Popular Clips
Episode Highlights
Code Techniques
Understanding code is crucial for effective debugging, as highlighted by . He suggests rewriting code in a different programming language or at a higher level of abstraction to gain deeper insights, especially when dealing with complex algorithms 1. This approach can help isolate problems that are not apparent in the original code structure. Spinellis also emphasizes the importance of examining compiler output to catch unexpected errors, such as misplaced brackets or even rare compiler bugs 2.
You switch to an assembly language view or to JavaScript as you mentioned, and you see that has compiled to something that you weren't expecting it to compile into.
---
These strategies are not universally applicable but can be invaluable in specific, challenging debugging scenarios.
System Understanding
A holistic understanding of complex systems is essential for effective debugging. and Spinellis discuss the necessity of grasping both high-level and target-level programming to navigate intricate software environments 3. This comprehensive approach ensures that developers can address issues that arise from the interaction of various system components. Hermans notes that while some may prefer higher-level programming, understanding the underlying systems remains crucial until they are perfected 4.
It makes total sense that until they're perfect, we really also need to understand the target level.
---
This dual-level comprehension aids in identifying and resolving deep-seated bugs effectively.
Related Episodes


Episode 101: Andreas Zeller on Debugging
Answers 383 questions

Episode 155: Johannes Link & Lasse Koskela on TDD
Answers 383 questions

366: Test Automation
Answers 383 questions

Episode 512: Tim Post on Rubber Duck Debugging
Answers 383 questions

Episode 441 Shipping Software - With Bugs
Answers 383 questions

Episode 31: Agile Documentation
Answers 383 questions

SE-Radio Episode 283: Alexander Tarlinder on Developer Testing
Answers 383 questions

Episode 503: Diarmuid McDonnell on Web Scraping
Answers 383 questions

Episode 517: Jordan Adler on Code Generators
Answers 383 questions

Episode 521: Phillip Mayhew on Test Automation in Gaming
Answers 383 questions

Episode 70: Gerard Meszaros on XUnit Test Patterns
Answers 383 questions

Episode 2: Dependencies
Answers 383 questions

Episode 474: Paul Butcher on Fuzz Testing
Answers 383 questionsEpisode 7: Error Handling
Answers 383 questionsEpisode 147: Software Development Manager
Answers 383 questions













