Wenn ein Fehler in einem Prozess-Sentinel oder beim Sperren von Schriftarten auftritt, zeigt Emacs keine Rückverfolgung an, obwohl dies debug-on-error
zuvor aktiviert wurde.
Ich verstehe, warum diese Fehler abgefangen werden. Der gleiche Fehler wird möglicherweise erneut ausgelöst, wenn versucht wird, die Rückverfolgung darzustellen. Wenn ich diesen Fehler jedoch tatsächlich debuggen möchte, ist er nicht sehr hilfreich. Ich würde lieber riskieren, dass Emacs nicht mehr reagiert, als daran arbeiten zu müssen:
error in process sentinel: Wrong type argument: stringp, nil
Immerhin kann ich einfach eine zweite Instanz starten, wenn die erste verrückt wird. Ein wenig mehr Kontext würde helfen, wenn es viele Stellen gibt, an denen ein solcher Fehler theoretisch in einem Sentinel auftreten könnte.
Wie kann ich Emacs zwingen, eine Rückverfolgung anzuzeigen, selbst wenn dies debug-on-error
keine Auswirkungen hat?
Antworten:
Für Prozesswächter gibt es meines Erachtens keinen guten Grund. IOW Ich denke, es ist nur eine fehlende Funktion, also schlage ich Ihnen vor
M-x report-emacs-bug
.Bei der Schriftsperre ist das Problem schwieriger, da der Fehler tatsächlich während der JIT-Sperre, dh während der erneuten Anzeige, ausgelöst wird und wir den Debugger in diesem Moment nicht einfach aufrufen können (IIRC hat irgendwann versucht, dies zu tun es funktioniert, aber es gab immer noch einige ernsthafte Probleme). Sie können es also auf eine der folgenden Arten debuggen:
M-x jit-lock-debug-mode
Dadurch wird jit-lock so geändert, dass es direkt nach der erneuten Anzeige ausgeführt wird, sodass wir den Debugger aufrufen können.M-: (setq font-lock-support-mode nil) RET
und dann deaktivieren + wieder aktivieren Sie die Schriftsperre. Auf diese Weise verwendet die Schriftsperre keine Jit-Sperre mehr, sodass sie während des Befehls des Benutzers und nicht während der anschließenden erneuten Anzeige ausgeführt wird.quelle
debug-on-error
gut auf Prozess-Sentinels zu funktionieren.--eval
eher als verwendet--debug-init
. Auch seine Problemumgehung hilft mir nicht, in meinem aktuellen.emacs.d