gpt4 book ai didi

java - Java ASM 方法的封面

转载 作者:行者123 更新时间:2023-11-30 06:04:55 25 4
gpt4 key购买 nike

您好,提前感谢您的回答。我想知道是否有任何方法可以实时了解(使用 ASM)哪些线路我已经经过以及哪些线路没有经过。换句话说,一旦任何方法完成执行,对于每次执行,我都可以为其注入(inject)一个检测指令来打印它已经执行或尚未执行的行

最佳答案

首先,您应该创建一个带有静态方法的类,用于记录行号执行事件。它会有这样的方法:

public static void lineExecution(String filename, int lineNumber)

输入您需要的任何逻辑。在内存中捕获事件并在最后报告,或者只是将其写入标准输出。

当使用ASM修改目标类时,需要修饰ClassVisitor中的visitSource方法。

此方法应捕获“source”参数(源文件)以供稍后使用。然后,您需要从 visitMethod 返回一个带有修饰的 visitLineNumber 方法的自定义 MethodVisitor。此方法应插入对静态方法的调用:

ldc (whatever the value of "source" is)
ldc (whatever line number was passed in)
invokestatic LineExecutionMonitor.lineExecution

因此,每当执行新的行号时,首先发生的事情就是调用静态方法。在那里您可以跟踪检测类中的执行情况。

希望这有帮助。

关于java - Java ASM 方法的封面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51534671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com