Debug a Workflow (Beta)
The Workflow Debugger runs a deployed workflow in the Development environment and pauses it where you choose. At each pause you can read the data going into and out of a step, and change it before the run continues.
The debugger is a Beta feature and is turned on per user. If you don't see the Open debugger icon in the header, follow Turn on the debugger or ask your administrator to enable it.
Before you begin
- Deploy the workflow to the Development environment and keep that deployment active. The debugger runs the latest active Development version, and its header shows that version, for example "v3".
- Select the workflow in the application tree.
If the icon is disabled, hover over it. The tooltip tells you why: "Select a workflow to debug", "Deploy the workflow to debug.", or "No active Development deployment. Activate a deployment to debug."
Turn on the debugger
- Select Settings in the left toolbar.
- Select Dev Tools.
- Turn on Enable Canvas Debugger.
If you don't see Dev Tools, ask your administrator to enable it for you. The icon appears in the header straight away.
Open the debugger
Select the workflow, then select the debug icon in the header. Its tooltip reads "Open debugger". The drawer opens with:
- a left rail with Runs and Breakpoints;
- the workflow board at the top right, with a status tag in its top-left corner;
- the debug controls and the Input and Output panes below the board.
The header has a Debug view and a Configuration view. Use Configuration to inspect the settings of the step you select. Select the close icon to leave the debugger.
Choose when the run pauses
Use the pause mode list in the toolbar. It is locked while a run is in progress.
| Mode | Behaviour |
|---|---|
| Each step | Pauses at every activity. Breakpoints you set are kept but ignored. |
| Breakpoints | Pauses only at enabled breakpoints. The label shows how many are enabled, for example "Breakpoints (2)". |
If you add your first breakpoint while the mode is Each step, Studio asks "Switch to Breakpoints mode?" Select Switch to Breakpoints to pause only at your breakpoints, or Keep Each step.
Set breakpoints
- Select Breakpoints in the left rail.
- Find the step. The tree lists the workflow and every subflow it calls, and each subflow row shows how many of its inner breakpoints are on, such as 1/3. Use Filter steps to narrow the list.
- Select the dot on the step's row to turn a breakpoint on or off. The first dot pauses Before the step runs, and the second pauses After it, once it has produced its output.
Turn on Enable all breakpoints to switch every breakpoint on at once. A subflow that calls itself is marked "Calls itself", and a subflow that cannot be read is marked "Couldn’t load". Select the arrow on a subflow row to expand its steps.
Run and step
- Fill in the request for the trigger. It works like the request editor in draft execution: Headers, Params and Body tabs, pre-filled from the trigger. The request is not editable once the run starts.
- Select the run control. Its tooltip reads "Run".
- At each pause, use the controls. Hover to see the tooltips.
| Control | What it does |
|---|---|
| Run or Resume | Starts the run, or continues from a pause. |
| Step over (tooltip "Step — run the next activity only") | Runs the next activity and pauses again. It is disabled in Breakpoints mode, where you can only resume to the next breakpoint. |
| Step into | At a Subflow step, enters the subflow. |
| Step out | Finishes the subflow you are inside and returns to its parent. |
| Clear debug session | Stops the run and resets for a new session. |
Inspect and edit data
Select any step on the board to see its Input and Output. This works for steps the run has already passed.
- Paused before an activity: edit the Input, then select Apply & Continue to resume with your value.
- Paused after an activity: edit the Output, then select Apply & Continue to send your value to the next step.
The editor only accepts valid JSON, and Apply & Continue stays disabled while the JSON is invalid. You can't edit the trigger step this way. Edit its request before you run.
Move between subflows
Select a Subflow step on the board, then select Go to subflow, to open it. When you are inside a subflow, select Back to followed by the parent workflow name, or select a name in the breadcrumb above the board, to climb back out. The same Go to subflow control appears in the Breakpoints tree.
Work with runs
The Runs view lists every run of this workflow with its status and start time. Each run expands into the workflows and subflows it called, and a subflow that runs more than once is listed once per invocation, so you can open the data each call saw.
- Select a run, or one of its subflows, to replay it read-only. The board shows the steps that ran, and each step shows what it received and produced.
- Right-click a run and select Rerun or Delete run.
- Select + (tooltip "New run — start a fresh session") to start a new session.
- When a run ends, the panel becomes read-only. Select the run control, whose tooltip then reads "Reset for a new session", to reset it, then select it again to start a new run.
- If you select a different run while one is still running, Studio asks "Terminate the running session?" Select Terminate & switch to continue, or Stay.
The status tag on the board shows New, Running, Paused, Completed, Failed or Terminated. Runs are kept in your browser, and Studio keeps the newest 25 per workflow.
When it does not work
| What you see | What to check |
|---|---|
| The debug icon is missing | The debugger is off. See Turn on the debugger. |
| The icon is disabled | Read its tooltip. Deploy the workflow to Development and activate the deployment. |
| Step over is disabled | You are in Breakpoints mode, or the run is not paused. |
| Step into is disabled | The paused step is not a Subflow step. |
| Step out is disabled | You are not inside a subflow. |
| Request body must be valid JSON | Correct the Body JSON before you run. |
Next steps
Use draft execution for a quick check without deploying, and Test a Workflow or API to verify the deployed version.