工作四年,我学会了用 Idea本地调试线上服务器代码

news2024/11/17 23:44:10

文章目录

  • 工作四年,我学会了用 Idea本地调试线上服务器代码
    • 📆 一.那些辛酸的过往
    • 📕二.远程debug原理
      • 远程调试分类
          • 主动连接调试:
          • 被动连接调试:
    • 👋三.操作步骤
      • 3.1.准备一个简单springboot程序 例如helloworld
      • 3.2.添加远程调试
      • 3.3.配置调试的参数
      • 3.4.新建一个remotoDemo目录,将jar包复制到remotoDemo目录下,在idea中打开终端
      • 3.5.启动jar包
      • 3.6.然后我们启动刚刚配置的remote JVM Debuger
      • 3.7.开始验证
    • 🧣四、最后的话

工作四年,我学会了用 Idea本地调试线上服务器代码

工作四年,我学会了用 Idea本地调试线上服务器代码

🔊一位 Java 开发者的使用总结,谈使用经验也聊聊工作原理

📆 一.那些辛酸的过往

历历在目的场景🥹(❁´◡❁)(❁´◡❁)

  • 线上出现问题,但是没加日志打印拍脑门惋惜为啥不多打一行日志
  • 加日志重新部署,半小时没了,问题还没有找到,头顶的灯却早已照亮了整层楼…
  • 排查别人线上的 bug,不仅代码还没看懂,还没一行日志,捏了一把汗!
  • 一个问题排查一天,被 Diss 排查问题慢…
  • 那些只能发布才能调试、部署一次要半小时的应用,真的会让生命变得廉价

直到我学会了本地debug线上代码,那些曾经束手无策的问题,都变得轻而易举。于是想把这些遇到的场景和用法做个总结。

📕二.远程debug原理

通过启动本地idea中的remoteDebug,启动后本地remoteDebug程序会与服务器上远程代码建立一个socket连接,当用户访问远程服务器端代码接口时,服务器端会先去判断本地idea中是否有断点,有则停在断点,没有则直接走远程服务器返回结果给用户

image-20231107151344293

远程调试分类

远程调试分为主动连接调试,和被动连接调试。

主动连接调试:

服务端配置监控端口,本地IDE连接远程监听端口进行调试,一般调试问题用这种方式。

被动连接调试:

本地IDE监听某端口,等待远程连接本地端口。一般用于远程服务启动不了,启动时连接到本地调试分析。

👋三.操作步骤

3.1.准备一个简单springboot程序 例如helloworld

写一个controller

image-20231107133958330

打包成jar包

image-20231107134107142

点击配置

image-20231107133905239

3.2.添加远程调试

image-20231107134202148

3.3.配置调试的参数

image-20231107140132091

点击ok,然后我们开始启动jar包

3.4.新建一个remotoDemo目录,将jar包复制到remotoDemo目录下,在idea中打开终端

image-20231107134902563

image-20231107134734328

3.5.启动jar包

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

如果想后台启动则用

nohup java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8888 -jar helloWorld-0.0.1-SNAPSHOT.jar &

启动效果图

image-20231107135322101

3.6.然后我们启动刚刚配置的remote JVM Debuger

image-20231107135427209

3.7.开始验证

访问远程服务器接口,注意这里访问的localhost:8888访问的是启动的helloworldjar包,而不是remote监控程序,如果你有远程服务器,则可以将jar包放到服务器上,然后通过服务器ip:端口去访问接口,同样会进入断点

image-20231107135608031

image-20231107135644799

🧣四、最后的话

🖲要成为远程debug的好手,一定多多练习:纸上得来终觉浅,绝知此事要躬行

胖奥特曼悠闲躺着

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

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

相关文章

【带头学C++】----- 三、指针章 ---- 3.11 补充重要指针知识

1.指针的指针(多级指针) 指针的指针(Pointer to Pointer)是指一个指向指针的指针变量。也就是说,它存储了一个指向指针的内存地址。在C中,指针的指针可以用来传递多个指针参数,或者用于在函数内…

期中成绩发布啦

期中考试过后,老师们最头疼的事情之一就是成绩的录入和发布。而学生们最关心的事情之一则是如何能够快速、方便地查询到自己的成绩。那么,如何让学生自主查询成绩呢?下面就给大家介绍几种简单实用的方法。 一、使用学校官网或教务系统查询 现…

1698 - Access denied for user ‘root‘@‘192.168.229.1‘

目录 1. 问题现象 2. 问题分析及解决方法 1. 问题现象 在使用mysql连接工具连接mysql的时候如下: 出现了如下错误: 2. 问题分析及解决方法 出现这种错误一般有两种情况:一种是密码输入错误,重新检查一下密码再试一下&#xf…

后期混音效果全套插件Waves 14 Complete mac中文版新增功能

Waves 14 Complete for Mac是一款后期混音效果全套插件,Waves音频插件,内置混响,压缩,降噪和EQ等要素到建模的模拟硬件,环绕声和后期制作工具,包含全套音频效果器,是可以让你使用所有功能。Waves 14 Comple…

简述SVM

概述 SVM,即支持向量机(Support Vector Machine),是一种常见的监督学习算法,用于分类和回归问题。它是一种基于统计学习理论和结构风险最小化原则的机器学习方法。 SVM的主要思想是在特征空间中找到一个最优的超平面…

智慧农业:农林牧数据可视化监控平台

数字农业是一种现代农业方式,它将信息作为农业生产的重要元素,并利用现代信息技术进行农业生产过程的实时可视化、数字化设计和信息化管理。能将信息技术与农业生产的各个环节有机融合,对于改造传统农业和改变农业生产方式具有重要意义。 图扑…

AVL平衡树的插入

//AVL搜索树 //对数据的搜索: 1:暴力查找遍历 // 2:二叉树 有序,但是伴随着插入删除,维护成本很高 // 3:二叉搜索树 问题:在极端情况下,会退化成最开始的链表 // …

inne所属公司抢注“童年时光”商标仍被冻结

根据中国商标网查询,国家知识产权局已于2023年3月10日裁定,被告inne所属的南京童年时光生物技术有限公司注册的“童年时光”商标无效。随着这起保健品行业品牌资产争夺事件的发酵,更多的细节得到披露,至此,一个从“代理…

低代码+RPA,会发生什么?

据相关研究表明,每个企业员工每天至少花1-2个小时完成文件归档、数据输入等工作,而这些工作都是可以通过自动化的方式完成的。 如今,不少企业正专注于工作流程自动化,希望能花最少的时间完成重复性工作,机器人流程自动…

Python基础入门(17)----Python虚拟环境:为何要用虚拟环境、如何使用virtualenv

文章目录 在Python开发中,虚拟环境是一个独立的目录树,可以在其中安装Python模块。每个虚拟环境都有自己的Python二进制文件和一组安装的库。使用虚拟环境的主要原因是为了避免项目间的依赖冲突,允许每个项目有其特定的依赖,而不影响全局安装的模块。 为何要用虚拟环境 依…

Vue 最简单路由 页面路由 配置路由

路由安装 Vue3使用 vue-router4 Vue2使用 vue-router3 npm i vue-router3创建路由文件 配置路由规则 import Vue from vue import VueRouter from vue-router //导入路由器 Vue.use(VueRouter)import Login from ../components/Login import User from ../components/User //…

17、Python虚拟环境:为何要用虚拟环境、如何使用virtualenv

文章目录 在Python开发中,虚拟环境是一个独立的目录树,可以在其中安装Python模块。每个虚拟环境都有自己的Python二进制文件和一组安装的库。使用虚拟环境的主要原因是为了避免项目间的依赖冲突,允许每个项目有其特定的依赖,而不影响全局安装的模块。 为何要用虚拟环境 依…

Linux 进程的管道通信

文章目录 无名管道pipe有名管道 进程之间的通信:Linux环境下,进程地址空间相互独立,每个进程各自有不同的用户地址空间。任何一个进程的全局变量在另外一个进程中都看不到,所以进程之间不能相互访问,要交换数据必须通过…

分享68个毕业答辩PPT,总有一款适合您

分享68个毕业答辩PPT,总有一款适合您 链接:https://pan.baidu.com/s/1trwZ8T2I2rFh59LVxTSXTw?pwd8888 提取码:8888 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,收集整理更不易。知识付费甚欢…

开源DB-GPT实现连接数据库详细步骤

官方文档:欢迎来到DB-GPT中文文档 — DB-GPT 👏👏 0.4.1 第一步:安装Minicoda https://docs.conda.io/en/latest/miniconda.html 第二步:安装Git Git - Downloading Package 第三步:安装embedding 模型到…

TFTP协议详解

1.简介 TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69。 FTP是一个传输文件的简单协议,它基…

亚马逊怎么下单更真实

亚马逊是一个知名的在线购物平台,为了下单更真实,可以采取以下步骤: 1、查看商品信息:在浏览亚马逊的商品时,仔细查看商品描述、照片和客户评价。这些信息可以帮助你了解产品的真实情况。 2、对比价格:比…

Android Studio(项目打包成APK)

打包流程 直接上图即可 按照上面操作后,即可以开始打包,一般第一次打包都需要几分钟(我第一次打包花了七八分钟),如果打包错误了也别担心,可以查看错误分析一下原因,实在不行可以把错误放到网站…

macos端串口调试推荐 serial直装激活 for mac

serial for mac版软件特色 1.准备好macOS High Sierra 最近的升级是否会让您的设备落后?Serial将使其恢复正常工作,同时保持Mac的安全功能完好无损。 2.完美无瑕的仿真 Serial是一个全功能的终端仿真器,支持Xterm,VT102和ANSI…

软件测试/测试开发丨PyCharm安装指南与技巧分享

点此获取更多相关资料 PyCharm 简介 工欲善其事,必先利其器。为了良好的学习体验,我们需要一款功能全面,并且容易上手的代码编辑器,那么首选大名鼎鼎的 PyCharm。 PyCharm 是一款功能强大的 Python 集成化开发工具,…