如果你有以下痛点,请你查看本文章:

1、我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?

2、遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?

3、线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!

4、是否有一个全局视角来查看系统的运行状况?

5、有什么办法可以监控到JVM的实时运行状态?

6、怎么快速定位应用的热点,生成火焰图?

Arthas-解决以上所有问题

一、快速启动,(我的第一给demo)

1、下载git代码,本地启动app应用

演示的源码

package com.eujian.arthaslearn.controller;

import com.fasterxml.jackson.databind.node.ObjectNode;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.PostMapping;

import org.springframework.web.bind.annotation.RequestBody;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

@RequestMapping

@RestController

public class ArthasController {

@GetMapping("/arthasGet")
public String arthasGet(String a,String b){
System.out.println("arthasGet");
System.out.println(String.format("a=%s,b=%s",a,b));
return a;
} @GetMapping("/arthasTrace")
public String arthasTrace() throws InterruptedException {
Thread.sleep(100);
new MyService().send();
return "arthasTrace";
} @PostMapping("/arthasInvote")
public ObjectNode arthasInvote(@RequestBody ObjectNode objectNode){
System.out.println("arthasInvote");
System.out.println(String.format("objectNode=%s",objectNode));
return objectNode;
}

}

package com.eujian.arthaslearn.controller;

public class MyService {

public String send(){
System.out.println("send被调用了");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "send";
}

}

github地址:xxxx

gitlab地址:xxx

启动应用

java -jar ./target/arthas-learn-1.0.0.jar

2、下载arthas的jar包(linux命令)

curl -O https://alibaba.github.io/arthas/arthas-boot.jar

java -jar arthas-boot.jar

运行arthas结果

选择1然后回车

3、 查看dashboard

输入dashboard,按回车/enter,会展示当前进程的信息,按ctrl+c可以中断执行。

dashboard

4、通过thread命令来获取到app线程

通过thread 2获取线程id为1的线程

thread命令

5、通过jad来反编译Main Class

jad com.eujian.arthaslearn.controller.ArthasController

jad结果

6、watch某个函数的入参和出参

输入命令watch com.eujian.arthaslearn.controller.ArthasController arthasGet '{params[0],params[1],returnObj}'

用来监听ArthasController这个类的arthasGet方法

访问接口 curl localhost:8085/arthasGet?a=heetget&b=saas

监听结果

watch命令

7、trace命令 输出方法路径上的每个节点上耗时

输入 trace com.eujian.arthaslearn.controller.ArthasController arthasTrace

另外另个终端输入curl localhost:8085/arthasTrace

trace命令

不停机不更新代码线上调试BUG的工具的更多相关文章

  1. 线上调试bug

    在以往的工作中,线上一有bug,就需要把文件弄到本地来改,但经常会碰见本地环境又和线上不一样,导致调试困难,闭着眼睛改好之后传到线上去看对不对,不对的话又要改,循环往复,要多麻烦就有多麻烦啊. 今天给 ...

  2. 分享下使用 svn,测试服务器代码自动更新、线上服务器代码手动更新的配置经验

    分享下使用 svn,测试服务器代码自动更新.线上服务器代码手动更新的配置经验 利用SVN的POST-COMMIT钩子自动部署代码 Linux SVN 命令详解 Linux SVN 命令详解2 使用sv ...

  3. 测试老司机都在用的表白神器你会吗?-Fiddler之AutoResponse线上调试

    一.Fiddler在线调试功能和表白神器介绍 ​ 在以往的工作中,线上有bug,就需要把文件弄到本地来改,但经常会碰见本地环境又和线上不一样,导致调试困难,闭着眼睛改好之后传到线上去看对不对,不对的话 ...

  4. 关于线上的bug什么时候修复的思考

    这里系统专门指的是那种用户量大的系统,比如有几百万或者上千万的注册会员.因为小系统因为用户量少,不存在这种思考,考虑有时候是多余的.另外还有内部系统,给自己公司内部人员使用的,即便是出现了问题,也不会 ...

  5. 线上出bug了?别怕,这么定位!

    摘要: Source Map还是很神奇的. 原文:线上出bug了?别怕,这么定位! 公众号:前端小苑 Fundebug经授权转载并修改,版权归原作者所有. 工作中,生产环境代码是编译后代码,搜集到报错 ...

  6. 被产品经理怼了,线上出Bug为啥你不知道

    前言 前几天跟读者聊天,他说被产品经理给怼了.原因是线上出 Bug 了,最后是客户反馈才知道的. 我就问他:你们是不是没做监控? 读者:我们是刚成立的创业团队,目前最重要的就是堆功能,很多基础设施都没 ...

  7. 一个线上程序bug,由通用补数程序引起

    下游发现接口可用率非100%,马上线上查看,发现数据在有些情况下通用补数的数据是空, 有20%的用户是没有相应偏好等的数据的,需要通用补数来补数,结果通用补数没有数据. 通用补数数据的检查报警时必须要 ...

  8. 调试工具-fiddler:本地资源替换线上调试

    Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件,这 ...

  9. svn利用钩子post-commit自动更新到线上测试服务器(测试中未验证)

    创建一个新的版本库: [root@centos03 svn]# pwd /home/svn [root@centos03 svn]# svnadmin create webtest [root@cen ...

随机推荐

  1. 安卓app功能或自动化测试覆盖率统计(不用instrumentation启动app)

    一文带你揭秘如何采取非instrumentation启动app,打造实时统计覆盖率,一键触发覆盖率测试报告. 在上篇文章,一文带你解决Android app手工测试或者自动化测试覆盖率统计(撸代码版) ...

  2. 对于dijkstra最短路算法的复习

    好久没有看图论了,就从最短路算法开始了. dijkstra算法的本质是贪心.只适用于不含负权的图中.因为出现负权的话,贪心会出错. 一般来说,我们用堆(优先队列)来优化,将它O(n2)的复杂度优化为O ...

  3. MySql 关闭 bin 和 log 日志

    mysql 的 bin 和 .log 日志文件会非常占用磁盘空间和 IO,修改 mysql 配置文件可以关闭这两种日志的记录. 关闭 bin 日志,将下面三项配置注释掉: #log_bin = mys ...

  4. 实验六 DIV+CSS的综合应用

    实验六 DIV+CSS的综合应用 [实验目的] 1.掌握DIV布局的方法: 2.利用CSS对DIV进行美化: 3.利用CSS对文本图像等网页元素进行美化 [实验环境] 连接互联网的PC ,Win7操作 ...

  5. springmvc执行原理

    大家是否遇到过被面试官问了这样一句话:"来聊聊springmvc执行原理".是的,springmvc的执行流程是面试的高频点,今天我就来浅谈它! 一.下面通过一个简单的spring ...

  6. 是时候更新手里的武器了—Jetpack最全简析

    前言 Android Jetpack想必大家都耳熟能详了,Android KTX,LiveData,Room等等一系列库都是出自 Jetpack.那么 Jetpack到底是什么?又包含哪些你还没用过的 ...

  7. 学习go语言并完成第一个作品

    之前有使用C#写一个Windows下的发送邮件的命令行工具,方便一些脚本出现异常时向我的邮箱发送邮件提醒.但这并没有被我频繁使用,因为我的有些脚本还是在linux下面运行,因此我又有一篇文章用linu ...

  8. 【水】怎么在 HZOI 上水到更高的分

    前言 这些东西在联赛并用不了 预编译优化 40行优化 #define _CRT_SECURE_NO_WARNINGS #pragma GCC optimize(2) #pragma GCC optim ...

  9. 《我想进大厂》之Dubbo普普通通9问

    这是面试专题系列第四篇,Dubbo系列.Dubbo本身并不复杂,而且官方文档写的非常清楚详细,面试中dubbo的问题一般不会很多,从分层到工作原理.负载均衡策略.容错机制.SPI机制基本就差不多了,最 ...

  10. ffmpeg实现视频的翻转与旋转(ffmpeg4.2.2)

    一,ffmpeg的安装 请参见: https://www.cnblogs.com/architectforest/p/12807683.html 说明:刘宏缔的架构森林是一个专注架构的博客,地址:ht ...