GNU Emacs has two debuggers,
first is built into the internals of Emacs and is always with you;
the second requires that you instrument a function before you can use it.
Both debuggers are described extensively in Debugging Lisp Programs in The GNU Emacs Lisp Reference Manual. In this chapter, I will walk through a short example of each.