Lorsqu'une erreur se produit dans une sentinelle de processus ou pendant le verrouillage de police, Emacs n'affiche pas de trace, même s'il debug-on-error
était précédemment activé.
Je comprends pourquoi ces erreurs sont détectées, la même erreur peut être déclenchée à nouveau lors de la tentative de présentation de la trace. Cependant, quand je veux réellement déboguer cette erreur, ce n'est pas très utile. Je préfère risquer qu'Emac ne réponde pas que de devoir travailler à partir de cela:
error in process sentinel: Wrong type argument: stringp, nil
Après tout, je peux juste démarrer une deuxième instance, si la première commence à devenir folle. Un peu plus de contexte serait utile lorsqu'il existe de nombreux endroits où une telle erreur pourrait théoriquement se produire dans une sentinelle.
Alors, comment puis-je forcer Emacs à afficher une trace, même dans les cas où cela debug-on-error
n'a aucun effet?
Réponses:
Pour les sentinelles de processus, je ne pense pas qu'il y ait une bonne raison. IOW Je pense que c'est juste une fonctionnalité manquante, donc je vous suggère
M-x report-emacs-bug
.Pour le verrouillage de police, le problème est plus délicat car ce qui se passe réellement est que l'erreur est déclenchée pendant le verrouillage de jit, c'est-à-dire pendant le réaffichage, et nous ne pouvons pas facilement entrer dans le débogueur à ce moment (IIRC à un moment donné, Gerd a essayé de faire ça marche, mais il y avait encore de sérieux problèmes). Vous pouvez donc le déboguer de l'une des manières suivantes:
M-x jit-lock-debug-mode
qui change jit-lock pour s'exécuter juste après la réaffichage, afin que nous puissions entrer dans le débogueur.M-: (setq font-lock-support-mode nil) RET
puis désactivez + réactivez le verrouillage de police. De cette façon, font-lock n'utilise plus jit-lock, il s'exécute donc lors de la commande de l'utilisateur plutôt que lors du réaffichage suivant.la source
debug-on-error
semble bien fonctionner sur les sentinelles de processus.--eval
plutôt que--debug-init
. De plus, sa solution de contournement ne m'aide pas à faire un retour en arrière dans ma réalité.emacs.d