Cómo implementar los mecanismos de registro de depuración para aplicaciones en tiempo real

En este post, me gustaría presentar con el «registro de depuración MECANISMO «para aplicaciones en tiempo real.
Para depurar cualquier código, Desarrollador siempre depende de los registros (es decir, copias) que da información útil sobre dicha aplicación.
En caso de aplicaciones en tiempo real, mostrando demasiados REGISTROS mientras se ejecuta la aplicación no es una buena idea. (En las aplicaciones de tráfico en tiempo real, tener demasiadas impresiones puede conducir aplicación se bloquee.)

Entonces ¿cuál es la manera de registrar los grabados en aplicaciones en tiempo real? La solución es que todas las impresiones (troncos) deben estar bajo ciertos depurar macros y quedan habilitadas cuando el usuario necesita para depurar el problema.

desarrollador puede permitir a las impresiones sobre la base de los niveles (En otras palabras, el usuario puede obtener impresiones selectiva)
he escrito programa de ejemplo para demostrar el «MECANISMO DE REGISTRO DE DEPURACIÓN». Hay dos archivos Debug.h y sample_program.cc. Debug.h contiene la lógica Mecanismo de depuración LOG.

Compile sample_program.cc usando «c + + sample_program.cc-o test.exe»


/ * inicializa a cero, puede extenderse como unsigned long * /
application_debug unsigned char;

# define ENABLE_DEBUG_FLAG_LEVEL_0 , (1 <<0)
# define ENABLE_DEBUG_FLAG_LEVEL_1 (1 <<1) / * Generalmente LOGS se habilitan durante TIEMPO
* Activar registros de depuración * / # define
MUNI_DEBUG_ON (valor) (application_debug | = ENABLE_DEBUG_FLAG_ # # value) DEBUG
/ * OFF * / # define
MUNI_DEBUG_OFF (valor) (application_debug & = ~ ENABLE_DEBUG_FLAG_ # # value) />
/ * Aquí application_debug es inicializado para Zero
* Cuando el código llama a este MUNI_DEBUG Macro (LEVEL_0) conduce a application_debug y
* ENABLE_DEBUG_FLAG_ # # = application_debug y ENABLE_DEBUG_FLAG_LEVEL_0 ;
* ( # # «concatena el valor dado en la Macro)
* /

# define MUNI_DEBUG (valor) (application_debug y ENABLE_DEBUG_FLAG_ # # value)

/ * Definir LOG_DEBUG * /
# define LOG_DEBUG (fmt, args …) printf />

sample_program.cc

# include
# include «Debug.h»
int main ()
{/>
no

{cout <; cin >> X;

cout < cout <<" Introduzca el cual debug nivel de registro que deben activar / desactivar en la aplicación " < cout <<"HELP: ON: == nivel == 1 = LEVEL_0, nivel 2 = LEVEL_1" < cout <<"OFF: == nivel 3 = LEVEL_0, == nivel 4 = LEVEL_1" < cout <<"EXIT: Escriba el valor como 100" < cout < cin >> nivel;

/ / TALA
if (nivel == 1) {

MUNI_DEBUG_ON (LEVEL_0);}

else if (nivel == 2)
{
MUNI_DEBUG_ON (LEVEL_1);}

else if (nivel == 3 )

{MUNI_DEBUG_OFF (LEVEL_0);}

else if (nivel == 4) {

MUNI_DEBUG_OFF (LEVEL_1);
}

else {cout <<"Invalid Input "< if (X == 0) {

/ / Si DEBUG_LEVEL_0 está activada, sólo imprimir el registro
if (MUNI_DEBUG (LEVEL_0))
{LOG_DEBUG
(» NIVEL 0 LOG: El valor de X es cero «);}

cout < LOG if (MUNI_DEBUG (LEVEL_1))

{ ; LOG_DEBUG («NIVEL 1 LOG: El valor de X es cero»);}

if (! (MUNI_DEBUG (LEVEL_0)) &&! (MUNI_DEBUG (LEVEL_1)))
; {LOG_DEBUG />
}
cout < }

else { ;
/ / Si DEBUG_LEVEL_0 está activada, sólo imprimir el
LOG if (MUNI_DEBUG (LEVEL_0))

{ LOG_DEBUG («NIVEL 0 LOG: El valor de X no es cero y su valor:% d», X);
;}
cout <
/ / Si DEBUG_LEVEL_1 está activada, sólo imprimir el registro
if (MUNI_DEBUG (LEVEL_1))
; {LOG_DEBUG />
if (! (MUNI_DEBUG (LEVEL_0)) &&! (MUNI_DEBUG (LEVEL_1)))
; {
LOG_DEBUG («NO niveles de depuración (LEVEL_0 y LEVEL_1) REGISTROS están habilitados «);}

}

;} while (level! = 100); / / Salir
vuelta 0;}


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *