Debugging is a methodical or manual way of removing errors, bugs or defects in a computer pogram or hardware devices of the computer system. The term was popularized by Grace Hopper* when she literally removed a moth from her computer. Though the origin of this term is still under question as it is said that "debugging" had been used by Edison when he found errors in his inventions or in the field of Aeronautics.
Debugging ranges, in complexity, from fixing simple errors to performing lengthy and tiresome tasks of data collection, analysis, and scheduling updates. The debugging skill of the programmer can be a major factor in the ability to debug a problem, but the difficulty of software debugging varies greatly with the complexity of the system, and also depends, to some extent, on the programming language (s) used and the available tools, such as debugger**.