gpt4 book ai didi

emacs - 如何防止 emacs 在批处理模式下切断堆栈跟踪?

转载 作者:行者123 更新时间:2023-12-04 21:22:35 26 4
gpt4 key购买 nike

我正在为 Emacs 开发一个软件项目,该项目有一些可以在批处理模式下运行以进行快速回归测试的测试。但是,当测试失败时,终端中的堆栈跟踪在顶部被切断,因此我必须在交互式 Emacs session 中再次运行失败的测试,以查看完整的堆栈跟踪并找出实际发生错误的位置。是否有一些我可以修改的变量可以扩展 Emacs 以批处理模式打印到终端的堆栈跟踪的最大长度?

如果你想要一个简单的测试用例来产生一个非常深的堆栈跟踪,它将被切断,这里有一个无限递归的简单案例,当它达到一定深度时,emacs 将中止:

emacs -Q -batch --eval '(defun f () (f))' -f toggle-debug-on-error -f f

这是该命令在我的系统上的确切输出:
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()

尤其要注意 Debug on Error enabled globally 后面的行实际上是输出中的省略号,如果不以交互方式运行,就无法更深入地了解堆栈跟踪。

最佳答案

它看起来像 debugger-batch-max-lines是你所追求的:

M-x customize-group返回 debugger可再生能源

(defcustom debugger-batch-max-lines 40
"Maximum lines to show in debugger buffer in a noninteractive Emacs.
When the debugger is entered and Emacs is running in batch mode,
if the backtrace text has more than this many lines,
the middle is discarded, and just the beginning and end are displayed."
:type 'integer
:group 'debugger
:version "21.1")

关于emacs - 如何防止 emacs 在批处理模式下切断堆栈跟踪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9558510/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com