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)