Skip to content

线程替换集成成功后一直是替换失败的 #481

@wanghuasheng

Description

@wanghuasheng

集成4.16.3版本
线程替换后,有build日志输出,build文件里也有替换的包。
但是实际监控线程发现根本没有被替换。只是改名而已。
查看替换线程的代码。发现里面的替换逻辑是名字,并不是线程。
// Timer(String)
"(Ljava/lang/String;)V" -> {
method.instructions.apply {
// ..., name => ..., name, prefix
insertBefore(init, LdcInsnNode(makeThreadName(klass.className)))
// ..., name, prefix => ..., name
insertBefore(init, MethodInsnNode(Opcodes.INVOKESTATIC, SHADOW_THREAD, "makeThreadName", "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;", false))
}
}

执行了以后实际的线程的类在哪里创建的还是在哪里创建,所以在监控平台上看线程数量和线程名,以及线程状态都没有被优化。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions