eclipse调试web项目的第三方jar

摘要:

   解决大多数人提供的解决方案,不生效的情况下,遇到的问题。

   提到的解决方法,可以说是全球唯一的。

在看问题解决方法之前,你已经看到了以下相关提示或者错误,也使用了相关命令

    a)Source not found,Edit Source Lookup Path

    b)mvn dependency:sources -DdownloadSources=true

    c)手动关联源码,Source Attachment

    d)尝试各种即时反编译器

问题症状:

    使用各种方案,关联源码后,调试起来,仍然不顺手,尤其是调试第三方框架的源码即使进入到断点了,可是实际上会跳转到源码标签页,无法实时打断点

如果,你遇到的问题是上述描述的问题,苦苦寻求解决方法而不得,继续往下看。

一、解决方法

1、正常配置web项目,使用tomcat插件进行启动

1)使用tomcat插件配置好的项目如下图,基本参数,就不细说了。


2)添加jvm参数

    切换到Main标签旁边的JRE标签,添加jvm参数

-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000

如图

tomcat插件配置


3)启动项目

    run项目,而非debug。添加的jvm参数,已经在监听端口,达到类debug的效果,直接run项目


2、eclipse远程调试,本地项目

      远程调试,是调试远程服务器上的应用的。在本方法里面,远程服务器在逻辑上是远程应用,实际上是本地的应用。

1)打开Debug Configures标签页,配置远程调试参数

    配置远程项目对应的本地工程和填写远程的host和port。这一块的配置也不细说了。


2) Debug项目

   点击完Debug,项目的运行环境是这样子的:待调试项目以run方式,在运行;远程debug也在运行。

开始进行调试吧,项目依赖的jar,凡是关联了源码的,都可以进入到class视图的断点里,可以实时打断点。

二、相关问题说明

1、eclispe管理的文件图标

a)Source not found,源码未找到的时的图标

b)未编译源文件图标

   显示的jar包里面的源码,此时源码并未和class关联起来,是一种“未编译”状态,eclipse只是以源码的形式显示它。

这种文件显示方式,如果预先在对应的class文件里面,打了断点,断点可以进入,但是无法显示断点位置,也无法实时打断点。

c)关联了源码的class文件图标

    010,class文件显示状态,这类文件是eclipse管理的编译后的文件的视图,此时已经和源码关联了。这种显示方式在debug模式下,才可以实时打断点。


三、问题分析

    初步分析,问题出在tomcat插件上。

单进程的应用,只要使用maven dependency:sources关联源码后,eclipse自带的Class Viewer可以把源码和class文件关联起来,可以实时打断点。

而tomact插件发布的web应用,因为类加载器的原因,导致eclipse无法很好的控制调试器。

以上现象是事实存在的,原因则是推测的。



vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv

如果,你首次搜索就看到这个页面,那么祝贺你!
如果,你历经千辛万苦,搜索了整个互联网,看到了这个页面,同样祝贺你!
我来了,你的世界就亮了。

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值