今天决定做件有意义的事,写篇图文并茂的blog,为什么要图文并茂?因为很多事可能用语言也说不明白,从以前我发表的一篇文章可以看得出来,http://blog.csdn.net/sunyujia/archive/2008/03/23/2211109.aspx 我的朋友们普通反应看完后觉得不知所云,可能是我写的太简单,下面步入正题。
       什么是远程调试,就是在A机器上利用Eclipse单步跟踪调试B机器上的Web应用,当然调试A机器上Web应用也是没有问题的,90%我都是调试本机的Web应用,远程调试的意义我想我不用说了,大家都会想到它的好处,你可以在本地调试非本地测试环境上的应用,这是件多么美妙的事,所以我就不说它的好处了,那么本地调试呢,我喜欢本地调试也采用下面要介绍的方法,为什么不用myeclipse,WTP,TomcatPlugin等。
         下面我阐述下在eclipse中启动Web应用的缺陷:
我本身是非常喜欢使用Myeclipse 做WEB部署的,但是我不喜欢使用Myeclipse启动tomcat,当然WTP,TomcatPlugin等也不喜欢,使用Myeclipse做部署的好处就是非常灵活,不仅可以部署到Web应用里面还可以任意部署到某一指定路径下。但是使用Myeclipse启动tomcat的话,有如下问题:
         a.卡,比较慢,尤其是同时启动多个应用.
         b.如果断点比较多的时候例如100多个,必须把每个不需要使用的断点先禁用掉或干脆删掉,也就是说web应用启动的时候就已经决定了是debug模式还是run模式。中间不可以切换。
c.一旦eclipse死掉了,web应用也就断掉了。
d.对于程序来说相对路径,类加载路径都是和系统正式运行的情况下完全不同的(要视具体插件而论,每个插件的部署方式都不太一样),即和Web应用独立运行的相对路径和类加载环境有差异,当然熟练的老手可以轻松搞定,但是就目前国内情况看,很多初学者在这个问题上还是很苦恼的。
e.顺便说一句和本话题无关的,eclipse的console并不能完全模拟cmd控制台,一些流操作会有问题。例如:PushbackInputStream
那么使用远程调试的方法做本地调试有什么好处呢?
a.       运行速度比较好。
b.       运行期间可以使用eclipse连接web应用做调试,调试完成后可以断开连接,需要调试的时候可以再重新进行连接,断点的禁用功能可能就很少派上用场了,因为相对于在debug模式和run模式间自由切换。
c.       Web应用是独立运行的,不用担心eclipse死掉即玩完了。
d.       从开发到上线运行,环境一直可以保持一致。
说了半天,没有使用过的人可能还是不了解,没关系,可以看完下面的,再回过头看上面的。
下面我举一个小例子介绍如何进行远程调试.
环境:tomcat,Eclipse,做远程调试不需要任何插件。当然可以使用MyEclipse把Web应用部署到tomcat上面,注意只是部署,一般来讲使用远程调试就不需要配置MyEclipse的Web Server了,MyEclipse在这里只起到一个copy文件的作用,好在现在Myeclipse可以随意指定目录copy了。即 Deployment 对话框中的Custom Location,在这里推荐大家一个copy文件的小插件,有了这个插件就不需要Myeclipse部署了。
FileSync plugin for Eclipse http://andrei.gmxhome.de/filesync/index.html 这个插件的作者还写了很多其他好用的插件,大家可以顺便看下。
       这次例子的源码很简单:
Jsp 源码如下index.jsp
<%com.syj.test.DebugTest.test("sunyujia test");%>
Hello Remote Debug
在DebugTest类的test方法中做个断点既可测试
 
下面按步骤进行讲解
1.    将web应用部署到Tomcat的webapp目录下
2.    修改Tomcat/bin/startup.bat文件,在最前面加上如下代码
SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000
注意上面命令必须写成一行中间不能有换行,-前是空格-后是非空格,由于显示器分辨率不同,该文章在显示的时候可能会有换行的情况。
更多Web服务器远程调试参数可参见
3.必须先启动Tomcat启动tomcat/bin/startup.bat参下图
4.在com.syj.test.DebugTest.test方法中设置断点
5.在eclipse中配置debug,配置完成后点击debug按钮。如图:
6.打开浏览器访问在第1步部署的web应用,访问index.jsp
7.当浏览器访问index.jsp时,由于调用了com.syj.test.DebugTest.test,又因在test方法中设置了断点,所以程序会被断点拦截,如图:
8.不需要调试的时候点击断开,需要调试的时候再点击debug,非常方便,当调试过程中出现引用非本project的源码时(例如跟踪到tomcat里面或spring,hibernate里面),会提示找不到源码,点击相应提示的按钮(到时候editor区只有一个按钮,所以大家就不要问哪个按钮了)可以添加源码继续调试,或在配置debug前就把需要的源码都添加上,在source选项卡里面,因为具体的基本调试这方面知识不属于本话题讨论范围内,就不过多介绍了。

【Java】使用Eclipse进行远程调试,Windows下开启远程调试的更多相关文章

  1. windows下开启远程连接Mysql

    使用“Ctrl + R”组合键快速打开cmd窗口,并输入“cmd”命令,打开cmd窗口.  使用“mysql -uroot -proot”命令可以连接到本地的mysql服务.  使用“use mysq ...

  2. JAVA 基础开发环境 vscode 搭建 Windows下VSCode编译运行简单java

    JAVA 基础开发环境 vscode 搭建 来源 https://www.cnblogs.com/freewsf/p/7744728.html 对于使用 Visual Studio Code 的 Ja ...

  3. windows下使用远程工具登录虚拟机上的Linux、访问虚拟机上的服务 、端口转发、win7 telnet登陆虚拟机

    首先要清楚virtual box如何设置端口转发: 一篇文章: 如何使用VirtualBox进行端口转发 由于默认的方式是用NAT来做虚拟机网络的,因此如果从外网想访问虚拟机的应用会比较麻烦.以前一直 ...

  4. 转:mysql日志(Windows下开启Mysql慢查询、通用日志)

    一.Windows下开启Mysql慢查询详解 //show variables like '%quer%';查询是否开启了慢查询!! 第一步:修改my.ini(mysql配置文件)  在my.ini中 ...

  5. Windows 下开启FTP服务并创建FTP用户

    Windows 下开启FTP服务,并创建用户 此教程教你怎么开启 Windows 的 FTP 服务,并创建用于登入 FTP 的用户.教程用到的操作系统是 Windows 7. 一.创建用于登入 FTP ...

  6. eclipse 在weblogic部署的工程项目开启远程调试remote config eclipse远程调试配置

    确认你的工程在weblogic中跑的起来,然后再结合eclipse debug配置+java debug运行模式搞个调试. 工程能跑起来没问题后,先在eclipse中,点击debug图标 然后点击De ...

  7. 【转载】Windows下VSCode编译调试c/c++

    懒得自己配置或自己配置出现不明问题的朋友可以点这里: [VSCode]Windows下VSCode便携式c/c++环境 http://blog.csdn.net/c_duoduo/article/de ...

  8. 【笔记】【VSCode】Windows下VSCode编译调试c/c++

    转载自http://m.2cto.com/kf/201606/516207.html 首先看效果 设置断点,变量监视,调用堆栈的查看: 条件断点的使用: 下面是配置过程: 总体流程: 下载安装vsco ...

  9. 【VSCode】Windows下VSCode编译调试c/c++【更新】

    便携版已更新,点此获取便携版 用于cpptools插件的配置文件更新 更新的launch.json // Available variables which can be used inside of ...

随机推荐

  1. 中国城市 json

    点击查看完整代码,再点击复制即可复制代码. 三级json,省市区: [{ "value": "110000", "text": " ...

  2. Qt中QBitmap 的使用 --QBitmap的作用

    特别注意:如果想把做一个先把图画在内存中,在显示到页面,不要使用bitmap,这个只有单色: 一般情况下QBitmap只作为图片掩码使用,比如做不规则窗口. QBitmap表示一种只有黑白的单色图片, ...

  3. MSSQL中数据库对象类型解释

    public string GetObjectTypeName(object oType) { switch (oType+"") { case "U": re ...

  4. go channel缓冲区的大小

    go channel缓冲区的大小 len也可以作用于channel,代表现在channel缓冲区中还有多少数据没有读取.示例如下 c:=make(chan int,20) fmt.Println(&q ...

  5. session相关

    判断session是否已失效: HttpSession session=request.getSession(false); getSession(boolean)相比于getSession()更安全 ...

  6. 后置处理器----JSON提取器

    JSON提取器可以很方便的让你从JSON响应格式中提取数据. 1)Name:JSON提取器的名称. 2)Apply to:应用范围,有些采样器还嵌套子采样器,可以在此处设置JSON提取器是作用与主采样 ...

  7. 转载智能家居 作者:热情的沙漠 出处:http://www.cnblogs.com/buptzym/

    理工男打造帝都89平智能家庭   毕业后的2016年年初,搬入新家,总算不用在出租屋里鬼混了,于是就想把之前童年的梦想:智能家居+家庭影院好好实现一下~ 相比帝都高昂的房价,这些东东还凑合玩得起,不过 ...

  8. Mac 安装 mysqlclient

    尝试在虚拟环境下通过 pip 安装: pip install mysqlclient 然后报错:OSError: mysql_config not found 找到官方文档 https://githu ...

  9. 洛谷P4559 [JSOI2018]列队(主席树)

    题面 传送门 题解 首先考虑一个贪心,我们把所有的人按\(a_i\)排个序,那么排序后的第一个人到\(k\),第二个人到\(k+1\),...,第\(i\)个人到\(k+i-1\),易证这样一定是最优 ...

  10. eclipse搭建maven project的spring4 spring mvc mybatis

    一,先确定已经安装好了Eclipse Java EE IDE for Web Developers我用的是如下版本 Version: Neon.3 Release (4.6.3)Build id: 2 ...