1

走る:

~/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)

ターンキーのように見えたので、jrat を使用しました。Linux 互換のターンキー コマンドライン プロファイラーの提案をお待ちしております。非常に単純な情報、つまり私のプログラムがほとんどの時間を費やしている関数を知る必要があるだけです。それまでの間、ここで提案されている他のプロファイラーをいじって、正規表現が問題なくストリーム-> 文字列の変換に時間がかかっています。

4

1 に答える 1

1

JDK6 または JDK7 を使用していますか。JDK7 では、スタックマップ フレームのより制限的なチェックが追加されました。バイトコードが JDK7 ベリファイアの変更を認識しないツールによって変更されると、このようなエラーが発生する可能性があります (古いバージョンの ASM など)。

于 2012-04-23T13:43:20.833 に答える