UIBOT调试时步入的快捷键_远程调试 bug ,快速定位问题

84350e016550a0d8848cd6956ddba15c.png

情况是这样的,现在的产品出现了一个 bug ,需要及时排查快速解决,你是怎么样解决的呢?

解决:登陆服务器,查看日志,看一下哪里有问题,然后本地运行程序进行debug ,解决后,在重新打包部署到服务器。

现在我们开发项目,Java 项目普遍都是使用 Idea 做为主流开发工具,springboot 技术栈来快速构建项目,然后以打 jar 包的方式来部署项目。现在我们就来通过远程调试的方式来快速 debug ,快速的定位修改问题。

什么是远程调试?

个人理解:程序在服务器运行着,出现了问题,源代码在本地,我们可以通过在本地来连接远程服务器,连接后,在本地打断点来分析远程程序的问题。如果你觉得还是不理解再白话一点,就是本地 debug 远程程序。

下面来进行详细的操作步骤:

idea 添加远程服务器 remote

第一步: 打开项目的配置,使用 idea 的快捷键 commad + shift + a ,Windows 系统使用 Ctrl + shift + a ,这样会快速定位到 aciton , 然后在输入框输入 edit configurations ,按下回车即可,如下图所示:

e26751628574b2ab523b81f4e4b0d7f7.png

回车后(敲击 enter 键)将会进入如下的界面点击➕号,选择remote ,然后填写远程服务器的 ip 和 远程连接的 port 即可,如下图:

78267e1afcc24ef145cc27dfe391825e.png

上图点击 remote 以后出现如下页面配置,添加如下操作:

0756df13328c82397bfeb97d7d1ab90d.png

1.起个名字

2.选择 Attach to remote JVM

3.填写远程服务器的 ip 和 port

4.复制如下命令:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

点击 ok 保存设置即可。

到这里所有的配置都已经OK了!

下面啰嗦一句,使用 idea 开发 java 项目是十分高效的,里面有非常丰富的快捷键和非常丰富的插件总能解决我们各种各样的需求,例如上面我提到的 command +shift+a 就是一个非常强大的快捷键,使用它我们能快速调出任何idea的功能键,后续打算分享一下如何高效使用 idea 。

打包 jar ,远程服务器启动服务,开启 debug 端口

使用 maven 打 jar 包,然后部署到远程服务器,这里需要强调一点在远程服务器启动程序的时候,请使用如下的命令启动,该命令是开启远程端口 5005 ,方便本地连接,进行远程debug.

java 

上面的命令参数来自添加远程 server 时 复制而来。 启动以后,这样远程 debug 端口就已经打开,我们可以随时进行远程 debug.

通过debug 模式,连接远程服务

Idea 上选择远程刚才命名的 server , 点击 debug 按钮快速连接远程 server ,如下图所示:

bd2150e272792001546ece269201ffa5.png

如上图显示 Connected to the target VM, address: 'zempty.sg:5005', transport: 'socket' ,这样代表我远程连接成功了,下面可以在本地打断点进行调试了。

本地代码打断点,debug 远程服务

在本地程序上打断点,访问远程 server 接口的时候,你会发现程序可以在本地你打的短点处停下来了,这是一个令人欣喜的结果,因为我们以后可以在本地调试远程 server 上的 bug 了,再此,恭喜你。

总结:

idea 是 java 开发者的一个非常高效的工具,接下来我还会分享一些 idea 的使用技巧和常用插件,希望我可以帮助你更高效的学习和使用 java,本文首发于微信公众号 「 zempty 笔记 」,欢迎关注。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/366222.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vim ctags java源码_如何使用vim的插件Ctags查看Linux源码

一.ubuntu下安装Linux内核源码(1).查看自己的内核版本(2).查看源内的内核源码类表(3).下载源码(4).进入/usr/src(5).解压下载的文件到用户主二.安装vim插件Ctags和使用插件的介绍Ctags工具是用来遍历源代码文件生成tags文件,这些tags文件能被编辑器或其它工具用来快…

MySql - GROUP BY 和 HAVING关键字

本文主要针对GROUP BY 和 HAVING两个关键字进行分析 使用测试表如下: 测试前,只知道GROUP BY 这个关键字的作用是根据一个字段进行分组,去重。HAVING对分组设置条件。 具体分组规则,设置条件不清楚。 测试开始 首先 单独使用GROUP…

浏览器缓存原理以及本地存储

作为一名前端工作人员,前端的缓存知识是必须掌握的,因为一个网站打开网页的速度直接关系到用户体验,用户粘度,而提高网页的打开速度有很多方面需要优化,其中比较重要的一点就是利用好缓存,缓存文件可以重复…

linux shell 宏定义_linux内核修炼之系统调用

fork()这个系统调用是有两个返回值的,在子进程中的返回值是0,在父进程中的返回值是PID,如下图 fork一次 返回两次关于0x80中断和特权级检查在mian函数的sched_init()函数中调用宏:set_system_gate(0x80,&system_call);将0x80号…

angularjs的$http请求方式

/*$http常用的几个参数$http服务的设置对象:1、method 字符串 表示发送的请求类型 get post jsonp等等2、url 字符串 绝对或者相对的URL,请求的目标3、params 字符串或对象 会被转化成查询字符串加到URL后面,如果不是字符串会被JSON序列化4、data 字符串或者对象 这…

response对象设置返回状态_postman 设置全局变量

postman大家都知道是一个测试接口的工具,也是目前比较流行的一种测试工具,但是postman只是用来将API地址和参数填入send一下就完了吗?其实不是,关于postman其实有很多玩法,对于测试来说我觉得掌握了postman是非常有必要…

测试过大输入的代码

在编写单元测试时,我们主要关注业务的正确性。 我们将竭尽所能,开开心心地走在最前沿。 我们有时会进行微基准测试并衡量吞吐量。 但是经常遗漏的一个方面是当输入过大时我们的代码如何表现? 我们测试了如何处理正常的输入文件,格…

资源不在java项目和构建路径上_编译单元不在Java项目的构建路径上-Maven

今天,我已经在日食中导入了一个Maven项目.当我尝试自动建议时,当我添加一些代码时,它提示我“编译单元不在Java项目的构建路径上”.我没有看到解决此问题的方法,但是都没有解决.这个应该做什么?xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://m…

Django 第八课 2.【MySQL相关软件 mysqlclient Navicat Premium】

MySQL 驱动程序安装: 我们使用 Django 来操作 MySQL,实际上底层还是通过 Python来操作的。因此我们想要用 Django 来操作 MySQL,首先还是需要安装一个驱动程序。在python3中,驱动程序有多种选择。比如pymysql 以及mysqlclient等。…

查看串口的驱动信息

1、查看串口的驱动信息 2、驱动安装文件:http://www.wch.cn/download/CH341SER_EXE.html 3、参考驱动资料:https://blog.csdn.net/jazzsoldier/article/details/70169732 转载于:https://www.cnblogs.com/qy1234/p/10146303.html

java中怎么判断一段代码时线程安全还是非线程安全_Java 中的多线程你只要看这一篇就够了...

引如果对什么是线程、什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内。用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现。说这个话其实只有一半对,因…

实现 通过数据库里一个字段值相等 则把 他合为一条数据

需求: 把红色合为一条数据,绿色合为一条数据 结果: 不多说直接上代码......................................................... // 先查所有数据 const goods await service.goods.findAllGoodsWithParams({where: params,offset: ctx.p…

float与double类型参数区别_8大基本数据类型及包装类,不知道这些点别说自己是大佬...

一般地,当需要使用数字的时候,我们通常使用内置数据类型,如:byte、int、long、double 等。然而,在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型的情形。为了解决这个问题&…

9-客户端集成IdentityServer

1-创建客户端的webapi项目 E:\coding\netcore\IdentityServerSample>dotnet new webapi --name IdentityCredentialApi 2-在需要启用授权的方法上增加Authorize标签 3-使用nuget工具安装 IdentityServer4.AccessTokenValidation 4-启用客户端授权, 需要配置连接…

js替换数组中字符串实例

这个是替换数组中的一个对象字符串; 直接上代码: 1 var aaa[ 2 {"name":"张珊","sex":"man"}, 3 {"name":"李斯","sex":"woman"}, 4 …

ie浏览器升级_微软呼吁用户停用IE浏览器 2020年将不再更新升级

驱动中国2019年2月10日消息 IE浏览器作为美国微软公司推出的一款网页浏览器成为许多人接触互联网初选,深受不少用户喜欢但这款流畅多年的浏览器正式遭弃用!今日微软网络安全专家在在官方Winhows IT Pro上发帖呼吁用户停止使用IE浏览器!微软网…

CentOS安装zookeeper

第一步,先去Apache下载安装包 http://mirror.bit.edu.cn/apache/zookeeper/ 第二步,上传到服务器并解压 tar -zxvf zookeeper-3.4.6 第三步,新建一个文件夹 #先改个名 mv zookeeper-3.4.6 zookeeper cd zookeeper mkdir data 第四步&#xff…

rdlc报表 矩形高固定_固定资产条码管理系统特点分析

固定资产条码管理系统的特点都有什么?固定资产是维持企业稳定健康发展的重要物质保障,若想最大化发挥固定资产的效能作用,满足生产经营管理的需求,提高应对企业内外部经营环境变化的能力,企业管理者就必须及时了解固定…

bzoj 2007 [Noi2010]海拔——最小割转最短路

题目:https://www.lydsy.com/JudgeOnline/problem.php?id2007 一个点的高度一定不是0就是1。答案一定形如一个左上角的连通块全是0的点、一个右下角的连通块全是1的点。 注意从东到西还有从南到北的边也有用!因为不一定是一个阶梯形的,还可以…

《黑客攻防技术宝典Web实战篇@第2版》读书笔记1:了解Web应用程序

读书笔记第一部分对应原书的第一章,主要介绍了Web应用程序的发展,功能,安全状况。 Web应用程序的发展历程 早期的万维网仅由Web站点构成,只是包含静态文档的信息库,随后人们发明了Web浏览器用来检索和显示那些文档&am…