Debuggers allow the user to view and change the running state of a program.
Common Source Level Debuggers
GDB: The GNU DeBugger is ubuquitous among processors and operating systems with C and C++ support.
LLDB: The LLvm DeBugger for ARM and x86/amd64 aims to be faster with better tooling integration.
Binary Debuggers
IDA Freeware (free, x86 only)
IDA Pro (commercial, supports x64, ARM and many other processors)
Hopper (demo and paid versions)
REC (free)
Simulators With Debugging support
QEMU (free)
OPVSim (free w/ registration)
Simics (expensive)
Bochs (free)