A debugger lets programmers step through instructions and function calls in a running executable to help them identify issues and remove bugs. It can also be helpful for binary exploitation (e.g. for testing out and debugging exploits).
Some debuggers you might find useful: