Normalement, le moyen le plus simple de déboguer consiste à utiliser printf
. Que puis-je faire pour déboguer emacs-lisp? Comment puis-je imprimer quelque chose à Emacs Editor de ELISP? Ou Y a-t-il un moyen de déboguer du code Elisp?
Par exemple, comment puis-je vérifier si le code suivant est exécuté .emacs
déposer?
(load "auctex.el" nil t t)
Le débogueur (Edebug) est assez simple à utiliser. Aller à la définition de la fonction et tapez M-x edebug-defun. La prochaine fois qu'elle est appelée, vous pourrez passer à travers le code comme dans tous les autres débogueurs. Taper ? Pour la liste des keybindings ou consultez la documentation pour EDEBUG .
Il y a deux debuggers dans GNU EMACS:
J'utilise debug
. Ce sont des points d'entrée courants (façons de l'utiliser):
M-x debug-on-entry
suivi d'une fonction que vous souhaitez entrer en utilisant le débogueur.
M-x toggle-debug-on-error
- Entrez le débogueur lorsque lorsqu'une erreur est soulevée.
M-x toggle-debug-on-quit
- Entrez le débogueur lorsque l'utilisateur frappe C-g.debug
à des endroits particuliers (points d'arrêt) dans votre code, pour entrer dans le débogueur à ces endroits:(débogage)
Vous traversez le débogueur en utilisant d, ou c sauter sur les détails d'une évaluation particulière.
Ceci est utile pour l'impression de valeurs
(message "Hello (%s)" foo)
mais ne fonctionne pas si bien pour les structures de données. Pour cela, utilisez
(prin1 list-foo)
ou (prin1-to-string) pour l'intégrer dans un (message).
Le moyen le plus simple de déboguer peut être d'exécuter votre code de manière interactive. Vous pouvez le faire dans un tampon LISP en plaçant votre point après l'expression et en cours d'exécution C-x C-e (eval-last-sexp
).
Alternativement:
(message "hello world")
C-h f message Pour en savoir plus sur la fonction de message intégrée. Si vous générez de nombreux messages, vous pouvez personnaliser la variable message-log-max
à une valeur plus grande.
Pour répondre à vos questions une par une: