`
mgoann
  • 浏览: 253122 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Eclipse Debug不为人知的秘密

    博客分类:
  • Java
 
阅读更多

 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的表达式是可执行代码,将会对代码结果产生永久性影响,在调试时注意,经常将不用的表达式清除掉。

 

 

  • 大小: 42.7 KB
  • 大小: 18.3 KB
  • 大小: 12.4 KB
  • 大小: 17.2 KB
  • 大小: 9.9 KB
  • 大小: 11.3 KB
  • 大小: 32.7 KB
  • 大小: 16.7 KB
  • 大小: 13.2 KB
  • 大小: 22.7 KB
56
12
分享到:
评论
30 楼 java_cache 2015-12-24  
不错,讲得挺详细,果断收藏
29 楼 763863446 2014-07-29  
好好好,尽量不要用debug.
28 楼 javaEEdevelop 2013-04-28  
学到不少东西
27 楼 vivus 2013-03-28  
mfkvfn 写道
。。。
被标题骗了,全是最基本的知识,5年前就都会了。

确实,这些都早知道了,还有一个debug时很好用,且会时不时地用到的视图:display
26 楼 lihong11 2013-02-20  
b_l_east 写道
不错,有一些确实没用过,比如异常和条件以及远程debug。

刚好这几个也是我不知道的,感谢楼主分享了
25 楼 cometzb_xujun 2012-10-25  
GOOD!!!!
24 楼 weisi2375 2012-10-08  
总结的很不错。。 图文并茂
23 楼 firemaple 2012-09-19  
基本上了解过。。。
22 楼 我改名了 2012-07-31  
表达式 这个不错 。
支持
21 楼 George_ghc 2012-07-26  
谢谢 分享!
20 楼 mgoann 2012-03-26  
aniyo 写道
感谢楼主分享,很多都没有用过,总结给没有看过的人看一下,还是很实用的

非常感谢支持!
19 楼 aniyo 2012-03-24  
感谢楼主分享,很多都没有用过,总结给没有看过的人看一下,还是很实用的
18 楼 lg_asus 2012-02-10  
学到了知识  多谢
17 楼 wisesean 2012-02-10  
除了小明没什么亮点
16 楼 nshg 2012-02-10  
条件断点,异常断点学习了
15 楼 yt_ 2012-02-10  
b_lee 写道
这就叫做不为人知了?

14 楼 xyzzzhang 2012-02-09  
小明真厉害
13 楼 陈碧滔 2012-02-09  
小明这个人啊,哈哈
12 楼 陈碧滔 2012-02-09  
远程debug没用过,收藏学习了
11 楼 elf8848 2012-02-09  
好, 条件断点,异常断点  我还是不知道 的, 有收获.
qq548573025 写道
b_l_east 写道
不错,有一些确实没用过,比如异常和条件以及远程debug。

谢谢,第一遍快速浏览了完了,感觉都是用过的常见功能,看了你的评论才看到这真正的“不为人知的秘密”!
同样感谢楼主分享

好, 条件断点,异常断点  我还是不知道 的, 有收获.

相关推荐

    Eclipse Debug Flash教程

    【Eclipse Debug Flash教程】 Eclipse作为一款强大的Java开发集成环境,同时也支持多种其他语言的开发,包括ActionScript和Flex,这些是构建Flash应用程序的基础。本教程将详细讲解如何在Eclipse中进行Flash项目的...

    Eclipse debug 调试

    连接时远程服务器时,需要在Eclipse中新建一个远程调试程序这里有一个小地方需注意,连接上的时候貌似不能自动切换到Debug视图,不要以为本机的调试程序没有连接到服务器端。 本机作为服务端同本机作为客户端相比,...

    在Eclipse中使用debug(Eclipse调试常用技巧)

    在Eclipse中使用debug是软件开发中调试代码的一个重要环节,尤其对于Java开发者来说,Eclipse作为一个成熟的集成开发环境,提供了强大的调试工具和技巧。尽管图像内容无法直接查看,但是根据标题和描述,我们可以...

    eclipse中debug技巧

    ### Eclipse中的Debug技巧详解 #### 一、概述 在软件开发过程中,调试是必不可少的一环。Eclipse作为一款广泛使用的集成开发环境(IDE),提供了丰富的调试功能,可以帮助开发者高效地定位和解决代码中的问题。...

    在Eclipse中使用debug

    在 Debug 视图的 Variables 小窗口中,我们可以看到变量的值,可以右键选择"Change Value...",在弹出的对话框中修改变量的值,或者在下面的值查看窗口中修改,使用 Ctr+S 保存后,变量值就会变成修改后的新值了。...

    eclipse debug (调试) 学习心得

    在编程开发过程中,调试是必不可少的一个环节,Eclipse作为一款强大的Java集成开发环境,其调试功能强大且易用。本文将详细介绍Eclipse调试器的一些核心功能和技巧,帮助开发者更好地理解和运用这些工具。 首先,...

    Eclipse 的 Debug 介绍与技巧

    ### Eclipse的Debug介绍与技巧 #### 一、Eclipse调试介绍 在软件开发的过程中,调试是必不可少的一个环节。几乎所有的程序开发都会面临错误排查的问题,因此掌握高效的调试技巧至关重要。Eclipse作为一款广泛使用...

    Eclipse调试Debug的常用技巧

    5、重新调试:Eclipse提供了一种回退机制,即“Drop to Frame”,允许在当前线程的栈帧中回退到之前的状态,但这不适用于跨线程回退,只能回退到当前线程的起点。 6、远程调试:远程调试允许在本地Eclipse中调试...

    eclipse远程debug

    eclipse 远程 debug tomcat 和 websphere 的 web 应用 eclipse 远程 debug 是一种常用的 debugging 技术,用于在远程服务器上调试 Web 应用程序。今天我们将讨论如何使用 eclipse 远程 debug tomcat 和 websphere ...

    Eclipse Debug模式的开启与关闭问题简析

    Eclipse Debug模式的开启与关闭问题简析主要是通过Preferences面板来设置,解决Debug模式启动不起来的问题可以通过清除所有的断点来实现。 知识点: 1.Eclipse Debug模式的开启与关闭问题简析 2.Eclipse Debug模式...

    liferay tomcat eclipse debug

    标题 "liferay tomcat eclipse debug" 暗示了我们正在讨论如何在Eclipse环境中调试Liferay Portal,这是一个基于Java的开源企业级内容管理和协作平台,通常与Apache Tomcat这样的Servlet容器结合使用。以下是关于这...

    android开发--详解eclipse debug && eclipse快捷键

    #### 五、Eclipse Debug技巧 - **管理断点**:建议在每次调试结束时清除所有断点,以避免积累过多的断点影响性能。可以通过“Breakpoints”视图来管理和删除断点。 - **监控变量**:对于频繁变化的变量,应定期清理...

    Eclipse的Debug调试技巧大全.docx

    ### Eclipse的Debug调试技巧详解 #### 一、Debug视图概览 Eclipse IDE 提供了一个强大的调试工具,可以帮助开发者高效地找出并修复程序中的错误。本文将详细讲解Eclipse中Debug视图的功能及其使用技巧。 #### 二...

    eclipse debug调试的快捷键和常用快捷键

    ### Eclipse Debug调试的快捷键和常用快捷键 在软件开发过程中,使用Eclipse进行调试是一项非常重要的技能。本文将详细介绍Eclipse中与Debug相关的快捷键以及其他常用的快捷键,帮助开发者提高工作效率。 #### 一...

Global site tag (gtag.js) - Google Analytics