Cómo utilizar logCat en la programación JNI
/build/platforms/Android-8/arch-arm/usr/include/Android/log.h
el archivo de encabezado que se encuentra en el NDK de Android, Ábrelo y echa un vistazo.
[CPP] Texto sin formato
/ *
*Copyright (C) 2009 Proyecto de código abierto de Android.
*
*Con licencia Apache, versión 2.0 (la "Licencia");
*No puede utilizar este archivo excepto de conformidad con las Licencia.
*Puedes obtener una copia de la licencia en .
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*A menos que sea aplicable la ley consentimiento requerido o por escrito; de lo contrario, el Software
* Distribución bajo la Licencia se distribuye "TAL CUAL",
* SIN GARANTÍA NI CONDICIONES DE NINGÚN TIPO, expresas o implícitas.
*Ver licencia derechos administrativos específicos del idioma y.
*Restricciones bajo Licencia.
* /
#ifndef's _ANDROID_LOG_H
# definición _ANDROID_LOG_H
/ ************* ******** *******************
*
*Nota importante:
**Este archivo es parte del archivo de encabezado del sistema estable de Android.
*El NDK (kit de desarrollo nativo) de Android está expuesto porque
*Plataforma 65438+ versión 0.5
*
*Tercero- El código de fuentes del partido y el código binario dependen de la definición.
*Esto se ha congelado en todas las versiones de la próxima plataforma.
*
*: no modifique la enumeración (a menos que agregue un nuevo valor de 32 bits).
*-No modificar constantes ni macros de funciones.
* - No cambie la firma de la función de ninguna manera.
*-No cambiar la disposición y dimensiones de la estructura.
* /
/ *
* Admite rutinas para enviar mensajes al búfer de registro del kernel de Android.
* Se puede acceder a él más tarde a través de la utilidad "logcat".
*
*Cada mensaje de registro debe tener
*-priority
*-etiqueta de registro
* - Algún texto
*
* La etiqueta suele corresponder al componente que envía el mensaje de registro,
* y debe ser pequeña.
*
*El texto del mensaje de registro puede truncarse según la implementación.
*Limitaciones (como 1023 caracteres).
*
*Ten en cuenta que los caracteres de nueva línea ("/N") se agregarán automáticamente a tu archivo .
*Registrar mensaje si no existe. Es imposible enviar varios mensajes.
* y hacer que aparezcan en una línea en logcat.
*
*Utilice el registro, no se exceda:
*
* - El envío de mensajes de registro consume CPU y se ralentiza bajar la aplicación La velocidad del programa
*sistema.
*
*: el búfer de registro circular es muy pequeño (
* Los mensajes de registro importantes pueden enviarse desde el resto del sistema.
*
*: en las versiones de lanzamiento, solo se envían mensajes de registro para explicar las excepciones.
*Condiciones.
*
*Nota: Estas funciones deben ser implementadas por /system/lib/librog.so.
* /
#incluye
#ifdef __cplusplus de
"c" externa (
#ENDIF
/ *
* Valores de prioridad de registro de Android, ordenados en orden ascendente de prioridad
* /
Enumeración Typedef android_LogPriority {. /p>
ANDROID_LOG_UNKNOWN = 0
ANDROID_LOG_DEFAULT,/* para SetMinPriority()*/
ANDROID_LOG_DEFAULT,
ANDROID_LOG_DEBUG,
ANDROID_LOG_INFO,
ANDROID_LOG_WARN,
ANDROID_LOG_ERROR,
ANDROID_LOG_FATAL,
ANDROID_LOG_SILENT, /* SetMinPriority() debe ser solo el último; one */
} android _ LogPriority
/ *
*Enviar un registro de cadena simple
* /
.INT __android_log_write(INT PRIO, marcado con const char *, marcado con const char * text
/ *
*Enviar una cadena formateada al registro, usando printf); (FMT,...)
* /
INT __android_log_print(INT PRIO, marcado con const char *, const char * FMT...)
#Si defines (__ GNUC__)
__attribute__((format(of printf, 3, 4)))
#ENDIF
/ *
* La variante de __android_log_print() requiere una lista de va_list.
* Parámetros adicionales >* /
int _ _ Android _ log _ vprint(int prio, marcado. con const char *,
es const char * FMT, AP de va_list
/ *
* La aserción de inicio de sesión falló, hubo una posibilidad durante SIGTRAP); .
*Si hay un depurador adjunto, compruébalo. Utiliza prioridad fatal.
* /
__android_log_assert no es válido (para const char * COND, para const char * etiqueta,
Para constante char * FMT,...)< / p>
#Si defines (__ GNUC__)
__attribute__((no devuelto))
__attribute__((format(of printf, 3, 4)))< / p>
#ENDIF
#ifdef __cplusplus de
}
#ENDIF
#ENDIF / * * _ANDROID_LOG_H /
Lea atentamente este archivo de encabezado. Encontraremos que el NDK de Android es totalmente compatible con la depuración de métodos locales JNI.
Proporciona cuatro funciones para que las usemos, como se muestra a continuación
[CPP] Texto sin formato dado
/ *
*Enviar un registro de cadena simple.
* /
INT __android_log_write(INT PRIO, marcado con const char *, marcado con const char * texto
/ *
<); p>*Enviar una cadena formateada al registro, usando printf(FMT,...)* /
INT __android_log_print(INT PRIO, marcado con const char * , const char * FMT...)
/ *
* __android_log_print(variant) requiere una lista de va_list.
*Parámetros adicionales.
* /
int _ _ Android _ log _ vprint(int prio, marcado con const char *,
es const char * FMT, AP de va_list );
/ *
* La aserción de inicio de sesión falló con una probabilidad durante SIGTRAP.
*Si hay un depurador adjunto, compruébalo. Utiliza prioridad fatal.
* /
__android_log_assert no es válido (para const char * COND, para const char * etiqueta,
Para constante char * FMT,...)< / p>
Podemos enviar información de depuración del método local a logcat. (¿No es genial que no tengas que preocuparte tanto por depurar métodos locales en el futuro?)
Para usar estas funciones, se deben agregar las siguientes declaraciones de inclusión al archivo local.
#incluir