gpt4 book ai didi

debugging - 如何跟踪OCaml程序的错误?

转载 作者:行者123 更新时间:2023-12-02 22:43:40 25 4
gpt4 key购买 nike

我正在编写一个用 OCaml 编写的编译器。有时执行出错时,它会显示错误行,但不会显示上下文,例如函数是如何调用的,使用哪些值...

为了帮助调试,有谁知道如何显示执行步骤直到错误以及相关变量的实际值?

顺便说一句,我使用 Emacs 作为编辑器。

最佳答案

Ocaml 已编译。您似乎习惯了解释性语言,其中运行时系统可以访问完整的程序源代码。对于编译后的程序,运行时系统无法访问太多信息。例如,变量名称在编译时消失,并且除了正常程序执行所需的情况之外,没有任何东西会跟踪传递给每个函数的参数(这样做会产生大量开销)。

如果您使用调试符号编译程序(将 -g 选项传递给编译器),则当您的程序因未捕获的异常而终止时,您可以获得堆栈跟踪。您将获得函数名称和一些程序位置,但不会获得详细的内存内容。使用调试信息进行编译会产生更大的可执行文件,但不会改变运行时性能。您需要设置OCAMLRUNPARAM environment variable运行程序时包含 b

ocamlc -g -o foo foo.ml
export OCAMLRUNPARAM=b
./foo

如果您想了解更多信息,您需要在调试器中运行程序。

关于debugging - 如何跟踪OCaml程序的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6396738/

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