Sto lavorando ad un progetto software per Emacs che ha alcuni test che possono essere eseguiti in modalità batch per test rapidi di regressione. Tuttavia, quando i test falliscono, le tracce dello stack nel terminale sono troncate nella parte superiore, quindi devo eseguire nuovamente il test fallito in una sessione interattiva di Emacs per visualizzare lo stack trance completo e scoprire dove si è verificato effettivamente l'errore. C'è qualche variabile che posso modificare che estenderà la lunghezza massima delle tracce dello stack che Emacs stampa sul terminale in modalità batch?Come posso evitare che emacs cancelli le tracce dello stack in modalità batch?
Se si desidera un semplice banco di prova per la produzione di una traccia dello stack davvero profondo che andranno tagliati fuori, ecco un caso banale di ricorsione infinita, che Emacs interrompe quando raggiunge una certa profondità:
emacs -Q -batch --eval '(defun f() (f))' -f toggle-debug-on-error -f f
Ecco l'esatto uscita di quel comando sul mio sistema:
Debug on Error enabled globally
...
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
command-line-1(("--eval" "(defun f() (f))" "-f" "toggle-debug-on-error" "-f" "f"))
command-line()
normal-top-level()
in particolare, si noti che la linea dopo Debug on Error enabled globally
è in realtà i puntini di sospensione in uscita, non c'è modo di andare più in profondità in la traccia dello stack senza eseguire in modo interattivo.
non è possibile reindirizzare a un file.? – kindahero
Cosa c'entra questo con qualcosa? Il punto è che le porte di uscita standard in modalità spiaggia non contengono la traccia dello stack completo. Il reindirizzamento a un file non lo cambierà. –