Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hackwaly/ocamlearlybird
OCaml debug adapter
https://github.com/hackwaly/ocamlearlybird
debug-adapter-protocol debugger ocaml
Last synced: 6 days ago
JSON representation
OCaml debug adapter
- Host: GitHub
- URL: https://github.com/hackwaly/ocamlearlybird
- Owner: hackwaly
- License: mit
- Created: 2018-09-29T19:04:49.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2024-11-25T04:01:33.000Z (about 1 month ago)
- Last Synced: 2024-12-25T09:07:40.092Z (13 days ago)
- Topics: debug-adapter-protocol, debugger, ocaml
- Language: OCaml
- Size: 725 KB
- Stars: 208
- Watchers: 7
- Forks: 25
- Open Issues: 20
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-list - ocamlearlybird
README
# OCaml earlybird
[![ci workflow status](https://github.com/hackwaly/ocamlearlybird/actions/workflows/ci.yml/badge.svg)](https://github.com/hackwaly/ocamlearlybird/actions/workflows/ci.yml)
[![GitHub release status](https://img.shields.io/github/v/release/hackwaly/ocamlearlybird)](https://github.com/hackwaly/ocamlearlybird/releases)
[![opam package status](https://badgen.net/opam/v/earlybird)](https://opam.ocaml.org/packages/earlybird)OCaml debug adapter.
## Installation
```console
opam install earlybird
```## Usage
### VS Code
See [Debugging OCaml programs (experimental)](https://github.com/ocamllabs/vscode-ocaml-platform#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
| Field | Type | Default value | Description |
| ----- | ---- | ------- | ----------- |
| `program` | `string` | _(required)_ | The path of debuggee program. |
| `arguments` | `string[]` | `[]` | The command-line arguments for the debuggee program. |
| `cwd` | `string` | | The working directory for debuggee program. |
| `env` | `{[var: string]: string}` | `{}` | Environment variables passed to the debuggee program. |
| `stopOnEntry` | `boolean` | `false` | Automatically stop after launch. |
| `console` | `'internalConsole' \|`
`'integratedTerminal' \|`
` 'externalTerminal'` | `internalConsole` | Where to launch the debug target: internal console, integrated terminal, or external terminal. |
| `followForkMode` | `'forkChild' \| 'forkParent'` | `forkParent` | Set which process the debugger follows on fork. |
| `source_dirs` | `string[]` | `[]` | The path to search sources. |
| `onlyDebugGlob` | `string` | `true` | Only debug sources which match `onlyDebugGlob`. |
| `yieldSteps` | `number` | `4096` | Max steps to execute in batch. Debugger can not response other requests when executing steps in batch. |
| `_debugLog` | `string` | | File 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](https://dune.readthedocs.io/en/stable/reference/dune-project/map_workspace_root.html) for more information.## Examples
### utop
[Screen capture of debugging utop](https://i.imgur.com/U3GDHXM.gif).
Launch configuration used:
```json
{
// 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}"
}
]
}
```