java生产环境调优(5) 远程服务器代码调试

你在开发代码的时候有没有出现过这么一种情况,在自己本地电脑上面开发好好的,运行也没有问题,可是上传到服务器上面一跑就报错,明明是同样的代码,但是定位起来却让你很抓狂.
这个时候可以冷静的分析分析代码,但是往往很难看出错误,
如果你会远程调试,那就派上用场了.他可以让你调试远程服务器上的代码,和你在本地调试代码并没有多大的差别

OK,开始吧


统一环境
1.springboot 2.1.3.RELEASE,开启web支持

2.服务器使用阿里云,各种端口打开

1.新建一个控制层


    @RequestMapping("/remoteDebug")
    public String remoteDebug(){
        int a=1;
        int b=2;
        int c=a+b;
        System.out.println(c);
               
        return "hello this is a message from aliyun";
    }


Ok,到这里就ok了,

然后打包 ,上传到阿里云服务器

2.运行方式和之前的稍有不同

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar demo-0.0.1-SNAPSHOT.jar

在这里插入图片描述
启动的时候服务器上日志也会有相应的说明

指定了远程调试的端口是5005

这样就ok了

3.回到我们自己的电脑 ,在开发软件中做下设置,以idea为例

在这里插入图片描述

首先是找到Remote这一个启动项

然后是下面的这个ip地址填写阿里云的ip就ok了 ,第二个红框的内容是idea自动填充的,没错,这个就是上面我们在阿里云上启动jar 的参数.
在这里插入图片描述
点击OK 就好了

4.下面就是启动了

启动后还输出了一行日志

在这里插入图片描述

说明我们连接阿里云成功了

5.下面就是测试一下接口了, 在idea 的代码中添加一个断点

在这里插入图片描述

下面在浏览器访问远程阿里云的接口

http://106.15.206.82:8888/remoteDebug

这个时候idea的断点就自动的拦截了
点击单步步过 3次 就可以看到 调试栏里面对应的变量的值了

在这里插入图片描述

在执行一步 控制台也输出了相应的值

注意这个控制台的值 是在阿里云上输出的
在这里插入图片描述

ok,到这里就成功了


总结一下吧,一般情况下,相同代码在不同的环境运行结果不同 ,不是特别的常见,如果出现了,一般都和环境,数据库之类的有点关系,比如之前我就遇到过不同,是因为数据库的serverTimeZone 的设置不同导致运行结果不同.

或者是框架之类的一些奇葩的问题,莫名其妙就好了.这个时候感觉远程调试的作用不是特别大.

在某些极端的情况下,比如某些公司的标准严格,生产环境还给你去调试,在开什么玩笑?
在这里插入图片描述

庆幸的是 这样的公司还是少的,哈哈 这个就当做一种技能吧.说不定在关键的时候能就救你

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值