You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调试OCaml Dune测试程序?分步调试方案咨询

调试OCaml测试程序的两种方法(ocamldebug / gdb)

一、使用ocamldebug(字节码调试)

ocamldebug仅支持调试OCaml字节码文件,你之前直接加载.ml源码文件必然报错,且Dune默认编译的是原生代码(.exe),需先生成字节码版本的测试程序:

  1. 编译字节码测试程序
dune build test/test_foobar.bc

若需保留完整调试信息,可指定开发profile编译:

dune build test/test_foobar.bc --profile=dev
  1. 启动ocamldebug并加载字节码程序
ocamldebug ./_build/default/test/test_foobar.bc
  1. 常用调试操作
  • 在源码指定行设置断点:
    break test/test_foobar.ml:1
    
  • 启动程序:
    run
    
  • 逐行单步执行:
    step
    
  • 查看当前上下文源码:
    list
    
  • 打印变量值(若程序中有变量):
    print 变量名
    

二、使用gdb(原生代码调试)

gdb调试OCaml原生程序需确保编译时包含调试符号,Dune默认的release profile会剔除调试信息,因此需用dev profile编译:

  1. 带调试信息编译原生测试程序
dune build test/test_foobar.exe --profile=dev
  1. 启动gdb并进入TUI界面
gdb --tui ./_build/default/test/test_foobar.exe
  1. 常用调试操作
  • 在源码指定行设置断点:
    break test/test_foobar.ml:1
    
  • 启动程序:
    run
    
  • 逐行单步执行(进入函数):
    step
    
  • 继续执行至下一个断点:
    continue
    

注意:gdb调试OCaml原生代码时,可能会进入底层C代码栈帧,此时可使用finish命令回到OCaml代码上下文。

内容的提问来源于stack exchange,提问作者Costava

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 05:42:39