Si se señala un error en el código Emacs Lisp, y debug-on-error
es así t
, obtengo un búfer de seguimiento que hace que sea fácil averiguar dónde ocurrió el error. Sin embargo, para los errores que ocurren mientras se procesa una respuesta de la red de forma asincrónica, sería molesto que aparezca el búfer de rastreo, así que prefiero detectar el error condition-case
y registrarlo.
Entonces, cuando estoy manejando un error condition-case
, ¿hay alguna forma de obtener acceso a la traza inversa en el punto del error? Llamar a la backtrace
función obtiene la traza inversa del código dentro del controlador, que no es lo que estoy buscando.
(condition-case e
(do-something-that-might-fail)
(error
(message "%s"
;; This gets the wrong backtrace!
(with-temp-buffer
(let ((standard-output (current-buffer)))
(backtrace)
(buffer-string))))))
do-something-that-might-fail
generar un seguimiento de pila y adjuntarlo al error que genera.
magithub-error
Creo que mi función hace algo similar a esto, pero no estoy en una computadora en este momento. Puede ayudar de todos modos.