jrat - не удается профилировать java

Я бегу:

~/dan/java/hello $ java -javaagent:shiftone-jrat.jar -cp '..' hello.hello

и получить (в более длинном выводе трассировки):

Exception in thread "main" java.lang.VerifyError: Expecting a stackmap frame at branch target 35 in method hello.hello.main([Ljava/lang/String;)V at offset 14
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2442)
    at java.lang.Class.getMethod0(Class.java:2685)
    at java.lang.Class.getMethod(Class.java:1620)
    at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:488)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:480)

Ездили с банкой, потому что казалось под ключ. Я открыт для предложений по другим готовым профилировщикам командной строки, совместимым с Linux. Просто нужно знать очень простую информацию, например, на какие функции моя программа тратит большую часть своего времени, а пока я ковыряюсь с другими профилировщиками, предлагаемыми здесь и там, добавляю множество операторов печати, пока не пойму мои регулярные выражения в порядке, а мой поток → преобразование строк длится вечно.


person djechlin    schedule 18.04.2012    source источник


Ответы (1)


Вы используете JDK6 или JDK7. JDK7 добавил более строгие проверки для кадров карты стека, и они могут приводить к таким ошибкам, когда байт-код изменяется инструментами, не знающими об изменениях в верификаторе JDK7 (например, более старые версии ASM).

person JB-    schedule 23.04.2012
comment
Используйте JDK6. Похоже, что jRat некоторое время не обновлялся, поэтому он не корректируется с учетом этих изменений. Или используйте другой инструмент профилирования, который может справиться с новыми ограничениями JDK7. - person JB-; 25.05.2012