ABSTRACT

The use of the term “bug” to describe a problem with a computer is usually attributed to the computing pioneer Admiral Grace Murray Hopper in 1947. When colleagues traced a fault in Harvard University’s Mark II Computer to a moth stuck in Relay 70 of Panel F, she remarked that they were “debugging” the system. There are useful debugging tools for programmers, the debugger that is a part of Visual Studio. The first task is to reproduce the bug—find a series of actions that is guaranteed to make the bug occur every time. There are some bugs that can’t be caught with debug printfs, in particular, bugs in timing and scheduling of multithreaded processes. The most challenging bugs are the ones that take three weeks to find and 30 seconds to fix. Bugs like to collect around boundary conditions, so it is recommended to start looking there first.