GNU Emacs has two debuggers, debug and edebug . The
first is built into the internals of Emacs and is always with you;
the second is an extension to Emacs that has become part of the standard
distribution in version 19.

Both debuggers are described extensively in section 'Debugging Lisp Programs' in The GNU Emacs Lisp Reference Manual.
In this chapter, I will walk through a short example of each.