eclipse Debug 技巧 1

59 篇文章 0 订阅
4 篇文章 0 订阅
你认为你的eclipse debug技能都学会了吗?能够熟练运用吗,下面一些文章里介绍的技能值得你学习下:

1: 5 Tips for Debugging Java Code in Eclipse
http://www.cavdar.net/2008/09/13/5-tips-for-debugging-java-code-in-eclipse/
2: Using the Debugger
http://eclipsetutorial.sourceforge.net/debuggerlessons.html
3:Debugging with the Eclipse Platform
http://www.ibm.com/developerworks/library/os-ecbug/
4:Java Debugging with Eclipse - Tutorial
http://www.vogella.de/articles/EclipseDebugging/article.html
转自:http://dikar.iteye.com/blog/1014377

翻译部分如下:

【逻辑结构】

逻辑结构用来展示map或者其它collection类存储的值。它直接展示出“逻辑”部分,而不必详细显示其它的内部变量。通过点击图中所示按钮来使用。
图1为不启用逻辑结构,图2为启用。







【单步过滤】

它使我们可以跳过部分代码,直接跳到我们需要debug的代码。在Window > PreferencesJava > Debug > Step Filtering 设置过滤器, 可以选择需要过滤掉的包和类。同时要确保你在debug视图中启用了单步过滤,如下图。这样在使用单步调试的时候,就会使用到这个过滤功能。






【跳到桢】

在debug时,eclipse可以直接跳到调用栈中指定的任意桢,并且使JVM在此处重新运行。这使你可以重新运行你的部分代码。

要注意的是:已经被修改的变量不会被重置,它们会保留当时的值。

使用方式:选择调用栈中的一桢,点击按钮“跳到桢”。






【Debug透视图】

http://www.cnblogs.com/Jamesliang/archive/2010/01/09/1643188.html

当点击Debug按钮时,Eclipse会提示你进入 Debug透视图。可以在右上方Expressions窗口点击鼠标右键在弹出菜单中选择 Add Watch Expression 或者点击如下图所示按钮则会出现,添加表达式窗口。你可以输入你想监视的表达式。

snap012

 

snap013

 




【Display窗口】

在上面的添加表达式窗口,虽然可以添加表达式,但是添加表达式他没有智能提示功能。你可以点击 Windows->Show View –>Display 菜单打开Display视图。再次视图中当你输入表达式,会有智能提示功能。


snap014

 

snap015 



【条件断点】

有时我们需要断点满足某种条件是才进入断点。此时我们可以在 断点标记上点击鼠标右键 在弹出菜单上 选择 Breakpoint Properties 菜单,在断点属性对话框中 Enable Condition 复选框后,输入需要的条件。

snap008


snap009

【异常断点】

当我们设置某种异常时的断点,是我们可以在Debug透视视图上选中BreakPoints 视窗,在右上角点击 Add Java Exception Breakpoint 按钮,在弹出窗口中我们可以输入我们需要Debug的异常类型。

snap011





进入debug模式:
1、设置断点
2、启动servers端的debug模式。
3、运行程序,在后台遇到断点时,进入debug调试状态。

=============================
作用域 功能 快捷键
全局 单步返回 F7
全局 单步跳过 F6
全局 单步跳入 F5
全局 单步跳入选择 Ctrl+F5
全局 调试上次启动 F11
全局 继续 F8
全局 使用过滤器单步执行 Shift+F5
全局 添加/去除断点 Ctrl+Shift+B
全局 显示 Ctrl+D
全局 运行上次启动 Ctrl+F11
全局 运行至行 Ctrl+R
全局 执行 Ctrl+U

=============================
1.Step Into (also F5) 跳入
2.Step Over (also F6) 跳过
3.Step Return (also F7) 执行完当前method,然后return跳出此method。
4.step Filter 逐步过滤,一直执行直到遇到未经过滤的位置或断点(设置Filter:window-preferences-java-Debug-step Filtering)。
5.resume 重新开始执行debug,一直运行直到遇到breakpoint。(例如 :A和B两个断点,debug过程中发现A断点已经无用,去除A断点,运行resume就会跳过A直接到达B断点。)
6.hit count 设置执行次数。适合程序中的for循环。(在breakpoint窗口选择断点,右键hit count。)
7.inspect 检查 运算。执行一个表达式显示执行值。
8.watch 实时地监视对象、方法或变量的变化。
9.我们常说的断点(breakpoints)是指line breakpoints,除了line breakpoints,还有其他的断点类型:field(watchpoint)breakpoint、method breakpoint、exception breakpoint。
10.field breakpoint 也叫watchpoint(监视点),当成员变量被读取或修改时暂挂。
11.添加method breakpoint 进入/离开此方法时暂挂(Run-method breakpoint)。
12.添加Exception breakpoint 捕抓到Execption时暂挂(待续...)
断点属性:
(1).hit count 执行多少次数后暂挂。(用于循环。)
(2).enable condition 遇到符合你输入条件(为ture\改变时)就暂挂。
(3).suspend thread 多线程时暂挂此线程。
(4).suspend VM 暂挂虚拟机。
13.variables 视图里的变量可以改变变量值,在variables 视图选择变量,点击右键--change value,一次来进行快速调试。
14.debug 过程中修改了某些code后--〉save&build-->resume-->重新暂挂于断点,
15.resume 当debug调试跑出异常时,运行resume,重新从断点开始调试,
16.如果一行有很多方法,
当第一次按F5键就跳入这一行第一个方法,F6一步一步调试,F7跳出这方法。
当第二次按F5键就跳入这一行第二个方法,F6一步一步调试,F7跳出这方法。
以此类推,想进入这一行第几个方法,就按几次F5和F7。

【Debug视图】

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



【线程堆栈视图】

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

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

2.表示打断整个进程。

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

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

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

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




【变量视图】

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

2.显示所有的变量值。

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




【断点视图】

1.显示所有断点。

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

3.异常断点。




【表达式视图】

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

1.表达式

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




【代码视图】

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







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


1.打开Debug Configurations视图。

2.右击Remote Java Application。

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




  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
4S店客户管理小程序-毕业设计,基于微信小程序+SSM+MySql开发,源码+数据库+论文答辩+毕业论文+视频演示 社会的发展和科学技术的进步,互联网技术越来越受欢迎。手机也逐渐受到广大人民群众的喜爱,也逐渐进入了每个用户的使用。手机具有便利性,速度快,效率高,成本低等优点。 因此,构建符合自己要求的操作系统是非常有意义的。 本文从管理员、用户的功能要求出发,4S店客户管理系统中的功能模块主要是实现管理员服务端;首页、个人中心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、系统管理,用户客户端:首页、车展、新闻头条、我的。门店客户端:首页、车展、新闻头条、我的经过认真细致的研究,精心准备和规划,最后测试成功,系统可以正常使用。分析功能调整与4S店客户管理系统实现的实际需求相结合,讨论了微信开发者技术与后台结合java语言和MySQL数据库开发4S店客户管理系统的使用。 关键字:4S店客户管理系统小程序 微信开发者 Java技术 MySQL数据库 软件的功能: 1、开发实现4S店客户管理系统的整个系统程序; 2、管理员服务端;首页、个人中心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、系统管理等。 3、用户客户端:首页、车展、新闻头条、我的 4、门店客户端:首页、车展、新闻头条、我的等相应操作; 5、基础数据管理:实现系统基本信息的添加、修改及删除等操作,并且根据需求进行交流信息的查看及回复相应操作。
现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本微信小程序医院挂号预约系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此微信小程序医院挂号预约系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。微信小程序医院挂号预约系统有管理员,用户两个角色。管理员功能有个人中心,用户管理,医生信息管理,医院信息管理,科室信息管理,预约信息管理,预约取消管理,留言板,系统管理。微信小程序用户可以注册登录,查看医院信息,查看医生信息,查看公告资讯,在科室信息里面进行预约,也可以取消预约。微信小程序医院挂号预约系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值