簡體   English   中英

使用Bytebuddy遠程附加代理

[英]Attach an agent remotely using Bytebuddy

我試圖為使用bytebuddy的進程附加代理。我發現我們可以使用ByteBuddyAgent.attach(file,"18467"); 為了這。 但是,當我嘗試執行此操作時,會發生以下錯誤。

這是我使用的代理

File file = (new File("Agent.jar"));

錯誤

java.lang.IllegalStateException: Error during attachment using: net.bytebuddy.agent.ByteBuddyAgent$AttachmentProvider$Compound@e26db604
    at net.bytebuddy.agent.ByteBuddyAgent.install(ByteBuddyAgent.java:378)
    at net.bytebuddy.agent.ByteBuddyAgent.attach(ByteBuddyAgent.java:227)
    at net.bytebuddy.agent.ByteBuddyAgent.attach(ByteBuddyAgent.java:202)
    at net.bytebuddy.agent.ByteBuddyAgent.attach(ByteBuddyAgent.java:189)
    at common.netty.echo.EchoHttpServer.main(EchoHttpServer.java:95)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at net.bytebuddy.agent.Attacher.install(Attacher.java:77)
    at net.bytebuddy.agent.ByteBuddyAgent.install(ByteBuddyAgent.java:373)
    ... 4 more
Caused by: com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded
    at sun.tools.attach.LinuxVirtualMachine.<init>(LinuxVirtualMachine.java:106)
    at sun.tools.attach.LinuxAttachProvider.attachVirtualMachine(LinuxAttachProvider.java:63)
    at com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:208)
    ... 10 more 

有什么想法嗎? 當我嘗試使用另一個代理的附件時,如下

public class Agent {

    public static void premain(String args, Instrumentation instrumentation) {

        System.out.println("Premain");
        File file ;
        try {

                file = (new File("Agent.jar"));
                ByteBuddyAgent.attach(file,"18467");
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }

    }

我收到此錯誤

錯誤

java.lang.IllegalStateException: Error during attachment using: net.bytebuddy.agent.ByteBuddyAgent$AttachmentProvider$Compound@423f0955
    at net.bytebuddy.agent.ByteBuddyAgent.install(ByteBuddyAgent.java:378)
    at net.bytebuddy.agent.ByteBuddyAgent.attach(ByteBuddyAgent.java:227)
    at net.bytebuddy.agent.ByteBuddyAgent.attach(ByteBuddyAgent.java:202)
    at net.bytebuddy.agent.ByteBuddyAgent.attach(ByteBuddyAgent.java:189)
    at common.netty.echo.Agent.premain(Agent.java:111)
    at common.netty.echo.EchoHttpServer.<clinit>(EchoHttpServer.java:56)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at net.bytebuddy.agent.Attacher.install(Attacher.java:77)
    at net.bytebuddy.agent.ByteBuddyAgent.install(ByteBuddyAgent.java:373)
    ... 5 more
Caused by: java.lang.UnsatisfiedLinkError: Native Library /usr/lib/jvm/java-8-oracle/jre/lib/amd64/libattach.so already loaded in another classloader
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1907)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1845)
    at java.lang.Runtime.loadLibrary0(Runtime.java:870)
    at java.lang.System.loadLibrary(System.java:1122)
    at sun.tools.attach.LinuxVirtualMachine.<clinit>(LinuxVirtualMachine.java:342)
    at sun.tools.attach.LinuxAttachProvider.attachVirtualMachine(LinuxAttachProvider.java:63)
    at com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:208)
    ... 11 more

任何建議!

至於第一條錯誤消息:目標VM是否運行附件偵聽器? 您可以嘗試通過設置-XX:+StartAttachListener來強制啟動線程,默認情況下應將其設置。 您正在運行哪個JVM版本?

另一個錯誤消息表明附件庫已經由另一個類加載器加載。 有關更多詳細信息,請參見以下答案: java.lang.UnsatisfiedLinkError:本機庫XXX.so已在另一個類加載器中加載

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM