Debugging con el ‘cerdo’ y con std::cerr
Escrito por Desert Zarzamora el Thursday, 30 de October del 2008 a las 11:54 am

Es muy útil hacer debugging con std::cerr, y si usas:
#include <iostream>
using namespace std;
main(blabla...){
cerr << "This is a debug message" << endl;
}
Todo funciona maravillosamente, hasta que tus 20 threads comienzan a vomitar cientos y cientos de mensajes que hacen imposible leer el debug. Para ello lo ideal sería definir “debug levels”. Hay dos formas la forma simple y tonta:
#ifdef DEBUG_N cerr << "This is a debug message" << endl; #endif
Pero esa forma es muy fastidiosa, así que mejor definimos un ‘cerdo‘ (cerdo = cerr debug output). O incluso mejor un cerdo con niveles: cerdo, cerdo2, cerdo3,… , cerdoN. He aqui uno para 3 niveles (donde hacemos que cerdo=cerdo1):
// ----- cerdo.h ----- #ifndef DEBUG #define cerdo if(0) cerr #define cerdo1 if(0) cerr #define cerdo2 if(0) cerr #define cerdo3 if(0) cerr endif #if (DEBUG==1) #define cerdo cerr #define cerdo1 cerr #define cerdo2 if(0) cerr #define cerdo3 if(0) cerr #endif #if (DEBUG==2) #define cerdo cerr #define cerdo1 cerr #define cerdo2 cerr #define cerdo3 if(0) cerr #endif #if (DEBUG==3) #define cerdo cerr #define cerdo1 cerr #define cerdo2 cerr #define cerdo3 cerr #endif // ---- end cerdo.h ----
Ahora solo queda usar los cerdos.
#define DEBUG 2
#include "cerdo.h"
using namespace std;
main(blabla...){
cerdo << "This is a debuglevel 1 message" << endl;
cerdo1 << "This is a debuglevel 1 message" << endl;
cerdo2 << "This is a debuglevel 2 message" << endl;
cerdo3 << "This is a debuglevel 3 message" << endl;
}
Bye.
Categoria: General
- Añadir este post a
- Del.icio.us -
- Meneame -
- Digg
No hay comentarios
No Hay comentarios.
Escribir un comentario