zoukankan      html  css  js  c++  java
  • 使用IDEA进行远程调试

    前言

    对于分布式系统的调试不知道大家有什么好的方法。对于我来说,在知道远程调试这个方法之前就是在代码中打各种log,然后重新部署,上线,调试,这样比较费时,有什么更好的办法呢?

    有时候,本地调试的时候没有问题,打包部署到测试环境的时候却爆出一堆莫名其妙的问题,这时该怎么办呢?

    偶然间了解到的远程调试的功能简直是一把利器,能够非常好地解决上述问题,还不赶紧来了解一下?

    远程调试

    使用特定JVM参数运行服务端代码

    要让远程服务器运行的代码支持远程调试,则启动的时候必须加上特定的JVM参数,这些参数是:

    其中的${debug_port}是用户自定义的,为debug端口,本例以5555端口为例。

    本人在这里踩过一个坑,必须要说一下。在使用公司内部的自动化部署平台NDP进行应用部署时,该平台号称支持远程调试,只需要在某个配置页面配置一下调试端口号(没有填写任何IP相关的信息),并且重新发布一下应用即可。事实上也可以发现,上述JVM参数中唯一可变的就是${debug_port}。但是实际在本地连接时发现却始终连不上5555 的调试端口,仔细排查才发现,下面截取了NDP发布的应用所有JVM参数列表中与远程调试相关的JVM启动参数如下:

    将address设置为127.0.0.1:5555,表示将调试端口限制为本地访问,远程无法访问,这个应该是NDP平台的一个bug,我们在自己设置JVM的启动参数时也需要格外注意。

    如果只是临时调试,在端口号前面不要加上限制访问的IP地址,调试完成之后,将上述JVM参数去除掉之后重新发布下,防范开放远程调试端口可能带来的安全风险。

    本地连接远程服务器debug端口

    打开Intellij IDEA,在顶部靠右的地方选择”Edit Configurations…”,进去之后点击+号,选择”Remote”,按照下图的只是填写红框内的内容,其中Name填写名称,这里为remote webserver,host为远程代码运行的机器的ip/hostname,port为上一步指定的debug_port,本例是5555。然后点击Apply,最后点击OK即可

    本地IDEA启动debug模式

    现在在上一步选择”Edit Configurations…”的下拉框的位置选择上一步创建的remote webserver,然后点击右边的debug按钮(长的像臭虫那个),看控制台日志,如果出现类似“Connected to the target VM, address: ‘xx.xx.xx.xx:5555’, transport: ‘socket’”的字样,就表示连接成功过了。我这里实际显示的内容如下:

    设置断点,开始调试

    远程debug模式已经开启,现在可以在需要调试的代码中打断点了



  • 相关阅读:
    Java学习二十九天
    Java学习二十八天
    47. Permutations II 全排列可重复版本
    46. Permutations 全排列,无重复
    subset ii 子集 有重复元素
    339. Nested List Weight Sum 339.嵌套列表权重总和
    251. Flatten 2D Vector 平铺二维矩阵
    217. Contains Duplicate数组重复元素
    209. Minimum Size Subarray Sum 结果大于等于目标的最小长度数组
    438. Find All Anagrams in a String 查找字符串中的所有Anagrams
  • 原文地址:https://www.cnblogs.com/lin-zhifeng/p/14376546.html
Copyright © 2011-2022 走看看