Difference between disassembler, debugger & decompiler


A disassembler is a software tool which transforms machine code into a human readable mnemonic representation called assembly language.

Disassembler is used for static code analysis.

Ex : IDA, hopper


Debugging is the art and science of finding and eliminating bugs in a software. Debuggers allow the user to view and change the running state of a program.

Debugger is used for dynamic code analysis.

Ex: gdb, x64dbg


A decompiler is a programming tool that converts an executable program or low-level/machine language into a format understandable to software programmers.

Ex : DejaVu, Mocha