# SOLoist Debugger™

SOLoist Debugger™ is small software tool and a part of the overall SOLoist™ technology.

Building UI in SOLoist is done using built-in and custom components wiring them one to another through the input and output pins. SOLoist components are encapsulated UI components with intra-component behavior. However, a focus of SOLoist Debugger™ is a binding mechanism that provides inter-component behavior between SOLoist components.

SOLoist Debugger™ has its invisible core part and two visible parts or windows: SOLoist Debugger™ control window and a SOLoist Debugger™ window.

## SOLoist Debugger™ control window

| SOLoist Debugger™ Control is a small dialog with toggle buttons for state management of the debugger. Switch ON / Switch OFF toggle button states are shown here: and . Pressing this button turns the debugger on or off. Show / Hide toggle button states are shown here: and . This button controls visibility of the debugger window. 'Step by step' mode toggle button is initially disabled. It enables when debugger is turned on. Possible states are shown here: and . When the 'step by step' mode is on, debugger offers the real time debugging with standard debugging actions like step into, step over, step return and continue. Otherwise, debugger creates call trace only without the real time option. Debugger control window also provides functionality of resizing the debugger window after opening the disclosure button named 'Resizing...'.

## SOLoist Debugger™ window

Real-time debugging information are shown on the Real Time tab of debugger window. This window looks like this:

Real Time tab displays information on the current execution point or breakpoint. Execution points are points in time just before propagation of data between UI components. These information include:

- message details (source and destionation UI component types, source and destination pins, source code references where source and destination components as well as binding between them were created and finaly, the message content)
- runtime information of the sending UI components stack and,
- runtime information of the future receivers i.e. UI components that will receive the message being propagated.

User controls the real-time debugging process by choosing the debug action on every breakpoint. Supported actions are: step into (5), step over (6), step return (7) and continue (8). Actions are submitted in separate blocking window that looks like this:

While Real Time debugging tab is active only when 'step by step' mode is turned on, Call Trace tab is active when debugger is turned on, with no respect to the 'step by step' mode whatsoever. This tab looks like this:

In the upper part of this tab call trace tree structure is shown. Each node represents a single propagation in the binding mechanism of the UI. This structure can get pretty large, so use buttons 'Clear All' and 'Clear Before' to manage its content and to focus on the propagation of interest. Details of each selected propagation are shown in the lower part of this tab. These details contain the same information like the details from the Real Time tab, with small additional feature of links towards OQL servlet, configurated such as to show details of message content when clicked.

Another useful feature of Call Trace tab is visible on click on any node displayed in the tree structure of calls. Since each node represents single propagation of data between two UI components, these components are marked with green and red colors to help user in finding them on the screen. This is shown here:

For more information on SOLoist Debugger™ contact SOL.

Copyright Serbian Object Laboratories ©2010. All rights reserved.