"Debugging is the process of finding and reducing the
number of bugs in computer software and electronic hardware. When a
program crashes, the debugger shows the position in the original
code. A good debugger plays an essential role in software
"Debugging can be more difficult when various subsystems are
tightly coupled, as changes in one may cause bugs to appear in
"This article examines three different types of debuggers:
source-level debuggers, memory debuggers and bug tracking software.
"A memory debugger is a programming tool for finding memory
leaks and buffer overflows. These are due to bugs related to the
allocation and deallocation of dynamic memory. Programs written in
languages that have garbage collection, such as managed code, might
also need memory debuggers."