I deleted the regal.zip file that the script created. I assume that shouldn't be commited? But looking at Johan's "agent" PR, it looks like it was included. We can fix that later though. Signed-off-by: Anders Eknert <anders.eknert@apple.com>
2.3 KiB
sidebar_position, sidebar_label
| sidebar_position | sidebar_label |
|---|---|
| 10 | Debugging Rego |
Debugging Rego
In addition to being a language server, Regal can act as a Debug Adapter for supported clients. A Debug Adapter is a long running program that can communicate with a debugger client, such as Visual Studio Code's debugger, to provide live, step-by-step, debugging capabilities for a language.
<img src={require('./assets/dap/animation.gif').default} alt="Animation showing the a debugging session in VS Code"/> A debugging session in VS Code
Getting Started
See the documentation in the Editor Support page for supported clients:
:::info
If your evaluation depends on a data.json file, please make sure to have
.manifest files to mark your bundles, or
configure roots
in Regal's config.
:::
Features
The Regal Debug Adapter currently supports the following features:
Breakpoints
Breakpoints allow you to continue execution of a policy until a given point. This can be helpful for:
- Inspection of variables at a given point in time
- Seeing how many times a given block of Rego code is executed, if at all
- Avoiding the need to step through code as it's run line by line
<img src={require('./assets/dap/breakpoint.png').default} alt="Screenshot of a breakpoint in VS Code"/>
Variable Inspection
Either at a breakpoint or while stepping through code, you can inspect the
local variables in scope as well as the contents of the global input and
data documents.
input will be loaded from input.json in the workspace if it exists.
<img src={require('./assets/dap/variables.png').default} alt="Variables being inspected during execution in VS Code"/>
Print Statements
Print statements are also supported, these are shown in the debug console:
<img src={require('./assets/dap/print.png').default} alt="Print statements shown in the debug output console"/>