常用技巧:从零开始快速上手idea远程debug项目代码 | 八月更文挑战

581 阅读3分钟

这是我参与8月更文挑战的第2天,活动详情查看8月更文挑战

   本文将介绍如何通过本地环境连接到远端tomcat服务器进行debug得调试,希望能给你带来帮助。

前置小准备

   你需要知道的: 为了模拟远程debug整个过程尽可能贴近实际,我们采用springboot来快速构建一个web应用。随后演示如何将其导成为可执行war包,然后部署至Tomcat服务器之上。随后我们在进行远程debug调试。 基于的环境:vmware、centos7、jkd8 ,idea

导出SpringBoot项目为可执行war

大致流程:

                1. 修改文件的打包 形式为war

                2. 移除掉springBoot自带的Tomcat依赖

                3. 添加插件信息,由于springBoot项目并没有web.xml文件信息,所以构建时需要将failOnMissingWebXml的内容置为false。如果不进行添加,打包时会提示缺少web.xml文件而导致构建失败。

               4. 修改启动类信息:启动类添加继承“SpringBootServletInitializer”,并且重写“configure”方法。

               5. 执行打包,即可在项目路径下找到打包好的war文件信息

操作图示:

1. 修改默认打包方式为war文件

image.png

2. 修改SpringBoot内嵌Tomcat容器的生命周期
修改为provided依赖则表明该依赖尽在在编译和测试过程中有效,最后生成的war包时不会加入。
<plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>3.3.1</version>
    <configuration>
        <!--如果想在没有web.xml文件的情况下构建WAR,请设置为false。-->
        <failOnMissingWebXml>false</failOnMissingWebXml>
    </configuration>
</plugin>
3. 配置的maven插件信息
`

image.png

4. 修改主启动类信息
`

                       

5. 执行打包命令
`

启动Tomcat服务

    将项目导入到Tomcat安装文件下的webapps路径下,启动Tomcat服务,在地址栏键入地址信息+项目名即可完成访问

   部署在虚拟机时可能遇到的问题:

  为了模拟远端 Debug此时我们的Tomcat服务部署在虚拟机之下, 如果在主机下出现项目无法访问的问题,原因有可能是linuxs下防火墙的拦截所致。

        此处采用最简单的方式:关闭网络防火墙        

    由于centos从7开始默认用的是firewalld,这个是基于iptables的,虽然有iptables的核心,但是iptables的服务是没安装的。所以你只要停止firewalld服务即可具体命令如下:

 systemctl stop firewalld.service && sudo systemctl disable firewalld.service

     至此,如果在主机端可以访问到虚拟机端部署的web项目,那么说明基本准备工作基本完成,下面主要讨论如何实现远程Debug服务端代码。

远程debug程序

远程debug基本原理

     主要本机和远程主机的两个 VM 之间使用 Debug 协议通过 Socket 通信,传递调试指令和调试信息。

        其中被调试程序的远程虚拟机:作为 Debug 服务端,监听 Debug 调试指令。

        调试程序的本地虚拟机:IDEA 中配置的 Remote Server,指定 Debug 服务器的Host:Port,以供 Debug 客户端程序连接。 

具体操作

  主要操作:

1. 编辑Tomcat安装路径下的bin目录,修改其中的startup.sh文件信息
2. 修改catalina.sh中的端口信息,配置远端debug调试的端口信息
3. 启动Tomcat服务器

 

image.png

 启动命令中加入jpda用于告知服务器开启debug协议
`

            

image.png

 修改其中jpda_address选项,指定调试端口信息
`           

 IDEA 中指定 Debug 服务器

  • 点击主窗口菜单 Run / Edit Configurations,打开“Run/Debug Configurations”窗口;

  • 点击工具栏上的“+”按钮,下拉菜单中选择“Remote”;

  • 设置 Host 为远程服务器的域名或IP,保持 Port=8088此时的端口为之前所配置;

image.png

 idea环境下配置远程debug信息
`

  配置好信息后,对需要debug的代码打上断点,启动项目。剩下的操作步骤就是访问远程服务器对应的业务请求,程序会在运行至断点处,剩下的和本地debug别无差别,在此就不赘述了。