你的浏览器不支持canvas

做你害怕做的事情,然后你会发现,不过如此。

docker环境tomcat项目开启远程调试

时间: 作者: 黄运鑫

本文章属原创文章,未经作者许可,禁止转载,复制,下载,以及用作商业用途。原作者保留所有解释权。


非docker环境的tomcat配置

  • 使用的是linux服务器,jdk版本为1.8
  • 普通的tomcat项目配置远程调试很简单,编辑bin目录下的catalina.sh文件,在文件最前面增加CATALINA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005",使用catalina.sh run启动项目,就可以实现远程调试。

docker环境的配置

  • 因为使用docker部署项目时,每次创建镜像都会生成新的tomcat,所以开启远程调试就需要每次手动修改catalina.sh文件和重启项目。

  • 如果不想每次手动修改catalina.sh文件,就需要在docker创建镜像时修改catalina.sh文件。
  • dockerfile中添加的命令“sed -i ‘1i\CATALINA_OPTS=”-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005”’ /usr/local/tomcat/bin/catalina.sh”,作用是在catalina.sh文件第一行增加CATALINA_OPTS参数。
  • EXPOSE 5005是开启5005端口,也可以自定义其他端口,如下:

image

  • 例子中使用的是腾讯的云服务器,需要在服务中开启5005的端口映射,如下:

image

idea中开启远程Debug

  • 点击Edit Configurations

image

  • 添加一个Remote

image

  • 选择jvm版本、填写调试ip和端口、选择需要调试的项目,例子中5005端口被映射到服务器的30656,所以这里端口填30656

image

  • 点击Debug按钮启动远程调试,成功如下:

image

idea使用多线程调试

  • 在正式环境的远程调试时,普通的断点会阻塞所有的用户请求,很影响其他用户的正常使用。
  • 解决办法是使用多线程调试,并且设置断点条件可以实现只拦截某个用户的请求,并且不影响其他用户的访问。
  • 在断点上右击,弹框中选择开启多线程,并设置断点条件,例子中为只拦截用户ID为1的请求:

image

  • 如果不设置断点条件,则会拦截到所有请求,这时可以在Debugger控制台中的Threads中选择需要查看的线程和方法。

对于本文内容有问题或建议的小伙伴,欢迎在文章底部留言交流讨论。