如何让Swi-prolog在CLI模式下出错时自动显示完整backtrace?
SWI-Prolog CLI 报错自动输出完整回溯方案
SWI-Prolog原生支持CLI模式下出错自动打印回溯栈,不需要依赖GUI调试工具,可通过以下方式开启:
方法1:单次运行临时开启
修改你的启动命令,在加载业务代码后、执行目标前新增设置回溯标志的逻辑,示例如下:
原来的运行命令:swipl -f test.pl -g test(X)
修改后开启自动回溯的命令:swipl -f test.pl -g "set_prolog_flag(backtrace_on_error, true)" -g test(X)
开启后程序运行触发报错时,会直接在终端输出完整调用栈信息。
方法2:全局永久生效
将回溯开启配置写入SWI-Prolog的全局初始化文件,后续所有CLI启动的实例都会默认开启报错自动回溯:
- Linux/macOS 系统:将
set_prolog_flag(backtrace_on_error, true).写入~/.swiplrc文件 - Windows 系统:将
set_prolog_flag(backtrace_on_error, true).写入%APPDATA%\swi-prolog\swipl.ini文件
可选配置
如果默认回溯深度不足,导致深层调用栈被截断,可以额外设置回溯最大深度,示例如下(设置最大输出100层调用栈):set_prolog_flag(backtrace_depth, 100).
你可以根据自己的代码复杂度调整对应的数值。
内容的提问来源于stack exchange,提问作者asker of prophecy
相关产品推荐
相关产品推荐

