Determinación del ID de punto de rastreo de un punto de rastreo

A lo largo del código que compone la máquina virtual Java (JVM), hay numerosos puntos de rastreo. Cada punto de rastreo se correlaciona con un ID exclusivo que consta del nombre del componente que contiene el punto de rastreo, seguido por un punto (.) y, a continuación, el identificador numérico del punto de rastreo.

Estos puntos de rastreo también se registran en dos archivos .dat (TraceFormat.dat y J9TraceFormat.dat) que se suministran con el entorno de ejecución Java™ , y el formateador de rastreo utiliza estos archivos para convertir los puntos de rastreo comprimidos en un formato legible.

Los desarrolladores y el servicio de JVM pueden utilizar los archivos .dat para habilitar la formulación de los ID de punto de rastreo y los rangos para utilizarlos en -Xtrace al rastrear problemas. La siguiente muestra, tomada del principio de J9TraceFormat.dat, ilustra cómo funciona este mecanismo:

5.1
j9bcu.0 0 1 1 N Trc_BCU_VMInitStages_Event1 "  Trace engine initialized for module j9dyn"
j9bcu.1 2 1 1 N Trc_BCU_internalDefineClass_Entry " >internalDefineClass %p"
j9bcu.2 4 1 1 N Trc_BCU_internalDefineClass_Exit " <internalDefineClass %p ->"
j9bcu.3 2 1 1 N Trc_BCU_createRomClassEndian_Entry " >createRomClassEndian searchFilename=%s"

La primera línea del archivo .dat es un número de versión interno. A continuación del número de versión hay una línea para cada punto de rastreo. El punto de rastreo j9bcu.0 se correlaciona con Trc_BCU_VMInitStages_Event1 por ejemplo, y j9bcu.2 se correlaciona con Trc_BCU_internalDefineClass_Exit.

El formato de cada entrada de punto de rastreo es:
<component.id> <t> <o> <l> <e> <symbol> <template>
donde:
<component.id>
Es el nombre de componente SDK.
< t>
es el tipo de punto de rastreo (0 a 12), donde se utilizan estos tipos:
  • 0 = suceso
  • 1 = excepción
  • 2 = entrada de función
  • 4 = salida de función
  • 5 = salida de función con excepción
  • 8 = interno
  • 12 = aserción
< o>
es la actividad general (del 0 al 10), que determina si el punto de rastreo se ha compilado en el código de la JVM en tiempo de ejecución.
< l>
es el nivel del punto de rastreo (0 a 9). A los puntos de rastreo de alta frecuencia, conocidos como puntos de rastreo dinámicos se les asignan números de nivel superior.
< e>
es un distintivo interno (Y/N) y ya no se utiliza.
< symbol>
es el nombre simbólico interno del punto de rastreo.
< template>
es una plantilla entre comillas que se utiliza para formatear la entrada.
Por ejemplo, si descubre que se ha producido un problema cerca del problema de Trc_BCU_VMInitStages_Event, puede volver a ejecutar la aplicación con -Xtrace:print=tpnid{j9bcu.0}. Ese mandato generará una salida como ésta:
14:10:42.717*0x41508a00   j9bcu.0        - Trace engine initialized for module j9dyn
El ejemplo especificado es bastante banal. Pero el uso de rangos tpnid y los parámetros formateados que contiene la mayoría de las entradas de rastreo ofrecen un mecanismo de depuración de problemas muy potente.

Los archivos .dat contienen una lista de todos los puntos de rastreo ordenados por componente y, a continuación, se numeran secuencialmente a partir de 0. El ID de punto de rastreo completo se incluye en toda la salida formateada de un punto de rastreo; por ejemplo, el rastreo a la consola o el rastreo binario formateado.

El formato de las entradas de rastreo y el contenido de los archivos .dat está sujeto a cambios sin previo aviso. Aunque, el número de versión debe garantizar un formato específico.