eclipse使用基础-debug的使用

原创 2016年08月31日 09:35:40

今天看到一篇csdn上的博文,主要讲了有关eclipse debug的使用,内容较为简单易懂,但是基本说明了debug在使用中的要点。

       程序员不但要将现实问题的解决方案通过最有效的代码形式表现出来,也要懂得在面对代码存在的bug面前如何依靠自己的能力找出来并对症下药。学会eclipse debug的运用我觉得是很有必要的,当然就像原博主说的那样,要会用但不能用太多,太过依赖只能说明在写代码之前缺乏合理的逻辑设计过程和明确的目标计划。

       以下使用部分原博客的内容,如有涉及到原博客的相关利益与隐私,会立即删除相关内容并公开道歉,在此先表示对原博主mgoann分享经验的感谢。

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

Debug视图

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


 线程堆栈视图

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

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

2.表示打断整个进程

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

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

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

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


变量视图

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

2.显示所有的变量值

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



断点视图

1.显示所有断点

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

3.异常断点


 
 表达式视图

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

1.表达式

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


代码视图

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


 
  
 以上为使用过程中的主要视图和常使用的按钮的作用。

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

原博还列举了几个使用场景,主要说明远程debug 、异常断点、条件断点以及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。


  

异常断点

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

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


 
 

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

条件断点

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

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

击断点悬着Breakpoint Properties。


 
 

选中Enable Condition

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

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

 
 
 表达式

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

Debug定位第三方插件的问题

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

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

3.修复源码编译错误

4.进行debug


Debug一些经验

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

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

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

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

Eclipse Debug的一些用法

转自:http://mgoann.iteye.com/blog/1396637 Debug视图 认识debug视图,红色部分框为线程堆栈视图,黄色部分框为表达式、断点、变量视图,蓝色部分为代码视图...
  • u012917700
  • u012917700
  • 2015年09月03日 12:56
  • 2514

Eclipse 的 Debug 介绍与技巧

没有任何程序员能够一气呵成的写出没有任何 Bug 的代码,所以很多程序员有相当一部分时间是花费在 Debug 上的,程序调试是每个程序员必须面对的工作。如何使用 Eclipse 进行有效的、尤其是高效...
  • Zhangxichao100
  • Zhangxichao100
  • 2016年06月12日 13:05
  • 4243

eclipse设置debug签名为打包release签名

当调试第三方分享或者百度地图之类的,需要正式签名授权的时候,使用eclipse自带的debug签名,往往是不能够直接使用的,导致无法直接跟踪调试。 这时候就要进行签名的替换。可是正式的签名一般都无法直...
  • fff2666
  • fff2666
  • 2016年01月12日 13:26
  • 1920

eclipse的debug使用技巧

九个技巧:逻辑结构 条件debug 异常断点 单步过滤 跳到帧 Inspect expressions display 远程debug  最早开始用eclipse的debug的时候,只...
  • u010722769
  • u010722769
  • 2015年08月31日 18:26
  • 736

eclipse设置debug签名为打包release签名

原文地址 当调试第三方分享或者百度地图之类的,需要正式签名授权的时候,使用eclipse自带的debug签名,往往是不能够直接使用的,导致无法直接跟踪调试。 这时候就要进行...
  • u010270148
  • u010270148
  • 2016年08月24日 15:53
  • 1300

Eclipse的Debug调试技巧大全

一、Debug视图 调试中最常用的窗口是: 窗口 说明 Debug窗口 主要显示当前线程方法调用栈, 以及代码行数(有调试信息的代码) 断点Breakpoint...
  • u011781521
  • u011781521
  • 2017年02月12日 13:43
  • 24205

Eclipse Debug 界面应用详解——Eclipse Debug不为人知的秘密

今天浏览csdn,发现一文详细的描述了Eclipse Debug中的各个知识点,非常详尽!特此记录。 Eclipse Debug不为人知的秘密 http://blog.csdn.net/m...
  • h_025
  • h_025
  • 2016年05月13日 12:51
  • 1359

用jetty插件运行maven项目 在eclipse中如何debug 调试程序

最近在学习用maven 管理web项目,发现在maven中调试程序和普通的程序调试略有区别,需要做一下几个设置,才能正确跟踪程序断点。                工作环境: eclipse 4....
  • wuyumingbao
  • wuyumingbao
  • 2013年12月01日 15:35
  • 1097

Eclipse的Debug调试技巧大全(精华版)

Eclipse的Debug调试技巧大全(精华版)
  • swebin
  • swebin
  • 2017年04月24日 16:13
  • 1597

测试与 debug 心得

每一个函数,无论是普通函数,还是类内成员函数,都是为实现某一功能进行实现,当独立地完成一个函数的设计时,应当编写相应的主调函数,去验证函数的基本功能是否实现,当然若为追求更高的鲁棒性,还应考虑一些常见...
  • lanchunhui
  • lanchunhui
  • 2017年03月28日 11:14
  • 404
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:eclipse使用基础-debug的使用
举报原因:
原因补充:

(最多只允许输入30个字)