美文网首页bug消消乐Arthas
Arthas使用Idea调试

Arthas使用Idea调试

作者: 晴天哥_王志 | 来源:发表于2021-04-24 14:06 被阅读0次

    系列

    开篇

    • 这篇文章主要主要参考了Arthas issue整理的针对Arthas核心模块arthas-core和arthas-agent的调试方法,针对源码阅读来说只要掌握调试方法,基本上代码就没有任何秘密可言了。
    • Arthas的调试基本上都得靠远程调试,所以启动参数需要携带-agentlib:jdwp参数来实现远程调试。
    • Arthas的版本arthas-all-3.5.0版本。

    启动流程图

    • arthas-boot和as.sh作为启动的入口负责启动arthas-core。
    • arthas-core负责绑定arthas-agent到指定的jvm。
    • arthas-agent通过arthas-spy实现字节码绑定。

    arthas-core调试

    • 步骤一:启动arthas-demo的MathGame服务。
    lebron374$ jps
      2872 Launcher
      2873 MathGame
    
    • 步骤二:通过jps命令查看MathGame的进程id号。
    java 
    -agentlib:jdwp=transport=dt_socket,address=8888,server=y,suspend=y 
    -Djava.awt.headless=true
    -Xbootclasspath/a:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/../lib/tools.jar 
    -jar /Users/lebron374/.arthas/lib/3.5.0/arthas/arthas-core.jar 
    -pid 2599 
    -core /Users/lebron374/.arthas/lib/3.5.0/arthas/arthas-core.jar 
    -agent /Users/lebron374/.arthas/lib/3.5.0/arthas/arthas-agent.jar
    
    • 步骤三:通过java -jar命令启动arthas-core,启动命令里面的路径根据自己环境确定。可以通过com.taobao.arthas.boot.ProcessUtils#startArthasCore打断点获取参数。



    • 步骤四:通过IDEA的remote绑定远程调试的端口。



    • 步骤五:在com.taobao.arthas.core.Arthas#main打断点,执行步骤四的服务的debug功能。

    arthas-agent调试

    -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000 
    
    • 步骤一:启动arthas-demo的MathGame服务,启动参数里面添加如上内容。



    • 步骤二:IDEA添加远程调试指定步骤一的监听端口,开启远程调试功能。



    • 步骤三:在com.taobao.arthas.agent334.AgentBootstrap#agentmain进行断点。
    lebron374$ jps
      2872 Launcher
      2873 MathGame
    
    [INFO] Found existing java process, please choose one 
    * [1]: 4068 org.jetbrains.jps.cmdline.Launcher
      [2]: 4020 demo.MathGame
      [3]: 358 
    
    3
    [INFO] arthas home: /Users/lebron374/.arthas/lib/3.5.0/arthas
    [INFO] Try to attach process 4191
    [INFO] Attach process 4191 success.
    [INFO] arthas-client connect 127.0.0.1 3658
    
    • 步骤四:启动arthas-boot的main函数,选择jps结果中的demo.MathGame方法。

    相关文章

      网友评论

        本文标题:Arthas使用Idea调试

        本文链接:https://www.haomeiwen.com/subject/ncnkrltx.html