Get started Bring yourself up to speed with our introductory content.

Better software through debugging and unit testing

Bugs plague software project big and small, and today's complicated software makes debugging more difficult than ever. Let these tips, tutorials, podcasts and articles help you debug your software.

Jennette Mullaney, Assistant Editor

Thorough debugging is a necessary step towards software quality. Bugs plague software project big and small, and today's complicated software makes debugging more difficult than ever.

Advancements in unit testing are made, better tools are created and development teams work proactively to scour their code. However, time pressures, poor planning and lack of knowledge take their toll on this type of testing.

This Learning Guide introduces developers to debugging and unit testing with a variety of articles, tutorials, tips and expert responses. If you have any resources that you would like to share, or have suggestions for a future Learning Guide topic, please email me.

   Software debugging basics
   Unit testing basics
   Unit testing, Extreme Programming and TDD
   Debugging for security
   Other useful resources

  Software debugging basics
  • Article: Software debugging, testing and verification -- From "IBM Systems Journal," this is a general, accessible article, perfect for beginners. The authors explain the place of debugging in the software development lifecycle (SDLC) -- though some may disagree with their placement. The article is from 2001, but the problems the authors describe, constantly changing requirements, time crunch, wishful thinking about "fixing it later," are, sadly, still commonplace.

  • Article: Debugging -- While not terribly sophisticated, this straightforward article clearly states the main phases in many debugging processes. Identify bug, replicate bug, understand bug and fix bug are pretty routine. However, the author also advocates learning from the bug, a crucial step that is often ignored.

  • Article: Boost efficiency with a performance-tuned debugging strategy -- Using a case study, the author portrays a streamlined debugging process, including sample code along the way.

  • Article: Introduction to power debugging -- Ever use your debugger and think, "Gee, this thing doesn't work very well!" Before you give up on the tool, read this informative article on how to use your debugger in innovative ways so you can get the most out of it.

  • Article: Debugging: The software industry's dirty secret -- The author argues persuasively for increased attention for debugging. He describes two techniques, automatic bug detection and reversible debugging, as promising.

  • Expert response: Software bugs, errors and defects: What's the difference? -- A lot of confusion surrounds this topic. Expert Mike Kelly provides an excellent response to a frequently asked question.

  • Article: Multi-threaded debugging techniques -- Debugging a complicated multi-threaded application poses all sort of challenges. This article guides you through the process without skimping on the details.

  • Book excerpt: Why Programs Fail: A Guide to Systematic Debugging -- Chapter 3, Making Programs Fail -- Testing is one of the most important factors in software debugging. "Making Programs Fail" covers testing techniques and procedures as they relate to debugging.

  • Book excerpt: If I Only Changed the Software, Why is the Phone on Fire?: Embedded Debugging Methods Revealed -- Chapter 1, Debugging Other People's Code, Fast -- This elaborately titled book uses a fiction format to depict software debugging. Chapter 1 follows a team as they uncover a difficult bug and eventually figure out how to quash it. Code is provided, and the format is suited to beginners.

  • definition: shotgun debugging -- When people aren't sure which debugging approach, they may try several methods. The problem with shotgun debugging, however, is you can introduce new problems.

Move on to our next section: Unit testing basics.

Dig Deeper on Topics Archive

Start the conversation

Send me notifications when other members comment.

Please create a username to comment.