远程debug

远程debug

有些时候公司的项目过于庞大,在本地根本无法跑起来,然后发布到日常或者测试。这个时候要是想进行调试debug,就需要用到远程debug了。

一、连接远程服务器地址
1、点击 Add Configurations
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JngXwoH2-1606285998492)(/Users/yan/Library/Application Support/typora-user-images/image-20200925150910320.png)]
2、选择Remote

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KPjrTlYj-1606285998494)(/Users/yan/Library/Application Support/typora-user-images/image-20200925151057792.png)]

3、填写远程服务器地址
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YY1rLjbr-1606285998499)(/Users/yan/Library/Application Support/typora-user-images/image-20200925151147759.png)]
二、Debug开始

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mZxVB4iX-1606285998500)(/Users/yan/Library/Application Support/typora-user-images/image-20200925151542073.png)]

### Intellij IDEA 远程 Debug 配置及调用方法 #### 1. 启动远程服务端的 JVM 调试模式 为了使远程服务器上的 Java 应用能够被调试,需要在启动命令中加入特定的 JVM 参数。以下是常用的参数配置: ```bash -Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=${debug_port} ``` 其中: - `transport=dt_socket` 表示使用套接字传输数据。 - `suspend=n` 表示应用不会等待调试器连接后再启动(如果设置为 `y` 则会暂停直到有调试器连接)。 - `server=y` 表示当前进程作为服务器端接受客户端连接。 - `${debug_port}` 是指定用于调试的端口号,例如 `8000`。 将以上参数添加到远程服务的应用启动脚本中[^3]。如果是 Tomcat 容器,可以在 `catalina.sh` 文件的第一行追加该参数[^5]。 --- #### 2. 创建 IntelliJ IDEA 的 Remote Debug 配置 在本地 IDE 中完成以下操作以创建远程调试配置: 1. 打开菜单栏中的 **Run -> Edit Configurations...**。 2. 点击左上角的加号 (`+`) 并选择 **Remote**。 3. 填写以下字段: - **Name**: 自定义名称,例如 `Remote Debug`. - **Host**: 输入远程服务器的 IP 地址或域名,默认值为 `localhost` 如果是在同一台机器上测试。 - **Port**: 设置与远程服务一致的调试端口,例如 `8000`。 4. 确认无误后点击 OK。 此时,IntelliJ IDEA 已经准备好监听来自远程服务的调试请求[^2]。 --- #### 3. 添加断点并启动调试 1. 在项目代码的关键位置右键单击左侧边距区域,设置断点。 2. 返回至刚才创建的 Remote Debug 配置,点击绿色三角形按钮 (**Debug**) 开始调试。 3. 当远程服务执行到设置了断点的代码行时,IDE 将自动挂起程序,并允许开发者查看变量状态、堆栈信息等细节[^1]。 注意:确保防火墙未阻止调试端口的数据流,必要时需开放对应端口访问权限。 --- #### 4. 测试环境下的实际应用场景 当遇到仅存在于测试环境而非开发环境的问题时,可以通过远程调试快速定位原因而无需依赖繁琐的日志分析过程。相比传统的日志排查方式,这种方法更加高效且直观[^4]。 --- ### 示例代码片段 假设我们要调试一段简单的 Spring Boot 控制器逻辑,可以按照如下方式进行模拟: ```java @RestController @RequestMapping("/example") public class ExampleController { @GetMapping("/test") public String testEndpoint() { int a = 1; int b = 2; // 可在此处设置断点验证传入参数变化情况 return "Result is " + (a + b); } } ``` 通过上述步骤即可实现对该接口内部逻辑的实时监控。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值