Arthas 使用 tt 命令抓取调用异常、调用耗时、传入参数、返回参数

Arthas Java 大约 1660 字

示例代码

package com.example.arthas.controller;

@Slf4j
@RestController
public class Test111Controller {

    @GetMapping("/test1")
    public Result test1(@RequestParam String key) {
        log.info("test1111111111111#{}", key);
        List<String> list = (List<String>) CollectionUtils.arrayToList(new String[]{"aaa", "bbb", "ccc"});
        return Result.builder().msg("请求成功").data(list).build();
    }

}

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Result {

    private int code;
    private String msg;
    private Object data;

}

tt -t

[arthas@18800]$ tt -t com.example.arthas.controller.Test111Controller test1
Press Q or Ctrl+C to abort.
Affect(class count: 1 , method count: 1) cost in 42 ms, listenerId: 1
 INDEX        TIMESTAMP                       COST(ms)        IS-RET       IS-EXP       OBJECT                  CLASS                                            METHOD
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 1000         2021-02-10 11:51:51             1.7066          true         false        0x704b2127              Test111Controller                                test1

字段含义

表格字段 字段解释
INDEX 时间片段记录编号,每一个编号代表着一次调用,后续tt还有很多命令都是基于此编号指定记录操作,非常重要。
TIMESTAMP 方法执行的本机时间,记录了这个时间片段所发生的本机时间
COST(ms) 方法执行的耗时
IS-RET 方法是否以正常返回的形式结束
IS-EXP 方法是否以抛异常的形式结束
OBJECT 执行对象的hashCode(),注意,曾经有人误认为是对象在JVM中的内存地址,但很遗憾他不是。但他能帮助你简单的标记当前执行方法的类实体
CLASS 执行的类名
METHOD 执行的方法名

tt -l

检索调用记录,列出已经捕获的调用记录。

参考地址

https://arthas.aliyun.com/doc/tt.html

阅读 343 · 发布于 2021-04-26

————        END        ————

扫描下方二维码关注公众号和小程序↓↓↓

扫描二维码关注我
昵称:
随便看看 换一批