This is an old revision of the document!

# Debug Mode Quick Start Guide

The debug mode in Behavior Bricks is a set of features that allows to debug the execution of the `Behavior Executor` component attached to your entities. In debug mode you can:

- View in real time the execution flow of a behavior tree - Display the values of the blackboard parameters during execution - Pause and resume the execution of a behavior tree for an entity or group of entities - Set breakpoints in nodes of the behavior tree

## Debug mode and execution flow visualization

The Behavior Bricks editor enters debug mode automatically when playing a scene in the Unity editor, substituting the `Behavior` tab of the Behavior Bricks editor with the `Debug` tab, as shown in the Figure:

<img src=“” title=“Debug tab” alt=“Debug tab” width=“100%”/>

To watch the execution flow for a particular behavior tree of a given entity in the scene, you must open the behavior tree in the Behavior Bricks editor, and select the entity to debug in the Unity´s `Hierarchy` panel. Alternatively, the entity can be selected in the `Debug` tab, by first clicking on the `Refresh List` button and then clicking on the entity name. The `Debug` tab shows a list of the entities in the scene being played which contain a `Behavior Executor` component, grouped by the behavior assigned, as shown in the Figure:

<img src=“” title=“Debug tab” alt=“Debug tab” width=“100%”/>

Once the behavior and the entity have been selected, the state of each node is depicted by changing the color of its bounding box:

- White while running (`MoveToGameObject` in the Figure) - Green when finished returning `Completed` (`IsTargetClose` in the Figure) - Red when finished returning `Failed` - Grey when in suspended state (`Repeat` and `Priority Selector` in the Figure)

<img src=“” title=“Execution flow example” alt=“Execution flow example” width=“100%”/>

From the `Debug` tab is also possible to pause the execution of an entity behavior by clicking on the `Pause` button next to the entity name. Keep in mind that the pause will start after it finishes its current task. Once you have pressed the pause button you can either `Resume` the behavior or `Tick` it so the behavior receives one update call and then return to pause.

![Resume or Tick](images/DebugModeQuickStartGuide/pause.png “Pause, resume and tick”)

It is also possible to pause and resume all the entities that use a given behavior by pressing the corresponding `Resume all` or `Pause all` button.

## Watching the blackboard and node parameters

In order to see the current values of the blackboard parameters for a concrete behavior of an entity you must:

- Be in Play Mode - Open the Behavior Bricks Editor - Open the behavior that you want to debug (You can watch the assigned behavior and all the subbehaviors that it uses) - Select the entity to debug in the Unity´s `Hierarchy` panel or in the `Debug` tab in the Behavior Bricks Editor (For more information read `Debug Tab` Section)

In the tab `Blackboard` you can see the current value of all blackboard parameters of the open behavior, but if you are only interested in the value of the parameters related to a concrete node you can watch it by selecting the node while having the `Node` tab selected.

![Blackboard values](images/DebugModeQuickStartGuide/BlackboardTab.PNG “Blackboard values”)

![Blackboard values](images/DebugModeQuickStartGuide/BlackboardNode.PNG “Blackboard values in Node Tab”)

## Breakpoints

With this feature you can pause the execution of the game when a node for a concrete behavior tree of a specific entity reach one of the following states:

- Success - Failed - Aborted - Launched

To add a breakpoint you just need to right click in a node and select `Add Breakpoint`:

![Adding a breakpoint](images/DebugModeQuickStartGuide/AddBreakpoint.PNG “Adding a breakpoint”)

You can configure what events the breakpoint should be triggered in the `Node` tab by marking the desired events.

![Breakpoint events](images/DebugModeQuickStartGuide/BreakpointConfig.PNG “Breakpoint events”)

In case all events are unmarked the breakpoint will be displayed as disabled with a grey color:

![Disabled breakpoint](images/DebugModeQuickStartGuide/DisabledBreakpoint.PNG “Disabled breakpoint”)

Remeber that a breakpoint can only be triggered when:

- You are on Play Mode - Behavior Bricks Editor is open - A valid entity is selected - The behavior that contains the node with the breakpoint attached is open, but you don´t need the behavior to be the active tab.

![Triggered breakpoint](images/DebugModeQuickStartGuide/TriggeredBreakpoint.PNG “Triggered breakpoint”)