Debug.hpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef DEBUG_HPP_
00030 #define DEBUG_HPP_
00031
00032 #include <iostream>
00033 #include <cassert>
00034 #include <sstream>
00035 #include <string>
00036 #include "PetscTools.hpp"
00037
00048 std::string FormDebugHead();
00049
00054 #define TRACE(stuff) std::cout << FormDebugHead() << stuff << std::endl << std::flush;
00055
00057 #define MARK std::cout << FormDebugHead() << __FILE__ << " at line " <<__LINE__ << std::endl << std::flush;
00058
00061 #define PRINT_VARIABLE(var) std::cout << FormDebugHead() << #var " = " << var << std::endl << std::flush;
00062
00067 #define PRINT_2_VARIABLES(var1,var2) std::cout << FormDebugHead() << #var1 " = " << var1 << ", " \
00068 #var2 " = " << var2 << std::endl << std::flush;
00069
00075 #define PRINT_3_VARIABLES(var1,var2,var3) std::cout << FormDebugHead() << #var1 " = " << var1 << ", " \
00076 #var2 " = " << var2 << ", " #var3 " = " << var3 << std::endl << std::flush;
00077
00084 #define PRINT_4_VARIABLES(var1,var2,var3,var4) std::cout << FormDebugHead() << #var1 " = " << var1 << ", " \
00085 #var2 " = " << var2 << ", " #var3 " = " << var3 << ", " \
00086 #var4 " = " << var4 << std::endl << std::flush;
00087
00095 #define PRINT_5_VARIABLES(var1,var2,var3,var4,var5) std::cout << FormDebugHead() << #var1 " = " << var1 << ", " \
00096 #var2 " = " << var2 << ", " #var3 " = " << var3 << ", " \
00097 #var4 " = " << var4 << ", " #var5 " = " << var5 <<std::endl << std::flush;
00098
00101 #define QUIT_AFTER_N_VISITS(n) { static unsigned counter=0; if (++counter==(n)) {TRACE("User-forced quit."); assert(0);} }
00102
00105 #define HOW_MANY_TIMES_HERE(message) { \
00106 static unsigned counter=1; \
00107 std::cout << FormDebugHead() << "Num times here (" << message << "): " << counter++ << std::endl << std::flush; }
00108
00112 #define TRACE_FROM_NTH_VISIT(stuff,n) { \
00113 static unsigned counter=0; \
00114 if (++counter>=(n)) {TRACE(stuff<<" (visit "<<counter<<")");} }
00115
00118 #define PRINT_VECTOR(v) \
00119 { std::cout << FormDebugHead() << #v " = {"; \
00120 for (unsigned _i=0; _i<v.size(); _i++) { \
00121 std::cout << (_i==0?"":",") << v[_i]; } \
00122 std::cout << "}" << std::endl << std::flush; }
00123
00124 #endif