远程调试需配置两端设置
1、 操作流程如下
2、 在IDE中设置调试端口:依次点击运行菜单,选择编辑配置,点击新增按钮,添加远程调试选项,填写远程服务的相关信息。端口号可自定义设定,注意避免与服务器已用端口发生冲突,确保调试过程顺利进行。
3、 远程服务器端
4、 在启动Java程序时,需添加调试参数以启用远程调试功能,例如使用-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005,或采用旧版写法-Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=y。其中的端口号必须与开发工具(如IDEA)中设置的调试端口保持一致,通常为5005。配置完成后,程序会在启动时暂停,等待调试器连接,便于开发者进行断点调试和问题排查。确保两端端口匹配是成功建立调试会话的关键。
5、 启动调试端与服务端程序
6、 其他注意事项包括细节处理与规范遵循。
7、 确保本地调试代码与远程部署代码完全一致,严禁任何修改,否则将导致断点无法生效。
8、 配置调试模式及相关参数,启用IDEA的调试功能进行程序排错与运行监控。
9、 挂载模式:
10、 以附属模式运行时,需被动等待调试程序启动,必须先由远程服务端执行,再启动本地IDEA调试端。
11、 通过配置 -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005 实现远程调试功能,其中 address 参数仅指定端口,不包含具体域名或IP地址,适用于本地监听或默认主机绑定场景,便于开发调试时建立连接。
12、 使用listen模式时,idea的配置页面会出现明显卡顿现象
13、 启用监听模式,主动监控指定端口,可先运行IDE调试端,等待远程服务连接。语法格式如下:
14、 在使用调试参数时,需配置-agentlib:jdwp=transport=dt_socket,server=n,address=具体域名:5005,suspend=y,其中address后的地址必须填写实际的本机域名,不可省略或使用默认值,以确保远程调试功能正常建立连接并准确指向目标服务实例。
15、 可以这样理解:一个正在运行的远程调试进程,就像一位优雅俊朗的少年,会在某个特定时刻经过我家窗前。只有当我打开窗户(启用调试界面),才能看到他并观察他的举动(实现断点跟踪)。这里有两种相遇方式:一种是我提前打开窗户等待他到来;另一种是他在经过时主动停下,等我听见动静再开窗。前者类似于Socket Listen模式——我先开启监听,程序再连接进来;后者则如同Socket Attach——目标程序已运行并在断点处暂停,等待我启动调试器进行连接与控制。这两种机制决定了调试器与被调试进程谁先准备就绪、谁主动发起连接。
16、 调试语法中各参数的具体意义
17、 -Xdebug用于指示JVM以调试模式运行。
18、 -Xrunjdwp用于指示JVM启动时启用Java调试线协议,以支持调试环境。该参数还附带一组调试选项,用于配置调试会话的具体行为和连接方式。
19、 transport用于设定调试数据的传输方式,dt_socket表示采用套接字模式进行通信,而dt_shmem则表示使用共享内存方式,但dt_shmem仅支持Windows操作系统,其他平台不可用。
20、 server参数用于指定虚拟机是否支持在服务器模式下运行。
21、 当抛出指定类型的异常时,JVM会自动中断并进入调试状态,该设置为可选项。
22、 指定JVM中断时执行的程序,此参数为可选项。
23、 指定是否在调试客户端连接后才启动JVM。建议将suspend设置为y,这样可确保远程服务器不会在IDEA调试环境未就绪前就启动并执行完毕程序,从而避免错过调试时机。
24、 onuncaught(y或n)用于设置当发生未捕获异常时,是否终止JVM的运行。
评论
更多评论