ChasteGuides/UsingDebugMacros

Using Debug Macros

If you are having trouble and want to debug without writing

std::cout << "blah" << std::endl << std::flush;

(etc) there is a handy helper macro list in source:trunk/global/src/Debug.hpp .

Trace

For the above example

TRACE("Some trace");

prints this to the screen:

DEBUG: Some trace

Printing variables

PRINT_VARIABLE(my_var);
PRINT_2_VARIABLES(my_var, another_var);
PRINT_3_VARIABLES(my_var, another_var, cancer_curing_constant);
PRINT_4_VARIABLES(my_var, another_var, cancer_curing_constant, heart_disease_ending_constant);
PRINT_VECTOR(vector); // std::vector of anything

will result in the following output

DEBUG: my_var = 3141
DEBUG: my_var = 3141, another_var = 2.81
DEBUG: my_var = 3141, another_var = 2.81, cancer_curing_constant = 0.0534502
DEBUG: my_var = 3141, another_var = 2.81, cancer_curing_constant = 0.0534502, heart_disease_ending_constant = -3e-141
DEBUG: vector = {0,1,2.7,3.1}

Determining if lines are reached

MARK;

will do something like

DEBUG: ./global/test/TestDebug.hpp at line 95

and

for (unsigned i=0; i<3; i++)
{
   HOW_MANY_TIMES_HERE("my line");
}

outputs

DEBUG: Num times here (my line): 1
DEBUG: Num times here (my line): 2
DEBUG: Num times here (my line): 3

and

for (unsigned j=0; j<3; j++)
{
  TRACE_FROM_NTH_VISIT("hello",2);
}

will output

DEBUG: hello (visit 2)
DEBUG: hello (visit 3)

and finally,

QUIT_AFTER_N_VISITS(11);

will quit (assert(0), with "User-forced quit." output), the 11th time that line is visited.