求助>怎样才能用C++实现动态触发javaagent.dll>
7回复
2周前

怎样才能用C++实现动态触发javaagent.dll



使用Java调用我自己写了一个javaagent.dll成功了,现在需要在windows下用C++实现动态触发javaagent.dll,能给一点提示吗?

457 阅读
请先登录,再评论

回复列表

墨书2周前

1. javaagent.dll是动态库,是用c/c++写的?
2. 想调用agent的程序,本身是java进程吗

圆点2周前
回复 墨书:

重写tools.jar里的attach的逻辑,请问这个有参考代码或者相关文档吗?

回复
墨书2周前
回复 圆点:

不想依赖tools.jar,就意味着要将tool.jar里attach这块的逻辑重写一下,发一个信号触发attach线程的创建,然后再建立socket通信,发送命令协议

回复
圆点2周前
回复 墨书:

目标进程已经启动了,只能动态加载库文件。
希望能开启AttachListener线程,直接调用load_agent方法实现。
开启AttachListener线程入库函数找不到,求指点!

参考文献:
http://ifeve.com/jvm-attach/

回复
查看更多
圆点2周前

追问:也就是通过C++怎样实现以下JAVA代码的功能?
// attach to target VM
VirtualMachine vm = VirtualMachine.attach("2177");

  // get system properties in target VM
  Properties props = vm.getSystemProperties();

  // construct path to management agent
  String home = props.getProperty("java.home");
  String agent = home + File.separator + "lib" + File.separator
      + "management-agent.jar";

  // load agent into target VM
  vm.loadAgent(agent, "com.sun.management.jmxremote.port=5000");

  // detach
  vm.detach();