远程调用debug 调试程序

在工作中遇到了需要远程调试程序的问题,需要本地远程debug代码。

下面讲解两种方式,方式一是我觉得最舒服的解决方案大家可以参考一下。

方式一和方式二首先只是配置远程服务端的参数,后面还有Idea连接的配置(这里因为远程服务端的配置包括启动命令可能有所不同,Idea的配置基本相同,所以放到了最后统一描述)。

服务端的配置

方式一:

通过命令启动jar包

1
java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=5005,suspend=n -jar  xxx.jar

这种方式直接,不需要在打包插件中添加内容

完整命令:

端口号为:5005 这个是远程调试的端口号

-Dspring.cloud.nacos.config.server-addr=127.0.0.1:8848

-Dspring.cloud.nacos.config.namespace=test

这两行命令为获取配置文件的命令,如果没有也可以不要。

test.jar 这个为启动的jar包

eg:
java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=5005,suspend=n -jar -Dfile.encoding=utf-8 -Dspring.cloud.nacos.config.server-addr=127.0.0.1:8848 -Dspring.cloud.nacos.config.namespace=test  -Xms512m -Xmx512m test.jar >/dev/null 2>&1  &

方式二:

需要在打包插件中加入configuration标签中的内容,然后打包发布到服务器上

1
<build>        <finalName>Test</finalName>        <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>            <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-compiler-plugin</artifactId>                <configuration>                    <source>8</source>                    <target>8</target>                </configuration>            </plugin>        </plugins>    </build>

这里需要注意的是,远程连接的端口号要跟后面Idea配置的相同。

通过命令启动jar包

1
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar  xxx.jar

Idea的配置

上述远程配置和启动命令有所不同,但是Idea的配置和使用是相同的。

步骤一:

进入后添加remote

这里要注意host和port;一个是服务的远程ip地址,一个是端口号,这些要跟远程服务的配置相同。

然后启动

如果出现如图所示说明启动成功。

然后调用接口,可以正常进入debug。

实际使用

远程调用nacos 调试程序
修改stamd.cmd脚本
在其中添加
set “JAVA_DEBUG=-Xdebug -Xrunjdwp:transport=dt_socket,address=6666,server=y,suspend=n”
监听6666 端口
command 中将命令添加进去即可 远程调试
![[debug.jpg]]

tomcat 远程调试:

  1. 在 windows系统里
    在catlina.bat 中加入:
    set "JAVA_OPTS=%JAVA_OPTS% -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8888 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8"
    或者下面这个 ,具体忘了是哪个了
    set CATLINA_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000
    ![[catlina-bat.bmp]]
  2. 在linux系统里:
    在catlina.sh中加入:

金蝶aas应用服务器:

在 资源管理-->JVM参数 中开启debug 重启即可,端口默认8000

强制清除npm 缓存命令 npm cache clean --force