elisp – ¿Interrumpir la evaluación y observar la pila actual en el depurador emacs-lisp?

Pregunta:

Si alguna función emacs-lisp, como un gancho de modo mayor, tarda más de lo esperado en ejecutarse, a veces me gustaría interrumpirla y mirar la pila actual. Idealmente, también me gustaría poder ver los valores de las variables, y así sucesivamente, en el depurador. No estoy hablando de código que estoy ejecutando deliberadamente en modo emacs-lisp, sino de código que se ejecuta en el funcionamiento normal de emacs.

¿Cómo puedo interrumpir la ejecución del código emacs-lisp directamente en emacs? No sé desde el principio qué función necesito depurar.

Por ejemplo, escribir Cg , mientras interrumpe la ejecución, tampoco me dice nada sobre qué función fue interrumpida.

Respuesta:

Puede hacer que Cg active el depurador activando debug-on-quit . Solo haz

M-x toggle-debug-on-quit

Ahora, cada vez que Cg obtendrá un seguimiento de lo que estaba sucediendo. Este backtrace es interactivo, por lo que puede seguir recorriendo la función con d , y puede comenzar a moverse con c . (Pruébelo, es más fácil de ver que de leer).

Este es el mismo rastreo que obtiene al agregar (debug) dentro de su código. Aquí hay una breve publicación de blog y la página del manual de Elisp correspondiente.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım