阿里巴巴 Arthas 3.1.1 版本:trace 支持行号/小幅改进

栏目: 软件资讯 · 发布时间: 5年前

内容简介:Arthas是Alibaba开源的Java诊断工具,深受开发者喜爱。 Github: https://github.com/alibaba/arthas 文档:https://alibaba.github.io/arthas Arthas 3.1.1版本主要是小幅改进,下面介绍要点: trace命令打印行号...

阿里巴巴 Arthas 3.1.1 版本:trace 支持行号/小幅改进

Arthas是Alibaba开源的 Java 诊断工具,深受开发者喜爱。

Arthas 3.1.1版本主要是小幅改进,下面介绍要点:

trace命令打印行号

arthas-demo为例:

$ trace demo.MathGame primeFactors
Press Q or Ctrl+C to abort.
Affect(class-cnt:1 , method-cnt:1) cost in 124 ms.
`---ts=2019-05-17 14:46:29;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    `---[3.543169ms] demo.MathGame:primeFactors()
        +---[0.038383ms] java.lang.StringBuilder:<init>() #46
        +---[min=0.009633ms,max=0.019667ms,total=0.048153ms,count=3] java.lang.StringBuilder:append() #46
        +---[0.014657ms] java.lang.StringBuilder:toString() #46
        +---[0.026428ms] java.lang.IllegalArgumentException:<init>() #46
        `---[0.004545ms] throw:java.lang.IllegalArgumentException() #46

trace命令会打印出栈的行号,对于定位源码位置非常有帮助。

增加mbean命令

通过mbean命令可以查看JMX对象的信息。

$ mbean java.lang:type=Threading *Count
 NAME                     VALUE
--------------------------------
 ThreadCount              14
 TotalStartedThreadCount  17
 PeakThreadCount          14
 DaemonThreadCount        8

webconsole支持传递ip/port

之前很多小伙伴在自己部署arthas时,想直接指定web console连接的IP和端口。在新版本的web console里,可以在url里指定。

比如访问 http://localhost:8563/?ip=192.168.1.1&port=9998 ,则在页面上显示的是:

阿里巴巴 Arthas 3.1.1 版本:trace 支持行号/小幅改进

jad命令支持动态生成的lambda类

在之前版本里,jad在反编绎lambda动态生成的类时,可能会没有结果,在新版本里做了支持。以下面的demo为例:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class JadLambdaDemo {
	public static void main(String[] args) throws Exception {
		JadLambdaDemo demo = new JadLambdaDemo();
		try {
			demo.testLabmda(new ArrayList<>());
		} catch (Throwable e) {
			e.printStackTrace();
		}
		System.in.read();
	}

	private Map<Object, Object> map = new HashMap<>();

	public void testLabmda(List<Object> list) {
		list.forEach(it -> {
			map.put(it.getClass(), it);

		});
	}
}

jad反编译结果是:

$ jad JadLambdaDemo

ClassLoader:
+-sun.misc.Launcher$AppClassLoader@659e0bfd
  +-sun.misc.Launcher$ExtClassLoader@2a1aa1de

Location:
/private/tmp/

/*
 * Decompiled with CFR 0_132.
 */
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;

public class JadLambdaDemo {
    private Map<Object, Object> map = new HashMap<Object, Object>();

    public static void main(String[] arrstring) throws Exception {
        JadLambdaDemo jadLambdaDemo = new JadLambdaDemo();
        try {
            jadLambdaDemo.testLabmda(new ArrayList<Object>());
        }
        catch (Throwable throwable) {
            throwable.printStackTrace();
        }
        System.in.read();
    }

    public void testLabmda(List<Object> list) {
        list.forEach(object -> this.map.put(object.getClass(), object));
    }
}

改进mc命令查找package/class

在3.1.0版本里,新增加了mc命令,但是很多情况下mc可能会失败。在新版本里,做了一定的修复。不过mc命令还是有可能失败????。

如果失败的话,欢迎到github提出issue,同时可以参考这里本地编译然后上传:

支持Windows下中文路径启动

就是arthas可以放在中文目录下面启动了:) 。

修复jobs系统/重定向

在3.1.0版本里,jobs系统可能不工作,在新版本里做了修复,使用参考:

改进自动补全/历史命令匹配

改进了jad/dump/options等命令的自动补全,还有history匹配时,光标会在合适的位置。

总结

感谢所有开发者在Arthas 3.1.1版本里的贡献和支持,特别感谢 @xuzhiyiYoh 和 @kylixs 。欢迎更多的开发者参与到Arthas项目。

Release Note: https://github.com/alibaba/arthas/releases/tag/arthas-all-3.1.1
出处:https://github.com/alibaba/arthas/issues/703


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Web信息架构(第3版)

Web信息架构(第3版)

[美] Peter Morville、Louis Rosenfeld / 陈建勋 / 电子工业出版社 / 2013-10 / 99.00元

本书内容涵盖了信息架构基本原理和实践应用的方方面面。全书共7个部分,包括信息架构概述、信息架构的基本原理、信息架构的开发流程和方法论、信息架构实践、信息架构与组织、两个案例研究,以及参考资料清单。 本书兼具较高的理论价值和实用价值,曾被Web设计领域多本书籍重点推荐,是信息架构领域公认的经典书籍,不论新手还是专家都能各取所需。本书可供Web设计与开发者、Web架构师、网站管理者及信息管理相关......一起来看看 《Web信息架构(第3版)》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

在线进制转换器
在线进制转换器

各进制数互转换器

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试