本文内容基于arthas 3.5.1 版本,介绍在idea中如何debug arthas中的命令执行。
一.下载源代码
git clone https://github.com/alibaba/arthas.git
代码下载好之后,用idea打开。
二.打包
首先执行打包脚本as-package.sh,点击idea右上角的执行配置。
点击绿色加号,新建一个bash配置。配置好后点击执行,如下图所示。
1.打包失败解决
如下图所示,可以看到打包失败了,因为打包arthas-vmtool这个模块缺少g++命令,是由于我的windows电脑上没有c++的环境。
可以安装环境,也可以打包跳过arthas-vmtool这个模块。这里我选择跳过arthas-vmtool这个模块,因为现在还用不上。只要修改打包命令脚本中的内容即可。
找到as-package.sh的第36行代码,修改一下命令为
"$DIR/mvnw" clean package -pl "!arthas-vmtool" -Dmaven.test.skip=true -DskipTests=true -Dmaven.javadoc.skip=true -f $DIR/pom.xml \
同时给
as-package.sh的第48行代码,加上引号,在windows环境中如果用户名带的是空格的话,这里会出错。
再次执行脚本,打包后的内容就会自动打包到用户目录下的.arthas文件夹下了。
三.Debug 演示
1.启动示例
这用到两个jar包文件,math-game.jar是项目自带的测试列子,arthas-boot.jar启动arhtas的jar包文件,需要执行命令。
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000 -jar math-game.jar
2.配置remote
远程debug,在idea中新增一个remote配置,设置的端口要与执行math-gamejar时的一致,如下图所示。
执行之后可以看到执行math-game的程序开始正常运行了。
3.启动arthas
接着执行java -jar arthas-boot.jar,并选择要debug的进程。
4.开始debug
在项目中com.taobao.arthas.core.command.hidden.JulyCommand.java文件中打上断点,在执行arthas的界面中,输入命令july,可以看到已经debug进来了。
放开断点,继续执行可以看到,打印输出了。是首经典老歌kelly clarkson 的《because of you》。
后续通过该方式就可以了解更多的关于arthas命令的参数及实现了。