tracing_example.cpp
This code exemplifies how to insert trace statements to follow the flow of program execution. When compiler under gcc 3.3 and run, the following program will output the following trace:trace[1]: Entering int main() trace[2]: Entering int foo(int) trace[3]: Entering int Foo::bar(int) trace[3]: i = 21 trace[3]: At line 16 in tracing_example.cpp trace[3]: Wrong answer trace[3]: i = 42 trace[3]: Exiting int Foo::bar(int) trace[3]: Entering int Foo::bar(int) trace[3]: i = 42 trace[3]: At line 13 in tracing_example.cpp trace[3]: Right answer, but no question trace[3]: i = 42 trace[3]: Exiting int Foo::bar(int) trace[2]: Exiting int foo(int) trace[1]: Exiting int main()
#include <ql/quantlib.hpp> using namespace QuantLib; namespace Foo { int bar(int i) { QL_TRACE_ENTER_FUNCTION; QL_TRACE_VARIABLE(i); if (i == 42) { QL_TRACE_LOCATION; QL_TRACE("Right answer, but no question"); } else { QL_TRACE_LOCATION; QL_TRACE("Wrong answer"); i *= 2; } QL_TRACE_VARIABLE(i); QL_TRACE_EXIT_FUNCTION; return i; } } int foo(int i) { using namespace Foo; QL_TRACE_ENTER_FUNCTION; int j = bar(i); int k = bar(j); QL_TRACE_EXIT_FUNCTION; return k; } int main() { QL_TRACE_ENABLE; QL_TRACE_ENTER_FUNCTION; int i = foo(21); QL_TRACE_EXIT_FUNCTION; return 0; }