首页 > 其他分享 >idea远程debug参考一

idea远程debug参考一

时间:2023-06-22 20:36:34浏览次数:41  
标签:socket jar idea debug 服务器 远程

参考一:https://blog.csdn.net/publicv/article/details/126130834

服务器操作:

1:服务器执行命令:10005是 idea和服务器连接socket的端口号 ,和项目本身的端口无关

nohup java -jar  -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=10005    xx.jar &
1

2:确认一下,远程服务器安全组是否开放 10005端口

idea操作

1:打开idea edit Configurations

在这里插入图片描述

2:新建一个 Remote JVM Debug在这里插入图片描述

3:填写刚刚部署的 服务器IP和端口 在这里插入图片描述

4:点击debug图标,简易建立拦截远程连接在这里插入图片描述

5:console 提示:Connected to the target VM, address: ‘120.25.106.25:10005’, transport: ‘socket’ 代表连接上了远程服务器

在这里插入图片描述

6:找一个接口打断点进行测试,发现远程服务器打断点成功

在这里插入图片描述

注意事项

  • 服务器代码和本地代码要保持一致
  • 不要在正式环境用这个,因为端口开放后谁都可以连接。安全性问题
  • 命令中 address=10005 这个端口号可以随意取,但是不能和你的项目端口号一致, 这个端口号是 和你idea 建立连接的socket端口
  • 安全组端口号记得要开放
  • 偶发会出现 idea 提示已经连接,或者连接不上,可以重启idea再试一下,基本解决问题。 如果还是不行,请按照错误信息排查
  • 需按照顺序来,先启动服务器应用,在启动idea

参考二:https://blog.csdn.net/qq_39654446/article/details/122476496

1,远程DEBUG的必要性

由于部署环境的差异性,相信很多朋友都碰到过开发环境正常测试过的功能在测试环境甚至生产环境下出现bug的情况。一般情况下,生产环境可以采取的手段比较单一,即通过日志的方式获取运行中的环境上下文,分析日志文件并尝试重现bug。这会带来的问题还是不少的,首先,日志的分析是一项比较耗时的工作;其次,现有的日志记录不一定能反映出问题,你可能需要多次重复这个过程(分析日志->猜测问题->加日志->部署->获取日志)来慢慢逼近问题。倘若是测试环境,我们还多了一项可供选择的手段——远程调试——将程序在测试环境中以debug模式启动,在本机使用IDEA在工程中设置断点进行调试。
2,IDEA构建SpringBoot测试Demo

新建SpringBoot测试项目remote-debug,只需要web依赖支持即可;版本选用2.2.6.RELEASE(注意,别用2.5.1版本,有坑,亲测)
pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.2.6.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.java1234</groupId>
	<artifactId>remote-debug</artifactId>
	<version>v1.0</version>
	<name>remote-debug</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>1.8</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
</project>

简单搞个TestController,提供一个Rest接口

package com.java1234.controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
    @PostMapping("/test")
    public String test(Integer id,String name){
        System.out.println("id="+id);
        System.out.println("name="+name);
        if(id>0){
            return "success "+name;
        }else{
            return "fail";
        }
    }
}

我们启动项目,用postman测试下:
测试接口:http://localhost/test 加入Body form-data 参数 id=1,name=marry,Send 测试,返回 success marry,测试OK;
3,测试Demo项目配置支持远程调试**

<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
			<configuration>
				<jvmArguments>-Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=n</jvmArguments>
			</configuration>
		</plugin>
	</plugins>
</build>

加了此配置后,打包后的项目发布服务器,可支持远程DEBUG;
具体参数详解:
-Xdebug 通知JVM工作在DEBUG模式下;
-Xrunjdwp 通知JVM使用(Java debug wire protocol)运行调试环境。该参数同时包含了一系列的调试选项;
**transport **指定了调试数据的传送方式,dt_socket是指用SOCKET模式,另有dt_shmem指用共享内存方式,其中,dt_shmem只适用于Windows平台;
address 调试服务器的端口号,客户端用来连接服务器的端口号;
server=y/n VM 是否需要作为调试服务器执行;
suspend=y/n 是否在调试客户端建立连接之后启动 VM;
4,IDEA打包jar

我们打包jar包;
img

打包后,在target目录下,会生成一个jar包;我们把它复制出来即可;
img

5,启动jar并且带启动参数支持远程调试

我们把remote-debug-v1.0.jar放D盘根目录;
我们启动jar,并且支持远程DEBUG;
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar remote-debug-v1.0.jar

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RERGHClm-1623688298225)(image-20210613225414441.png)]

启动OK,监听socket 5005端口
6,IDEA远程DEBUG配置

IDEA要进行远程DEBUG,需要进行配置;
1,启动项下拉,选择 Edit Configurations...编辑配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3UGDXNMD-1623688298228)(image-20210613225801811.png)]
2,点击+,选择Remote,添加远程DEBUG配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3rzwtdYm-1623688298229)(image-20210613230023399.png)]
3,添加远程DEBUG配置项,Host和Port,配置后,点击Apply和OK按钮
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l0edF9KU-1623688298231)(image-20210613230200362.png)]

7,IDEA远程DEBUG测试

1,打测试断点
我们直接在TestController类里的test方法上打点断;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2MqDENbp-1623688298232)(image-20210613230809384.png)]
2,选择远程debug启动项,然后点击测试调试按钮启动;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HWmN2f6b-1623688298234)(image-20210613230646749.png)]
3,postman测试
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VJrvld2D-1623688298236)(image-20210613231151240.png)]
4,成功进入断点
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BeCKrJS3-1623688298238)(image-20210613231235544.png)]
我们走完断点;
5,启动的jar包打印信息,测试OK

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-waIbt2vf-1623688298241)(image-20210613231336792.png)]

参考三:https://blog.csdn.net/qq_48804275/article/details/126021431

远程debug,简单三步

这里默认你已经打好了jar包

  • 第一步,编辑idea配置
    1.1 点击edit configurations
    在这里插入图片描述
    1.2 点击 “ + ” 号选择Remote JVM Debug
    在这里插入图片描述
    1.3 进行配置,如图:
    在这里插入图片描述
    1.4 然后点击Apply应用
  • 第二步,启动jar服务,这步是重点
#使用如下命令启动
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1000 -Dserver.port=9206 -jar /opt/sitesupport-manager/sitesupport-manager-0.0.1-SNAPSHOT.jar

#参数使用说明,简单两句话
① -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1000是1.3中配置完后复制的,在Command line argument for remote JVM下边
②-Dserver.port : 这个就有意思了,假如你的application.yml中配置的启动端口是6666,但是你想以8888启动,那么使用这个参数就可以实现。使用Dserver.port的优先级高于server.port
123456

这样你就部署好了服务,并且连接好了本地的idea,现在开始debug!

  • 第三步
    在本地idea打断点,这里打印一下,看看断成功没有,然后点击debug按钮
    在这里插入图片描述
    在自己的服务上测试对应的接口,我这里演示一下,这里的部署就是刚才我打断点的位置,我点击

在这里插入图片描述
成功拦截
在这里插入图片描述

失败原因
① 部署的代码和debug的代码不一致
② 服务器对应监听端口没开启,或者直接关闭防火墙

标签:socket,jar,idea,debug,服务器,远程
From: https://www.cnblogs.com/javaxubo/p/17498265.html

相关文章

  • Proj. CAR Paper Reading: Debin: Predicting Debug Information in Stripped Binarie
    Abstract本文:Debin任务:recoveringsymbolnames,typesandlocations方法:useescalablestructuredpredictionalgorithmsinprobabilisticgraphicalmodelswithanextensivesetoffeaturestodistinguishthenameandthetypeofkeyelementsextractedsucha......
  • 宝塔面板 mongodb设置账号,密码,数据库,并配置远程连接
    宝塔面板安装 mongo4.0后需要设置账号密码可数据库才能使用安装后 authorization:disabled  默认配置时才可以使用这个功能,如果没有admin需要先手动创建一个admin库,然后在创建一个  yourdatabaseSSH终端1、进入mongodb安装目录,下面是宝塔面板的默认目录cd/www/......
  • STelnet远程登录设备
    1、应用场景Stelnet提供安全的认证方式,用户可以通过STelnet安全地登录远程设备,对设备进行管理和维护。举个“栗子”用户需要安全地登录远程设备,并对其进行方便地管理和维护:设备作为SSHServer,IP地址为10.137.217.203/24。2、前提条件用户本地PC安装SSH服务器软件。本例中以Pu......
  • 非域,非匿名用户访问远程企业服务的详细步骤
    上篇博客我提到了非域,非匿名用户访问远程企业服务的关键就是在两台机子上建立一个用户名和密码完全一样的账户。然后配置ASP.net启用账号模拟,使用这个新加的账号来模拟。下面就是关于这部分的详细截图说明。假设服务器a为企业服务主服务器,服务器b为使用该企业服务的代理,同时b服务......
  • 调用远程的企业服务的安全问题
    Windows的安全机制规定:接收远程的com+调用的时候,会验证这个调用的权限。如果权限不够就出现经典的“拒绝访问”错误。解决这个问题已知访问方式有:匿名访问;简单来说就是在应用服务器(简称AP)上启用Guest账户,并且设置Guest具有激活和访问COM+的权限。这条路是可行,不过安全性不能得到......
  • 使用XDebug进行PHP调试
    步骤1、获取Xdebug,下载地址,根据你的操作系统情况,选择合适的下载:http://xdebug.org/download.php 假设下载后的文件为:php_xdebug.dll 2、加载PHP的这个插件以WAMPSERVER为例,我是把它装在D:\wamp\目录下,我就需要把php_xdebug.dll文件拷贝到D:\wamp\bin\php\php5.3.0\ext......
  • 第六章 远程登录
    官网:http://www.hostbuf.com/‍FinalShell的特点:​‍1.多平台支持Windows,MacOSX,Linux2.多标签,批量服务器管理.3.支持登录Ssh和Windows远程桌面.4.漂亮的平滑字体显示,内置100多个配色方案.5.shell,sftp同屏显示,同步切换目录.6.命令自动提示,智能匹配,输入更快......
  • Remote Desktop Manager 2023(远程桌面管理)
    RemoteDesktopManager是一款非常好用的远程桌面管理器,主要用于管理所有远程连接和虚拟机的小型应用程序。您可以快速添加、编辑、删除、共享、组织和查找远程连接,兼容微软的远程桌面或终端服务。使用起来非常简单,但同时是强大的,有效的。除了微软远程桌面,还可兼容终端服务、VNC、......
  • 远程提交代码冲突合并流程
    步骤1:获取源代码,本地进行分支合并.gitfetchorigingitcheckout当前分支gitmergeorigin/xxx这里没太明白,反正就是远端的分支,origin/远端分支版本步骤2:查看冲突文件,本地解决冲突.步骤3:推送至源分支,修改直接展示在当前合并请求中.gitadd.gitcommit-m'fix......
  • LrTP连接报错 --- 无法连接到hh 不能建立到远程计算机的连接,因此用于此连 接的端口已
     现象:在配置好账号密码后i报错, 无法连接到hh不能建立到远程计算机的连接,因此用于此连接的端口已关闭。原因身份验证方式与服务器端不一致解决方法、 ......