Home

Awesome

OCaml earlybird

ci workflow status GitHub release status opam package status

OCaml debug adapter.

Installation

opam install earlybird

Usage

VS Code

See Debugging OCaml programs (experimental) in VSCode OCaml Platform README. This requires VSCode OCaml Platform 1.13 or newer.

PS. Since the integration into VSCode OCaml Platform, the old "Ocamlearlybird" VSCode extension is deprecated.

Configuration

FieldTypeDefault valueDescription
programstring(required)The path of debuggee program.
argumentsstring[][]The command-line arguments for the debuggee program.
cwdstringThe working directory for debuggee program.
env{[var: string]: string}{}Environment variables passed to the debuggee program.
stopOnEntrybooleanfalseAutomatically stop after launch.
console'internalConsole' |<br>'integratedTerminal' |<br> 'externalTerminal'internalConsoleWhere to launch the debug target: internal console, integrated terminal, or external terminal.
followForkMode'forkChild' | 'forkParent'forkParentSet which process the debugger follows on fork.
source_dirsstring[][]The path to search sources.
onlyDebugGlobstringtrueOnly debug sources which match onlyDebugGlob.
yieldStepsnumber4096Max steps to execute in batch. Debugger can not response other requests when executing steps in batch.
_debugLogstringFile to Log debug messages.

Troubleshooting

Breakpoints not hit with (lang dune 3.0) and above

Change to (lang dune 3.7) or above and add (map_workspace_root false) to your dune-project. See dune documentation for more information.

Examples

utop

Screen capture of debugging utop.

Launch configuration used:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "test_program",
            "type": "ocaml.earlybird",
            "request": "launch",
            "stopOnEntry": true,
            "console": "integratedTerminal",
            "program": "${workspaceFolder}/_build/default/examples/interact/test_program.bc",
            "onlyDebugGlob": "<${workspaceFolder}/**/*>",
            "yieldSteps": 1024,
            "cwd": "${workspaceFolder}"
        }
    ]
}