You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+41Lines changed: 41 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -254,6 +254,47 @@ It may be useful to connect to a running debug adapter node via OTP distribution
254
254
}
255
255
```
256
256
257
+
### Attaching to remote nodes
258
+
259
+
ElixirLS debug adapter is capable of remote debugging OTP cluster nodes. This functionality relies on OTP debugger. In order to attach to a remote node `some@host` a special launch config with request `attach` is needed. The launch config must specify `remoteNode` as well as `cookie` and `name` or `sname` for local DAP node.
- Ensure that the remote node is accessible and accepting connections
279
+
- Ensure that erlang cookie is correct
280
+
- Ensure that OTP `debugger` application is loadable on remote node. This may require including it in `extra_applications`
281
+
- If connecting to an OTP release, ensure that it is built with `strip_beams` set to `false`. Note that it defaults to `true`
282
+
- Ensure that remote node application has not been compiled with `debug_info` set to `false` via `elixirc_options` or `@compile` attribute
283
+
- Ensure that both source files and compiled beams are available in the project directory
284
+
285
+
#### Limitations
286
+
287
+
Remote debugger has several limitations compared to local debugger:
288
+
289
+
-`dbg` macro breakpoints are not supported
290
+
- conditional breakpoints, hit conditional breakpoints and log points are not supported
291
+
- pausing non interpreted processes is not supported
292
+
- expressions are evaluated on local node
293
+
294
+
#### Warning
295
+
296
+
ElixirLS debug adapter interprets modules with [`:int.ni/1`](https://www.erlang.org/doc/apps/debugger/int.html#ni/1) on all connected nodes. It attempts to uninterpret all modules on debug session end but that may not be possible due to loss of connectivity. This may affect production workloads. Use remote debugging with caution.
297
+
257
298
## Automatic builds and error reporting
258
299
259
300
ElixirLS provides automatic builds and error reporting. By default, builds are triggered automatically when files are saved, but you can also enable "autosave" in your IDE to trigger builds as you type. If you prefer to disable automatic builds, you can set the `elixirLS.autoBuild` configuration option to `false`.
0 commit comments