F: The traces and the debugger

 

If you have a problem with the program, it is possible that we will ask you to generate a trace.  Traces are reports of what the program was doing when you encouter the problem. 

 

The first step is to open the trace interface.  There's 2 way to do this:

Directly from the keyboard by typing both the "Ctrl" key and a number "1" to "9".  The number you use will preset the trace level in the interface.

Trough the debugging interface by typing both the "Ctrl" and the "d" keys at the same time.

 

 

The Trace Interface (Started with "Ctrl-1" to "Ctrl-9" or the "New Trace" button  in the debugging interface)

 

 

 

Text window

Some feedbacks, like start and stop...

 

Modules

You can restrict the trace to certain modules of the program.  The choices are:

Main          All the modules that start and stop sliceO along with the main loops

Class          All the modules that work with the classes

Config          The configuration menu and its modules

Cuda          All Cuda modules

Menu          The Main menu and its modules

Mode          The differnt modes DLLs

System          The system DLLs

Tool          The different tools DLLs

Undo          The undo/redo operations and menus

VR          All VR modules

Fct          Members of the "Module_Structures" DLL.

Gadget          The program's gadgets (like the tag and brush selection tools) in the "Module_Tools" DLL

Lib          All the internal libraries used by the program (Lib_*.dll)

Util          Un-used at this time

 

Functions

You can restrict the trace to certain functions within the desired modules of the program.  The choices are:

Main          All the functions that start and stop sliceO along with the main loops

Ctrl          All the functions that are used in the module's interfaces

Ima          All the functions that display images to the screen

Class          All the diffent classes

Draw          All the functions that draw to the image window

Result          All the functions that are associated with the "Results" tools

Script          All the functions that read/write scripts

Update          Inside each modules, tehre is an "Update" function that react to external changes

Var          All the functions that read/write to system variables

Work          Any function in a module that do the actual computation for that module

IPC          The "Inter Process Communication" tools used to synchronyse the processes

Proc          Window's "Proc" functions.

 

Trace Level

You can also restrict the trace to certain "levels".  The higher the trace level, the more detailed will be the trace.  But higher level traces will generate huge trace files and will also slow down the program.  User the higher levels when you start the trace close to the problem you have.  For example if you have a problem when you click on the "Erosion" button of the Morpho mode, start sliceOmatic, load you image, go to the Morpho mode and start the trace just before you click on the "Erosion" button.  Stop the trace immediately after your problem show up! On the other hand, if your problem is a crash of sliceOmatic, then you do not have to stop the trace, the crash did that for you.

 

Start

Start the trace for the selected modules and functions at the selected trace level.  The trace will be called "sliceOmatic_trace.dat" and it will be placed in your "Scratch" directory (by default, Documents/TomoVision)

 

Stop

Stop the trace

 

Exit

Exit the interface

 

 

The Debugging Interface (Started with "Ctrl-D")

 

 

 

Line summary

Tell you what is the currently selected trace line and the total number of lines.

 

Main window

This section is split in 2 to n sub-windows.  The left one is the trace line number, the second one is the main trace.  If sliceOmatic spawn a sub-process, it will have its own sub-window.  You can resize any of the sub-windows by moving the separator bar between sub-windows.

 

Up/Down and pan

At the bottom of each sub-window, you have a up and down arrow.  These can be used to go to the first or last line of trace present in the sub-window.  You can also use the "pan" slider to pan the text horizontally inside the each sub-window.

 

Search

The search interface enable you to search for text in the trace,

 

Stack

This window show you the current stack nesting of the functions for the current selected line in the trace.

 

Modules

This group enable you to add/remove traces lines specific to certain modules.  You can also assign colors to the trace lines according to the module they belong to.  Only the modules present in the trace can be selected.

 

Functions

This group enable you to add/remove traces lines specific to certain functions.  You can also assign colors to the trace lines according to the functiopn they belong to.  Only the functions present in the trace can be selected.

 

Trace Level

This group enable you to add/remove traces lines specific to certain trace levels.  You can also assign colors to the trace lines according to the level they belong to.  Only the levels present in the trace can be selected.

 

New Trace

Open the trace interface.  The default Modules, Functions and levels of the trace interface will be set to the values from the debugging interface.

 

Load Trace

Load the latest trace file generated (from "sliceOmatic_trace.dat" in your "Scratch" directory).

 

Clean Trace

Traces tend to be very repetitive.  This will remove duplicated lines in the trace.  It wil only keep the fisrt and last 5 instances of any specific lines or group of lines.  Since we usually want to see what the program was doing at the time of a crash, this is more than enough.

 

Save Trace

Save a copy of the trace to the desktop.  This is the file you should send to TomoVision.

 

Exit

Exit the debugging interface.

 

 

Note:

 

The IPC lines will always be in color, regardless of the "Color" selection for the modules, functions or trace levels.