idea/eclipse远程调试服务器方法

用到服务器调试的起因是在项目中遇到了乱码问题部分内容乱码,可是本地环境是好的,无法复现,所以排除不了问题在哪里,不知道到底是什么原因,不知道配置在哪里,配置了好多地方都不生效,最后咨询亚洲,远程调试,查看在action中返回的字符集中文下就是乱码的; 定位在编译时候的问题;

调试过程:

  1. 服务器tocat停止 ** sh stop_tomcat.sh ** 即可,注意一定要是全路径才行;

  2. ** tomcat/bin/catalina.sh ** 中在头部加入下面代码,连接方式有两种,为dt_shmem和dt_socket,分别表示本机调试和远程调试。

    1
    declare -x CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000"
  3. 启动tomcat ** sh start_tomcat.sh ** ,终端中查看状态 tail -fn 200 catalina.out.2014-11-05.out 出现 ** Listening for transport dt_socket at address: 8000 ** 即表示ok的;

  4. idea设置,调试为远程,端口号修改8000,host为远程机器ip,启动调试,选择remote即可;

  5. 访问efc.corp.elong.com ,本机idea加断点,即可了。

eclipse 同理,可以查看 使用eclispe远程调试Java程序

调试图片如下

本文用到的参数含义: -Xdebug 启用调试特性。 -Xrunjdwp: 在目标 VM 中加载 JDWP 实现。它通过传输和 JDWP 协议与独立的调试器应用程序通信。下面介绍一些特定的子选项。 从 Java V5 开始,您可以使用 -agentlib:jdwp 选项,而不是 -Xdebug 和 -Xrunjdwp。但如果连接到 V5 以前的 VM,只能选择 -Xdebug 和 -Xrunjdwp 下面简单描述 -Xrunjdwp 子选项。 transport 这里通常使用套接字传输。但是在 Windows 平台上也可以使用共享内存传输。 server 如果值为 y,目标应用程序监听将要连接的调试器应用程序。否则,它将连接到特定地址上的调试器应用程序。 address 这是连接的传输地址。如果服务器为 n,将尝试连接到该地址上的调试器应用程序。否则,将在这个端口监听连接。 suspend 如果值为 y,目标 VM 将暂停,直到调试器应用程序进行连接。

xirong wechat
我在公众号与你分享更多内容