2011-11-25 7 views
16

hay una cosa que no me gusta en función de tabla en modo Org para Emacs. Me gustaría ver todas las funciones que ejecuta la función que ejecuto como comando de Emacs.Emacs - cómo ver/cómo depurar una sola función elisp/emacs comando

¿Cuál es la mejor manera de hacerlo? ¿Algún consejo sobre cómo comenzar a depurar el código elisp, especialmente un solo comando de interés?

Respuesta

22
  1. C-hf nombre función para encontrar el código fuente de la función.
  2. C-uC-M-x para instrumentar la función de Edebug.

Cada vez que se llama a la función, Emacs caerá en Edebug, lo que facilita la ejecución de la función paso a paso, inspeccionar variables y realizar otras tareas típicas de depuración. Ver (info "(Elisp)Edebug") para más información.

+2

Algunas plataformas, como Gnome 3, no permita que Emacs reciba 'CMx'. Entonces, para instrumentar la función con edebug, use 'C-u M-x eval-defun'. –

0

C-h f para ir al modo de función de ayuda, a continuación, escriba el nombre de la función. Si se trata de una función elisp, puede ver la fuente y buscar qué funciones llama.

9

Yo prefiero el tradicional depurador Emacs para edebug. Para usarlo:

M-x debug-on-entry the-function RET 

Entonces, cada vez que se invoca the-function, se entra en el depurador. Utilice d a paso a través de la evaluación y c si quiere saltar a través de un paso (no sumergirse en sus detalles.

ayuda a ver la definición de the-function en otra ventana/marco, mientras que el paso por ella.

0

Si desea una forma programática para ver la fuente de una función (similar a Clojure de source macro) se puede utilizar el symbol-function subrutina.

Por ejemplo, hay una definición de función do-math en mi archivo .emacs. Para ver su fuente , Puedo hacer lo siguiente

(symbol-function 'do-math)

y me da

ELISP> (symbol-function 'do-math) 
(lambda 
    (expression) 
    (interactive "sexpression:") 
    (insert 
    (number-to-string 
    (eval 
    (read expression))))) 

Ver también: https://www.gnu.org/software/emacs/manual/html_node/elisp/Function-Indirection.html

Véase también también: http://ergoemacs.org/emacs/elisp_symbol.html

Cuestiones relacionadas