In this section:
Tracing is a very useful enhancement of Insure++ for C++ programmers. Because C++ is such a complicated language, programmers may never know which functions are being called or in which order. Some functions are called during initialization before the main program begins execution. Tracing provides the programmer with the ability to see how functions, constructors, destructors, and more are called as the program runs.
Insure++ prints a message at the entry to every function that includes the function name, filename, and line number of the command that called it. A typical line of output from tracing looks like this:
function_name filename, line_number
By default, the output is indented to show the proper depth of the trace.
Tracing is turned off by default. The easiest way to turn tracing on is to set the trace on value. This turns on tracing for the entire program. See Options Used by Insure++ for more information about this option.
Full traces require either the
-Zi compiler switch (Windows) or
-g flag (Unix) on your
insure compile line. To get file names and line numbers in the trace output, you must use the
stack_internal on option when compiling your program, which will slow your program down while every function call prints information.
This problem can be minimized by selectively turning on tracing during the execution of your program only in those sections of the code where you need it most. This can be done using the following Insure++ command in which
flag = 0 turns tracing off and
flag = 1 turns tracing on.
void _Insure_trace_enable(int flag)
There is an additional special Insure++ function that works with tracing. The following function may be used to add your own messages to the trace:
void _Insure_trace_annotate(int indent, char *format, ...)
In the above command,
indent = 0 means the string is placed in column zero,
indent = 1 means string will be indented at proper level, and
format should be a normal
printf-style format string.
Directing Tracing Output To A File
You can direct tracing output to a specific file by setting a
trace_file filename value. You can set this value in the Windows GUI by choosing Advanced tab> Advanced Configuration Settings for Insure++. See Options Used by Insure++ for details.
When you use this option, Insure++ prints a message reminding you where the tracing data is being written. If you would like to eliminate these reminders, you can use the
trace_banner off option. See Options Used by Insure++ for additional information.
The following code can be found in the examples\cpp directory as the file trace.cpp:
You will see the following output if you compile and link
trace.cpp with the
-Zoi "stack_internal on" option and run the executable with the
trace on value set:
For more information about these and other options see Options Used by Insure++.