Ich bin neu in ASM und ich möchte etwas Hilfe im Zusammenhang mit Bytecode-Transformation.Hinzufügen von Try/Catch-Block in Bytecode durch ASM
Frage: Ich möchte Try/catch-Block für die gesamte Methode in Bytecode über ASM hinzufügen und möchte die Methode ohne Verwendung von Java-Option -Overify ausführen. Ich kann try/catch-Block für die gesamte Methode hinzufügen, aber wenn ich versuchte, die Methode auszuführen, bekomme ich 'java.lang.VerifyError'. Wenn ich die Option java -noverify verwende, wird sie ausgeführt. Bitte hilf mir.
Unten sind die Details.
Ich möchte den obigen Code wie unten vorstellen, um Try/Catch-Blöcke mit ASM-Bytecode-Instrumentierung einzuführen.
Unter dem Code fügen Sie try/catch block hinzu, aber führt den Code nicht mit der Option java -noverify aus.
Für das Debugging habe ich CheckClassAdapter verwendet und ich habe unten Verifizierungsproblem bekommen.
Message:org.objectweb.asm.tree.analysis.AnalyzerException: Execution can fall off end of the code
at org.objectweb.asm.tree.analysis.Analyzer.findSubroutine(Unknown Source)
at org.objectweb.asm.tree.analysis.Analyzer.findSubroutine(Unknown Source)
at org.objectweb.asm.tree.analysis.Analyzer.analyze(Unknown Source)
at org.objectweb.asm.util.CheckClassAdapter.verify(Unknown Source)
at org.objectweb.asm.util.CheckClassAdapter.verify(Unknown Source)
at com.mfr.instrumentation.selenium.work.InstrumentExample.main(InstrumentExample.java:166)
hello()V
00000 ? : L0
00001 ? : GETSTATIC java/lang/System.out : Ljava/io/PrintStream;
00002 ? : LDC "Hello world"
00003 ? : INVOKEVIRTUAL java/io/PrintStream.println (Ljava/lang/String;)V
00004 ? : RETURN
00005 ? : L1
00006 ? : GOTO L2
00007 ? : L3
00008 ? : ASTORE 2
00009 ? : ALOAD 2
00010 ? : INVOKEVIRTUAL java/lang/Exception.printStackTrace()V
00011 ? : L2
TRYCATCHBLOCK L0 L1 L3 java/lang/Exception
Ich konnte die obige Bestätigungsnachricht nicht verstehen.
Was ist die Frage? – biziclop
Frage ist, wie kann ich meinen ursprünglichen Code mit out versuchen/catch Block zu meinem letzteren Code mit try/catch-Block mit ASM Bytecode Instrumentierung. –