Estoy escribiendo código JVMTI para perfilar programas Java, que en su mayoría implica obtener trazados de pila de hilos aleatorios a intervalos de tiempo fijos utilizando la función AsyncGetCallTrace. Por lo tanto, puedo obtener estructuras de CallTrace, cada una de las cuales contiene una matriz de estructuras CallFrame, que contienen datos sobre marcos individuales en un seguimiento de pila. Específicamente, estos datos consisten en: jmethodID method_id (el ID del método java donde se encuentra el fotograma), y: jint lineno (el BCI del método en el archivo .class, por lo que entiendo la documentación). Parece que no puedo encontrar la forma de convertir este "lineno" en el número de línea del código fuente correspondiente utilizando el marco JVMTI (ver el archivo jvmti.h, ubicado en/usr/lib/jvm/java-6-sun/include, al menos en Linux). De hecho, incluso fuera del marco JVMTI, lo único que pude encontrar en la web hasta ahora fue aquí: http://jakarta.apache.org/bcel/apidocs/org/apache/bcel/classfile/LineNumberTable.html, pero incluso esto puede no estar haciendo lo que me gustaría, y requiere una instalación adicional, Y requiere que procese los datos, que fue generado por el código C++ JMVTI, usando un programa separado de Java.Convirtiendo BCI (índices de códigos de bytes) a números de línea de código fuente
Si alguien sabe cómo convertir BCI a números de línea de código fuente desde dentro de JVMTI (¡o incluso de cualquier forma), por favor ayuda!
[Si alguien conoce bien este campo, por favor hágamelo saber, ya que tengo un par de preguntas para preguntar sobre el proceso.]