首页 > 免root版 > GG免root修改器推荐_免root的GG修改器
GG免root修改器推荐_免root的GG修改器
  • GG免root修改器推荐_免root的GG修改器

  • 大小:15.97MB日期:2022年10月14日 06:36:03
  • 语言:简体中文系统:Android
绿色无毒,安全可靠!部分设备误报拦截请通过!

应用详情

大家好,今天小编为大家分享关于GG免root修改器推荐_免root的GG修改器的内容,赶快来一起来看看吧。

原文地址:https://mp.weixin./s/UXtSpRR82uMpeTAjRR10wg

线上项目遇到问题无法调试,线下又无法重现,难道只能加日志再重新发布么?有了这款神器,既可以线上调试,又可以实现热修复,推荐给大家!

Arthas 简介

Arthas是Alibaba开源的Java诊断工具,深受开发者喜爱。它采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。

安装

为了还原一个真实的线上环境,我们将通过Arthas来对Docker容器中的Java程序进行诊断。

docker container cp arthas-boot.jar mall-tiny-arthas:/

docker exec -it mall-tiny-arthas /bin/bash
java -jar arthas-boot.jar

常用命令

我们先来介绍一些Arthas的常用命令,会结合实际应用来讲解,带大家了解下Arthas的使用。

dashboard

使用dashboard命令可以显示当前系统的实时数据面板,包括线程信息、JVM内存信息及JVM运行时参数。

thread

查看当前线程信息,查看线程的堆栈,可以找出当前最占CPU的线程。

常用命令:

# 打印当前最忙的3个线程的堆栈信息
thread -n 3
# 查看ID为1都线程的堆栈信息
thread 1
# 找出当前阻塞其他线程的线程
thread -b
# 查看指定状态的线程
thread -state WAITING

sysprop

查看当前JVM的系统属性,比如当容器时区与宿主机不一致时,可以使用如下命令查看时区信息。

sysprop |grep timezone

user.timezone                  Asia/Shanghai

sysenv

查看JVM的环境属性,比如查看下我们当前启用的是什么环境的Spring Boot配置。

logger

使用logger命令可以查看日志信息,并改变日志级别,这个命令非常有用。

比如我们在生产环境上一般是不会打印DEBUG级别的日志的,当我们在线上排查问题时可以临时开启DEBUG级别的日志,帮助我们排查问题,下面介绍下如何操作。

logger -c 21b8d17c --name ROOT --level debug

logger -c 21b8d17c --name ROOT --level info

sc

查看JVM已加载的类信息,Search-Class的简写,搜索出所有已经加载到 JVM 中的类信息。

.macro.mall.*

sc -.macro.mall.mon.api.CommonResult

sc -d -.macro.mall.mon.api.CommonResult

sm

查看已加载类的方法信息,Search-Method的简写,搜索出所有已经加载的类的方法信息。

.macro.mall.mon.api.CommonResult

sm -.macro.mall.mon.api.CommonResult getCode

jad

反编译已加载类的源码,觉得线上代码和预期不一致,可以反编译看看。

.macro.mall.tiny.MallTinyApplication

jad --source-.macro.mall.tiny.MallTinyApplication

mc

内存编译器,Memory Compiler的缩写,编译.java文件生成.class。

redefine

加载外部的.class文件,覆盖掉 JVM中已经加载的类。

monitor

实时监控方法执行信息,可以查看方法执行成功此时、失败次数、平均耗时等信息。

monitor -c .macro.mall.tiny.controller.PmsBrandController listBrand

watch

方法执行数据观测,可以观察方法执行过程中的参数和返回值。

使用如下命令观察方法执行参数和返回值,-x表示结果属性遍历深度。

.macro.mall.tiny.service.impl.PmsBrandServiceImpl listBrand "{params,returnObj}" -x 2

热更新

尽管在线上环境热更代码并不是一个很好的行为,但有的时候我们真的很需要热更代码。下面介绍下如何使用jad/mc/redefine来热更新代码。

/**
 * 品牌管理Controller
 * Created by macro on 2019/4/19.
 */
@Api(tags = "PmsBrandController", description = "商品品牌管理")
@Controller
@RequestMapping("/brand")
public class PmsBrandController {
    @Autowired
    private PmsBrandService brandService;

    private static final Logger LOGGER = LoggerFactory.getLogger(PmsBrandController.class);

    @ApiOperation("获取指定id的品牌详情")
    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    @ResponseBody
    public CommonResult<PmsBrand> brand(@PathVariable("id") Long id) {
        if(id<=0){
            throw new IllegalArgumentException("id not excepted id:"+id);
        }
        return CommonResult.success(brandService.getBrand(id));
    }
}

{
  "timestamp": "2020-06-12T06:20:20.951+0000",
  "status": 500,
  "error": "Internal Server Error",
  "message": "id not excepted id:0",
  "path": "/brand/0"
}

/**
 * 品牌管理Controller
 * Created by macro on 2019/4/19.
 */
@Api(tags = "PmsBrandController", description = "商品品牌管理")
@Controller
@RequestMapping("/brand")
public class PmsBrandController {
    @Autowired
    private PmsBrandService brandService;

    private static final Logger LOGGER = LoggerFactory.getLogger(PmsBrandController.class);
    
    @ApiOperation("获取指定id的品牌详情")
    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    @ResponseBody
    public CommonResult<PmsBrand> brand(@PathVariable("id") Long id) {
        if(id<=0){
//            throw new IllegalArgumentException("id not excepted id:"+id);
            return CommonResult.success(null);
        }
        return CommonResult.success(brandService.getBrand(id));
    }
}

docker container cp /tmp/PmsBrandController.java mall-tiny-arthas:/tmp/

sc -d *PmsBrandController | grep classLoaderHash

mc -c 21b8d17c /tmp/PmsBrandController.java -d /tmp

redefine -c 21b8d17c //macro/mall/tiny/controller/PmsBrandController.class

{
  "code": 200,
  "message": "操作成功",
  "data": null
}

项目源码地址:关注我私信回复【666】获取

以上就是关于GG免root修改器推荐_免root的GG修改器的全部内容,感谢大家的浏览观看,如果你喜欢本站的文章可以CTRL+D收藏哦。

相关文章

热门下载

大家还在搜