问题描述
我正在尝试检测Kotlin协程,类似于使用Javaagent here完成的操作。我不需要Javaagent。
第一步是拦截DebugProbes中定义的协程的创建,暂停和恢复。的代码如下:
request.user.is_authenticated
AnonymousUser
但是,不会发生拦截(通过没有日志语句和使用调试器来确认)。我是Byte Buddy的新手,所以有可能我错过了一些东西。有什么想法吗?
Kotlin v1.4.10,Kotlin Coroutines v1.3.9,Byte Buddy v1.10.17。
解决方法
您确定此时尚未加载该类吗?尝试在ClassInjector.UsingReflection
中设置一个断点,以查看您是否通过手动操作或由于先前加载的类而中止注射。
更干净的解决方案是Java代理。您可以使用 byte-buddy-agent 通过ByteBuddyAgent.install()
动态创建一个,然后在其上注册AgentBuilder
。