细说MyEclipse调试
在程序出现问题时,我们需要找到并解决掉这些恼人的Bug,才能使程序顺利的运行下去。但是,当代码很多,程序很大的时候,找起来就很麻烦。
所以,我们需要借助工具——Eclipse/MyEclipse中的Debug(调试)手段。而调试的时候,需要入口和观测点,所以我们需要设置断点来进行调试。
1 设置断点的方法:
在想要加上断点的行的边侧栏双击/右键后点击Toggle Breakpoint即可。
2 启动调试模式
设置好断点后,在项目中右键 —— Debug As —— Java Application即可
或点击如图所示处:

2 断点的设置位置:
a) 属性断点: 在成员变量的所在行设置的断点
(第4行的边侧栏上的标志)
b) 方法断点: 在方法的执行处或定义处设置的断点(一般推荐在执行处设置)
(17行边侧栏的标志)
c) 条件断点: 满足某条件后即停止运行程序
设置方法: 在断点所在行点击右键 Breakpoint Properties(断点属性) —— 如图

注:
1 书写条件断点的条件时,不要有分号。 sum > 8(正确) sum>8;(错误)
2 设置断点时要牢记一个原则: 哪行设置了断点,哪行在调试时就将要被执行。
所以要正确设置位置,以免出现未初始化的错误。
比如:
public void print() {
* int sum = 0;//在此行设置了断点
for (int i = 0; i < 10; i++) {
sum += i;
}
System.out.println(sum);
}
而我设置条件断点时如下书写: sum > 5。断点设置在定义sum的一行,说明调试的时候sum是未被定义的,而断点属性设置为 sum>5—— sum都未被定义怎么可以赋值呢?所以错误。
3 如果想要修改代码/设置条件断点/Breakpoint Properties中的属性值,一定要先停止Debug,再设置,然后重新开始Debug
这样才能生效。
4 Breakpoint Properties中几个属性的介绍
在断点处右键 —— Breakpoint Properties 会进入如图的界面:

3 修改变量的值
什么时候用? 比如如果程序中某一个变量的值有问题,我们在调试时需要修改一下才能使程序运行下去。
(点击changeValue后弹出对话框)
4 几个需要掌握的用于调试的按钮
a: resume 英 [ri'zju:m] (重新开始) 点击后直接执行下一个断点,如果在循环中,执行下一次循环。
b: step into 一步一步执行
c: step over 一行一行执行,子函数也被看做是一步(main()里面调用print()使用step over一次就跳过了)
d: drop to frame 。
主要用途是
所有变量状态快速恢复到方法开始时候的样子重新执行一遍,即可以一遍又一遍地在那个你关注的
上下文中进行多次调试(结合改变变量值等其它功能),而不用重来一遍调试到哪里了。当然,
原来执行过程中产生的副作用是不可逆的(比如你往数据库中插入了一条记录)。
使用方式:
这种调试的回退不是万能的,只能在当前线程的栈帧中回退,也就说最多只能退回到当前线程的
调用的开始处。回退时,请在需要回退的线程方法上点右键,选择 "Drop to Frame"
5 异常断点 —— 帮助我们确定异常位置。
位置: 调试界面右上角,Breakpoints一栏中——add Java Excption BreakPoint
经常遇见一些异常,然后程序就退出来了,要找到异常发生的地方就比较难了,还好可以打一个异常断点,
这样一来,当异常发生时,代码会停在异常发生处,
定位问题时应该比较有帮助。
如何使用?
1 在控制台的出错信息中找到异常的名称
2 复制后打开debug界面,添加同名的异常断点
3 (如果只是为了找出异常出现的位置,不需要加断点)直接开始调试,程序就会停在异常出现的地方。
6 Expressions(非常灵活!强推!)
位置: 调试界面右上角Expressions一栏
通过添加表达式 Expressions 来查看各变量的值。
的(Add a new watch expression)符号。
书写代表某值的表达式: 如:sum, sum*3; getSum(); 等等
点击OK 可以查看结果如下:(查看结果相当方便吧,个人感觉比变量窗口更有用!)
比Varibles强大之处在于:
1 查看值的方式更加灵活,根据表达式可以查看任意的值。比如: 变量,变量表达式,方法的返回值
方法的返回值的表达式等等。sum, sum*3; getSum(); printRestule() 等等
参考资料包括:
黑马程序员许刚老师视频
2 http://eggbucket.iteye.com/blog/1381610(MyEclipse调试技术)
细说MyEclipse调试的更多相关文章
- windows + myeclipse 调试 linux + tomcat 的java web服务 配置方式
一.linux tomcat配置和启动 1.catalina.sh第一行加入 declare -x CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt ...
- myEclipse如何将程序部署到tomcat(附录MyEclipse调试快捷键)
部署 1.选中你要部署的项目,在工具栏找到 Deploy MyEclipse J2EE Project to Server 2.单击Add,即出现如下界面.选择相应的Server,要和你在配置tomc ...
- myEclipse怎样将程序部署到tomcat(附录MyEclipse调试快捷键)
部署 1.选中你要部署的项目,在工具栏找到 Deploy MyEclipse J2EE Project to Server 2.单击Add,即出现例如以下界面.选择对应的Server,要和你在配置to ...
- Myeclipse调试模式下自动提示变量值设置
1.Window->Preferences->Java->Editor->Hovers 将[Variable Values]选择即可,如果第一个[Combined Hover] ...
- myeclipse 调试JSP页面
http://jingyan.baidu.com/article/636f38bb1ef1aad6b9461048.html
- myeclipse下对tomcat项目进行debug断点调试
对于eclipse或myeclipse调试J2SE项目或小应用进行断点调试,大家都不陌生,只要设置断点,debug运行就OK了.但是如果是web项目,而项目是在容器中运行的,比如tomcat,resi ...
- MyEclipse 2015 CI 14发布(附下载)
支持Web和Node.jsd的JavaScript Debugger调试器,新版本功能更加强大,在MyEclipse调试web应用程序变得更方便.调试器支持断点.变量和表达式. 类的动态预加载用Hot ...
- jmeter测试本地myeclips调试状态下的tomcat程序死锁
在myeclipse调试状态下的tomcat程序,用jmeter测试,居然发生死锁,调试两天无果,直接运行tomcat而不通过myeclipse,无死锁,真是又好气又好笑..
- strut2读源码记录
首先你得准备一个很简单的struts2的程序,可以发一次请求后能返回一个正确的响应,当然,struts2的源码也要有,我这里用的myeclipse调试的,本来是想用eclipse,因为本人习惯于用ec ...
随机推荐
- O(nlogn)算法,最长上升子序列,,非动规
//最长上升子序列最快算法,非动态规划,运用了二分思想,还有栈的思想, //用每一个数去和栈中的栈顶元素相比较,如果大于栈顶元素,则入栈,否则运用二分查找,寻找出第一个比这个数大的那个数替换 #inc ...
- CCF-201503-1-图象旋转
问题描述 试题编号: 201503-1 试题名称: 图像旋转 时间限制: 5.0s 内存限制: 256.0MB 问题描述: 问题描述 旋转是图像处理的基本操作,在这个问题中,你需要将一个图像逆时针旋转 ...
- Openssl 生成证书server.key and server.crt
1.key的生成 openssl genrsa -des3 -out server.key 2048 这样是生成rsa私钥,des3算法,openssl格式,2048位强度.server.key是密钥 ...
- java.util.HashSet, java.util.LinkedHashMap, java.util.IdentityHashMap 源码阅读 (JDK 1.8)
一.java.util.HashSet 1.1 HashSet集成结构 1.2 java.util.HashSet属性 private transient HashMap<E,Object> ...
- 关于websorm卡顿的问题
要是电脑不卡的话,使用webstorm真可谓是一种享受,但是随着项目的开展,文件逐渐增大,webstorm自然也会出现卡顿(毕竟缺点就是吃内存),这个时候我们可以增加Xms设置 Start1: 1 找 ...
- Web前端学习——CSS
一.CSS简介CSS全称cascading style sheeding,层叠样式列表.CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化.二.CSS组成1.选择器(1) ...
- 初识java这个小姑娘(一)
忽然想起这样一个场景:那时我还是小学三年级的一个小学生,上课的铃声响起,文艺委员起头,大家开始胡乱的开始唱歌,"让我们荡起双桨,小船儿推开波浪",歌声在一片稚气中慢慢停止.我们的语 ...
- sqoop实现关系型数据库与hadoop之间的数据传递-import篇
由于业务数据量日益增长,计算量非常庞大,传统的数仓已经无法满足计算需求了,所以现在基本上都是将数据放到hadoop平台去实现逻辑计算,那么就涉及到如何将oracle数仓的数据迁移到hadoop平台的问 ...
- SQL基础教程读书笔记-2
4 数据更新 4.1数据的插入 1.清单{①列清单 ②值清单列清单和值清单的数量必须保持一致.原则上,执行一次INSERT语句会插入一行数据对表进行全列INSERT时,可以省略表名后的列清单2.插入默 ...
- Backbone简单示例
要的资源: <script type="text/javascript" src="../dep/underscore-1.6.0.min.js"> ...