15.1 Studio Debugging Tools: Breakpoints, Panels & Execution Control
Key Takeaways
F5 debugs the project from Main, F6 debugs the current file, F9 toggles a breakpoint, Pause breaks, and F12 stops.
Step Into opens containers and invoked workflows (read-only tab), Step Over runs them without opening, and Step Out finishes the current container.
Retry re-runs the previous activity, Ignore continues from the next activity, and Restart starts again from the first activity of the project.
Breakpoint settings are Condition (not validated), Hit Count (up to 32,767), Log Message (Trace level), and Continue execution when logging, which makes a non-pausing tracepoint.
The Locals panel is where values are edited while paused; Watch and Immediate evaluate, Call Stack shows the next activity and its parents, and Slow Step 1x is the slowest speed.
15.1 Studio Debugging Tools: Breakpoints, Panels & Execution Control
Core Concept: Studio's debugger lets you pause a workflow, step through activities, inspect and change values, and log information without stopping. Knowing exactly what each action and panel does, and what it does not do, is a common source of exam questions.
Starting a Debug Session
Debugging is available from the Design and Debug ribbon tabs, but not while project files have validation errors.
| Shortcut | Action |
|---|---|
| F5 | Debug the project, starting with the file set as Main |
| F6 | Debug the currently opened file |
| Ctrl + F5 / Ctrl + F6 | Run the project / run the current file without debugging |
| F9 | Toggle a breakpoint on the selected activity |
| F11 / F10 / Shift + F11 | Step Into / Step Over / Step Out |
| Pause | Pause (Break) the execution, in normal and debug mode |
| F12 | Stop the execution, in normal and debug mode |
Right-clicking an activity also offers Run to this Activity, Run from this Activity, and Test Activity, which runs one activity in the debugger and asks for the values of the variables it uses.
Stepping and Recovery Actions
| Action | What it does |
|---|---|
| Step Into | Debugs activities one at a time. For Invoke Workflow File, the invoked workflow opens in a new tab in read-only mode and its activities run one by one |
| Step Over | Runs the next activity; containers such as sequences, flowcharts, and Invoke Workflow File are highlighted but not opened |
| Step Out | Completes the activities in the current container and pauses at the level of that container |
| Retry | Re-executes the previous activity and throws the exception again if it recurs |
| Ignore | Ignores the exception and continues from the next activity |
| Restart | Available after an exception paused debugging; restarts from the first activity of the project, or from the activity chosen with Run from this Activity |
| Break | Pauses at any moment; then choose Continue, Step Into, Step Over, or Stop |
| Focus | Returns the designer to the current execution point, breakpoint, or failing activity |
Warning
Ignore skips the failing activity, so its output variables are never set. Later activities that use them often fail with a NullReferenceException.
While debugging is paused, you can also change the properties of the current activity, such as its selector, timeout, or inputs, from the Properties panel or the designer. The activity runs with the new values when execution resumes, and when debugging ends Studio asks whether to keep the changes.
Debug Ribbon Options
| Option | Behavior |
|---|---|
| Slow Step | Highlights and opens each activity and container as it runs, like Step Into but without pausing. It has 4 speeds: 1x is the slowest and 4x the fastest; each click moves to the next speed |
| Execution Trail | Off by default. Marks executed activities in green and activities that threw an exception in red; activities that did not run stay unmarked |
| Highlight Elements | Highlights UI elements as they are used during debugging |
| Log Activities | Shows each debugged activity as a Trace log in the Output panel. Highlight Elements and Log Activities can only be toggled before debugging |
| Continue on Exception | Off by default. When off, an error stops debugging and highlights the failing activity (or passes the error to a Global Exception Handler if one is set). When on, the exception is logged and execution continues |
| Picture in Picture | Runs or debugs in a separate session or virtual desktop |
| Remote Debugging | Sends run and debug operations to a remote robot |
| Profile Execution | Measures how long each activity takes (see the Profile Execution section) |
Breakpoints and Tracepoints
Toggle a breakpoint with F9, the Toggle Breakpoint context menu, or the Breakpoints button on the Debug tab. A breakpoint pauses execution before the activity runs. Breakpoints persist when you reopen the project and affect only debugging, not normal runs.
Breakpoint Settings fields:
| Field | Meaning |
|---|---|
| Condition | Breaks only when the expression is true. The expression is not validated, so typos only show up at run time |
| Hit Count | The number of times the condition must be met before execution breaks; maximum 32,767 |
| Log Message | A message logged at Trace level in the Output panel when the breakpoint is reached (or its condition is met) |
| Continue execution when logging | Logs the message without pausing; available only after a log message is set |
The four types follow from these settings:
- Breakpoint: no settings; always pauses.
- Conditional breakpoint: a condition and/or hit count.
- Tracepoint: a log message. With Continue execution when logging selected, it logs without stopping.
- Conditional tracepoint: a condition or hit count plus a log message.
The Breakpoints panel lists them all and can enable, disable, or delete all breakpoints, and Focus jumps to one in the designer.
Debugging Panels
| Panel | Shows | Can you change values here? |
|---|---|---|
| Locals | The exception (description and type), arguments, variables, the input and output properties of the previously executed activity, and the properties of the current activity | Yes. While paused, open a value's Local Value window to edit variables, arguments, and the current activity's properties. Edits are not saved to the file |
| Watch | Variables, arguments, and expressions you add; values update after each activity | No, it displays values |
| Immediate | The result of a variable, argument, or statement you type and submit with Enter; keeps a history you can clear | Used to evaluate, not documented as a place to assign values |
| Call Stack | The next activity to run and its parent containers; an activity that threw an exception is marked and highlighted in red | No; double-click an item to focus it in the designer |
Notes:
- Add an item to the Watch panel by typing it in the Add Watch field, or with Add to Watch from the Locals panel or Add Watch from the Variables or Arguments panel.
- In the Immediate panel, use parentheses for method calls, for example
Names.First().ToUpper. - Changing values from the Variables or Arguments panel or the Data Manager is not supported during debugging; use the Locals panel.
- Large values are truncated in both the Locals and Immediate panels.
Walkthrough: An Intermittent Business Rule Failure
A performer occasionally marks invoices as business exceptions when they look valid.
- Set a conditional breakpoint on the validation activity with the condition
String.IsNullOrWhiteSpace(in_TransactionItem.SpecificContent("ApproverID").ToString). - Debug the file with F6. Execution pauses only for suspicious items.
- Inspect the Locals panel:
ApproverIDholds three spaces instead of an empty string. - Evaluate in the Immediate panel:
in_TransactionItem.SpecificContent("ApproverID").ToString.Trim.Lengthreturns0. - Fix and verify: update the validation to trim the value, change the test value in the Locals panel's Local Value window, and continue to confirm the new branch.
- Replace the breakpoint with a tracepoint that logs the approver value and continues, to watch a full batch without stopping.
A developer is debugging a complex process and encounters an 'Invoke Workflow File' activity named 'CalculateTax.xaml'. The developer wants to execute all activities inside 'CalculateTax.xaml' at full runtime speed without stepping through them individually, but wants execution to pause immediately at the activity following the invocation in the parent workflow. Which debug command should be selected?
Step Into (F11)
Step Over (F10)
Step Out (Shift + F11)
Retry
A developer wants to log the value of int_Counter on every loop iteration during debugging without pausing. Which breakpoint configuration does this?
A breakpoint with Hit Count set to 1.
A conditional breakpoint with the condition int_Counter > 0.
A breakpoint with a Log Message containing the counter and Continue execution when logging selected.
Slow Step at 4x on the loop.
Paused at a breakpoint, a developer wants to change the Boolean variable isApproved from False to True before continuing. According to the Studio documentation, where can this be done?
In the Watch panel, by typing a new value in the Value column.
In the Variables panel, by changing the Default value.
In the Call Stack panel, by double-clicking the frame.
In the Locals panel, by opening the Local Value window for the variable and editing it.
Sections you finish are checked off in the contents.