# What is Debugging?

**Debugging** is the process of finding and resolving defects or problems within a computer program that prevent correct operation of the software.

Debugging tactics can involve:

* [Interactive](https://en.wikipedia.org/wiki/Interactive) debugging.
* [Control flow](https://en.wikipedia.org/wiki/Control_flow) analysis.
* [Unit testing](https://en.wikipedia.org/wiki/Unit_testing).
* [Integration testing](https://en.wikipedia.org/wiki/Integration_testing).
* [Log file analysis](https://en.wikipedia.org/wiki/Logfile)
* Monitoring at the [application](https://en.wikipedia.org/wiki/Application_monitoring) or [system](https://en.wikipedia.org/wiki/System_monitoring) level.
* [Memory dumps](https://en.wikipedia.org/wiki/Memory_dump).
* [Profiling](https://en.wikipedia.org/wiki/Profiling_\(computer_programming\)).
