`
iamzhongyong
  • 浏览: 796686 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

【转】eclipse进行debug的说明

    博客分类:
  • java
 
阅读更多

早晨来到公司发现一片比较好的文章,如果早看到,就不用自己一点一点的摸索debug的技术了。

转发记录一下。

 

 

 Debug视图

认识debug视图,红色部分框为线程堆栈视图,黄色部分框为表达式、断点、变量视图,蓝色部分为代码视图。

 



 线程堆栈视图

分别介绍一下这几个按钮的含义:

1.表示当前实现继续运行直到下一个断点,快捷键为F8。

2.表示打断整个进程

3.表示进入当前方法,快捷键为F5。

4.表示运行下一行代码,快捷键为F6。

5.表示退出当前方法,返回到调用层,快捷键为F7。

6.表示当前线程的堆栈,从中可以看出在运行哪些代码,并且整个调用过程,以及代码行号



 

变量视图

1.为变量名视图,显示当前代码行中所有可以访问的实例变量和局部变量

2.显示所有的变量值

3.可以通过该窗口来改变变量值



 

断点视图

1.显示所有断点

2. 将当前窗口1中选中的端口失效,再次点击启用。

3.异常断点



 

表达式视图

表达式视图:表达式视图是Debug过程中较为常用的一个视图,可以对自己的感兴趣的一些变量进行观察,也可以增加一些自己的表达式,也可以查看一行代码的运行结果。

1.表达式

2. 点击此可以新增一个表达式



 

代码视图

代码视图:用来显示具体的代码。其中绿色部分是指当前将要执行的代码



 

 

场景一:小明辛苦了两天终于将自己的负责的任务完成了,第二天转测后,测试找到了小明说,小明的程序有bug,可以是小明经过仔细调试,发现本地没有任何问题,但是测试的环境上确实有问题,所以小明遇到了难题,测试的环境linux,又不能上去linuxdebug,小明这个时候想要是Linux也可以debug就好了.

远程debug

远程debug:远程debug顾名思义,能够将远程操作系统上的任何java进行debug,但是有前提是本地需要有同步的代码。

1.远程debug的步骤是在远程操作系统上启动java进程时增加特殊的

-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=$DEBUG_PORT,server=y,suspend=n

2.Eclipse中新建一个Remote Java Application

远程debug

1.打开Debug Configurations视图

2.右击Remote Java Application,

New

3.选择源码工程

4.输入远程IP和端口,端口即服务

端的$DEBUG_PORT,点击OK。




 
 

 

场景一:小明写了一个任务执行者,该执行者不间断的执行一些任务,在现网上运行了一段时间后,发现有概率的出现一些故障,发现运行一段时间后,该任务者异常退出了,退出的因为是空指针,可以小明想要在本地debug,不知道断点打在哪里,该问题是概率事件,不一定会出现,所以小明debug几遍下来后,头晕眼花,连代码都看不清楚了,小明想要是能有个断点每当出现空指针异常的时候就停下来让他发现问题,那该多好呀。

异常断点

异常断点:在定位问题的过程中,常常会遇到断点无法打到合适的位置,以至于和问题的触发点千差万别,所以这个时候不妨试试异常断点,顾名思义,异常断点是指抛出某种异常后自动挂起的断点。

点击红色部位,增加一个异常断点



 

输入想要定位的异常类型,例如NullPointerException,这样系统中抛出任何NullPointerException异常后,都会挂起当前线程,给你机会去定位问题。

 

场景一:小明写了一个巨大的循环,在调测代码时,小明发现每当循环到第100000次的时候,就是出现问题,没有达到自己的预期,于是小明在循环里打了个断点,想看看到底怎么回事,可小明万万没有想到,想要到达100000次循环是多么的困难,小明这个时候已经开始浮想联翩,如果能有这样的断点:

             If 循环次数== 100000,线程停下来

条件断点

如右图,循环1000次,如果想要在循环到500

次的时候停下来,可以创建一个条件断点,右

击断点悬着Breakpoint Properties。



 

选中Enable Condition

在空白处,添加你自己的条件,如果条件返回true,线程会被挂起,如果为false,则忽略该异常

Hit Count为该断点经过多少次后,正式挂起线程,如果设置为500,则表达前499次,经过该断点都不会停下,当第500次,该断点会挂起当前线程。

 

 

表达式

表达式可以查看一些在当前代码中没有的命令行,方便定位问题。

 

场景一:小明最近遇到一个难题,在调用一个第三方插件时总是会有问题,小明怀疑是第三方插件的bug,但小明没有找到源码不能进行debug,小明该怎么办呢?

Debug定位第三方插件的问题

1.使用反编译工具将代码反编译

2.将反编译后的源码进行过滤

3.修复源码编译错误

4.进行debug

Debug一些经验

1.尽量减少debug,少用debug,优秀的程序员总是花80%的时间来思考如何解决问题,20%的时间来动手完成代码,而糟糕的程序员总是用20%的时间去写代码,80%的时间去调试代码,动手之前尽量想好如何去做,并且已经为你自己的思路做了充分的实验。

2.尽可能的提高debug的效率,设置合适的断点,使用快捷键。

3.debug的F6快捷键经常用到,它与金山词霸的快捷键冲突,所以在debug的时候最好将金山词霸关掉。

4.debug的表达式是可执行代码,将会对代码结果产生永久性影响,在调试时注意,经常将不用的表达式清除掉。

 

原文链接:

http://mgoann.iteye.com/blog/1396637

 

-------------------------------------------------------------------------------------------------------

发现 原文的作者貌似忘记了display的使用,这里补充一下呵呵。

有时候在debug到一行代码的时候,要自己再写一些代码进行验证,这时候就可以使用一下display了。

类似下面的这张图

 

 

 

分享到:
评论

相关推荐

    Debug时修改代码能即时生效.

    Debug时修改代码能即时生效的说明,帮助大家在debug时解决无法及时生效的问题

    Eclipse 的单步调试.docx

    Eclipse的单步调试说明文档,使用eclipse

    Eclipse里为Red5添加Debug模式的步骤

    Eclipse里怎么调试Red5?该文档给出了具体步骤, 配有图片说明。

    Eclipse C C++ GDB 编程及调试方法大全 Codeblocks编程指南

    Eclipse 本人整理的目前最全的资料:内涵Eclipse中文教程pdf,Codeblocks中文教程pdf Eclipse C/C++调试方法、文档、问题说明 CDT配置 GDb调试工具。另有Eclipse C、C++(CDT)开发文档pdf。绝对值!

    eclipse调试显示jdk源码变量的rt_debug.jar

    解决问题:eclipse调试显示jdk源码变量 如何使用:下载后放在jdk目录“jre\lib\endorsed”下,如果“endorsed”不存在就新建一个。 说明:适用于jdk1.8 参考链接: ...

    图解利用Eclipse3+Sysdeo Tomcat plugin编辑和调试JSP

    非常详细的说明,这篇文章主要介绍如何利用Sysdeo Eclipse Tomcat Launcher plugin 编辑和调试JSP与Servlet

    [Eclipse Juno] Eclipse Juno 入门教程 (英文版)

    Discover how to use Eclipse to develop, test, and debug basic desktop Java applications proficiently Integrate JUnit 4, the most widely used unit testing framework, into Eclipse Get to grips with how ...

    图解debug使用eclipse.docx

    解释说明: F8是调到下一个断点(没有的话,直接运行到结束)。 F5是单步调试进入函数内部。 F6是单步调试不进入函数内部。 F7是由函数内部返回到调用处。

    apache2.2整合resin3+Eclipse远程调试

    apache2.2整合resin3.14+Eclipse远程调试,文档有详细的配置说明和截图 文档详细说明了apache2.2整合resin3.14的全过程,并且增加了Eclipse远程调试的配置方法。

    java断点续传源码解析-particle_eclipse_debug:使用Eclipse和OpenOCD调试粒子光子和电子代码

    说明在 . 这是必要的,因为云编译器未配置为生成调试版本。 连接调试设备 在本教程中,我们将使用三种不同的设备,但它们都以相同的方式工作,因此您可以选择您喜欢的任何设备。 便宜的 ST-LINK/V2 克隆 SWD U 盘 您...

    Eclipse中文教程

    Eclipse基础操作,为网络上Eclipse一些手册的整理 一、简介 二、Eclipse PlatForm 主要介绍各个菜单的基本功能。... Debug调试技巧 六、重新命名 变量、字段、方法的重新命名方式 七、要诀和技巧

    Eclipse 远程调试

    一个文档,详细的说明了怎么进行远程debug

    Eclipse断点调试

    Eclipse断点调试总结了网上所有的Debug调试方法,并有详细的图解说明,可以说是最全的断点调试资料

    win7虚拟无线工具+wifi下eclipse调试工具

    使用说明: 1、终端设备需要先root。 2、虚拟wifi功能需要win7以上环境,并带有无线网卡。(当然你可以不使用,并不影响调试功能。) 使用步骤: 1、在终端上安装WifiDebug.apk。 2、打开wifiDebug,开启wifi调试,...

    Eclipse中文教程.pdf

    0.环境说明...............................................................................................................................................................7 1.Eclipse简介...................

    eclipse 中文版教程

    535 Use Step Filters/Step Debug 201 54 继续执行 203 55 设定岔断点的 Hit Count 205 56 岔断点组态设定 212 57 监视点(Watchpoint) 214 58 方法岔断断点(Method Breakpoint) 217 59 异常岔断点(Exception ...

    Eclipse从入门到精通.rar

    5.3.5 Use Step Filters/Step Debug ........... 201 5.4 继续执行............. 203 5.5 设定岔断点的Hit Count ....................... 205 5.6 岔断点组态设定....... 212 5.7 监视点(Watchpoint)... 214 ...

    使用eclipse单步调试jni代码 (方法2)

    本文档是自己一边实际操作一边记录完成,每一关键步骤都有截图与详细说明,本是自己的记录也是拿出来与大家分享一下,希望帮助更多的人,因为付出的很多心血,所以没有0积分分享,见谅。方法2的缺点是首次配置复杂,...

    Eclipse RCP Plugin 开发自学入门指南(CEC首发)

    Eclipse Rich Client Application 开发自学教程 For The Eclipser salever 2011-3-28 根据最新版本的Eclipse 3.6 重新编写,每章都可独立于其他章节,内附的代码均可直接运行, 适合Eclipse 开发者参考。 声明...

    Eclipse RCP Plug-in开发自学教程(Eclipse3.6)

    本教程素材来源于网络,经过本人的整理、添加以及部分的重写,将原有的Eclipse3.3版本的一些内容完全迁移到Eclipse3.6版本上来。基于开源以及分享的精神,特地将教程分享到网络上,希望所有需要的朋友因此而受益,也...

Global site tag (gtag.js) - Google Analytics