Преобразование BCI (индексы байт-кода) в номера строк исходного кода

Я пишу код JVMTI для профилирования программ Java, что в основном влечет за собой получение трассировки стека от случайных потоков через фиксированные промежутки времени, используя функцию AsyncGetCallTrace. Таким образом, я могу получить структуры CallTrace, каждая из которых содержит массив структур CallFrame, которые содержат данные об отдельных кадрах в трассировке стека. В частности, эти данные состоят из: jmethodID method_id (идентификатор метода java, в котором расположен фрейм) и: jint lineno (BCI метода в файле .class, насколько я понимаю в документации). Кажется, я не могу найти способ преобразовать это "lineno" в соответствующий номер строки исходного кода, используя инфраструктуру JVMTI (см. Файл jvmti.h, расположенный в / usr / lib / jvm / java-6-sun / include, по крайней мере, в Linux). Фактически, даже за рамками JVMTI, единственное, что я смог найти в Интернете, было здесь: http://jakarta.apache.org/bcel/apidocs/org/apache/bcel/classfile/LineNumberTable. HTML , но даже это, возможно, не делает то, что я хотел бы, и требует дополнительной установки, И требует от меня обработки данных,

[Если кто-то хорошо знает это поле, пожалуйста, дайте мне знать, так как у меня есть еще несколько вопросов о процессе.]

6
задан Mogsdad 27 July 2015 в 16:10
поделиться