Error handlers are somewhat problematic: they can also hide errors so you don't get to debug those.
I've not seen mention of the current function name being stored in a Lisp variable, but the call stack, i.e. those functions that have been called but have not yet exited, is available in VLIDE. When you hit a breakpoint, see View>Trace Stack in the VLIDE menu.
I usually run with Debug>Break on Error set and Vlide running, so when the system notices a Lisp error, the program crashes into the debugger and I can see the call stack. In that situation, Debug>Last Break Source is also useful, if the program has been loaded as .lsp instead of .fasl or .vlx .
There is also an undocumented function, (vl-bt), which prints the call stack, also showing plenty of internal stuff so recognizing your own takes a little practice:
_$ (vl-bt)
Backtrace:
[0.141] (VL-BT)
[1.137] (#<USUBR @000001443ad18570 -top->) LAP+7
[2.133] (al-top-funcall #<USUBR @000001443ad18570 -top->)
[3.128] (alide-load-stream #<FILE internal> T)
[4.122] (al-load-stream #<FILE internal> T)
[5.116] (#<SUBR @000001443b7e2098 -unwind-protect->)
[6.113] (rep-cntx.apply #<rep-cntx :AUTOLISP> al-load-stream (#<FILE internal> T))
[7.106] (rep-cntx.sys-str-top nil #<rep-cntx :AUTOLISP> "(vl-bt)")
[8.99] (sys-str-top #<rep-cntx :AUTOLISP> "(vl-bt)")
[9.93] (console.terminal-entered! (terminal.terminal-entered!) #<console "Visual LISP Console">)
[10.87] (terminal-entered! #<console "Visual LISP Console">)
[11.82] (!accept-enter #<console "Visual LISP Console">)
[12.77] (#<SUBR @000001443b7e2098 -unwind-protect->)
[13.74] (rep-cntx.apply #<rep-cntx :AUTOLISP> #<SUBR @000001442b24ad90 !accept-enter> (#<console "Visual LISP Console">))
[14.67] (rep-cntx.funcall #<rep-cntx :AUTOLISP> #<SUBR @000001442b24ad90 !accept-enter> #<console "Visual LISP Console">)
:TOP-COMMAND.60 (((:USER-INPUT "(vl-bt)")) "(vl-bt)")
[15.57] (#<SUBR @000001442b3487f0 _sys-top-loop>)
[16.54] (_catched-apply (#&1) #<SUBR @000001442b3487f0 _sys-top-loop> nil)
[17.47] (sys-top) ...
--