3回复
3年前
关于 JAVA Agent/Debugger 设计的一些疑问
jdwp
协议是 JVMTI
的通信基础,而且 IDE 都是直接实现 jdwp
协议来和目标 JAVA 进程(远程或者本地)进行 DEBUG 通信的。
如果我想设计一个 Agent 程序,没有动态 Attach 的需求,启动时指定就好。
那么我是不是也可以通过 DEBUG 这种方式,启动参数上直接开启 jdwp 调试端口,然后我的 Agent 直接实现 jdwp 协议,和目标 java 进程通信。
-agentlib:jdwp=transport=dt_socket,address=127.0.0.1:60557,suspend=y,server=n
而不是像 Arthas 那样,在 Instrumentation/JVMTI 上又弄了一套私有的通信协议和客户端通信?
-javaagent:/path/to/debugger-agent.jar
2231 阅读