Process of analyzing live programs through software (e.g. ptrace) or hardware (e.g. JTAGs) devices.

Debugging is the process of analyzing live programs through software (e.g. ptrace) or hardware (e.g. JTAGs) devices. This term is usually coined to describe the process of understanding the origin of bugs in the program, but the definition can be extended to a deep inspection of how the program works for reverse-engineering purpose.

Reverse-engineers prefer to call it dynamic analysis because the goal radically differ from its original usage, though it is using the exact same techniques.