IBM ILOG Solver Debugger User's Manual > Debugging and Performance Tuning for Solver-based Applications > Visualizing Propagation > Tracing the Propagation at a Specific Node

Because of the nondeterministic nature of the search, it is not possible to draw the tree in advance. A second run is necessary to focus on a segment of the tree.

You can access statistical information about the Initial Propagation through the Search Tree root.

Tracing the Propagation at a Specific Node in the Search Tree

To trace the propagation at a specific node, proceed as follows:

  1. Run the Debugger a first time. Skip the Initial Propagation. Wait until the end of the solving or Abort if the solving process takes a long time.
  2. Add a breakpoint on a specific node by right-clicking on the node (you can also include conditional breakpoints in your code).
  3. Run the execution a second time. The tree nodes become white and are progressively re-colored.
  4. Step into the node to display the propagation events.

Adding Breakpoints in Your Code

You can register conditional breakpoints in your code so that as soon as a condition becomes true, the execution is interrupted. You can use three types of conditional breakpoints:

For example, in the debugjobshopm example, uncomment the following line:

debugger.breakIfDomainMaxLe(_makespan),60);

The execution will be interrupted when the maximum of the makespan domain is lower than or equal to the value 60.

Conditional breakpoints are extracted by the initialize member function. So make sure you set the conditional breakpoints before the call to the member function IlcSolverDebugger::initialize().

You can also call the member function IlcSolverDebugger::breakExecution() in your own goals.