Eclipse 调试技巧
2015-12-16 19:02
330 查看
引自:http://my.oschina.net/coda/blog/50654#comments
![](http://static.oschina.net/uploads/space/2012/0323/115228_YlO2_189760.png)
图例一
如图例一所示,当前断点在38行,如果我们想直接跳转到第52行(前提是第52行一定会被执行到),一般的做法是在第52行加上断点再按F8跳转到该行,其实,可以更简单一点:把光标直接移到第52行,然后按下CTRL + R (Run to line)。
如图例一,如果想预览下javaRule.eval(scriptRule)的结果,除了慢慢地打开右键,找到Watch,还有别的办法吗?
![](http://static.oschina.net/uploads/space/2012/0323/115442_SQLK_189760.png)
首先选中javaRule.eval(scriptRule):(1) CTRL + SHIFT + D 调用返回值的toString()方法来显示执行结果(2) CTRL + SHIFT + I 当一个类的toString()方法不包含我们想要查看的对象信息时,这个方式可以帮助我们查看对象内部信息。注意:这种方式都会附加一个和 CRTL + U 一样的效果,即执行选中的语句。
如图例一,我们想进第52行的for循环内部,查看方法是怎么处理"b2"的,除了在第52行加断点,不断地F8,还有别的方法吗?有:step1 : 在52行加断点:step2 : 在断点上右键,BreakPoint Properties...step3 : 勾中Conditionalstep4 : 在输入框中输入以下面的条件,点确定即可。
![](http://static.oschina.net/uploads/space/2012/0323/115638_w8yK_189760.png)
如图例一41行所示,如果javaEvalResult != scriptEvalResult,但我们又想进入if内部调试。怎么办呢?
![](http://static.oschina.net/uploads/space/2012/0323/115551_vY3T_189760.jpg)
在这个窗口中可以输入我们想要的值。把 javaEvalResult 改成false;
如图例一46行,bugs这个列表明明不为空,但现在想进if(bugs.isEmpty)内部调试,怎么办?写一条这样的语句,用ctrl + shift + D或ctrl + shift + I 或Ctrl + u执行:bugs = Collections.emptyList();然后就可以进入if内部调试了。
我们在调试过程中,临时加一条语句,不需要保存,使用CRTL + U或者CTRL
+ SHIFT + I/D执行这条语句。例如,我们可以在图例一第38行下,加一条语句:
![](http://static.oschina.net/uploads/space/2012/0323/115503_Fca3_189760.jpg)
这里只是举了一个例子,实际调试时可以加其它自己需要的语句。
一般的做法,随便改一点源代码,比如加一个空格,保存。即可以回退。还有一种快捷方式用F7,这种方式只能退到当前线程的调用的开始处。另外一种方式见第6条。
一个方法可能有多个地方调用,但有时我们在希望知道当前正在调试的方法是被哪个地方调用。下图显示的其实就是调用链。可以在双击某一项跳转到对应的方法内。
![](http://static.oschina.net/uploads/space/2012/0323/115617_Bkok_189760.jpg)
![](http://static.oschina.net/uploads/space/2012/0323/115228_YlO2_189760.png)
图例一
1. 跳转到指定语句
如图例一所示,当前断点在38行,如果我们想直接跳转到第52行(前提是第52行一定会被执行到),一般的做法是在第52行加上断点再按F8跳转到该行,其实,可以更简单一点:把光标直接移到第52行,然后按下CTRL + R (Run to line)。
2. 显示表达式结果
如图例一,如果想预览下javaRule.eval(scriptRule)的结果,除了慢慢地打开右键,找到Watch,还有别的办法吗?![](http://static.oschina.net/uploads/space/2012/0323/115442_SQLK_189760.png)
首先选中javaRule.eval(scriptRule):(1) CTRL + SHIFT + D 调用返回值的toString()方法来显示执行结果(2) CTRL + SHIFT + I 当一个类的toString()方法不包含我们想要查看的对象信息时,这个方式可以帮助我们查看对象内部信息。注意:这种方式都会附加一个和 CRTL + U 一样的效果,即执行选中的语句。
3. 给断点加条件
如图例一,我们想进第52行的for循环内部,查看方法是怎么处理"b2"的,除了在第52行加断点,不断地F8,还有别的方法吗?有:step1 : 在52行加断点:step2 : 在断点上右键,BreakPoint Properties...step3 : 勾中Conditionalstep4 : 在输入框中输入以下面的条件,点确定即可。![](http://static.oschina.net/uploads/space/2012/0323/115638_w8yK_189760.png)
4. 运行中改变变量值
(1)简单变量
如图例一41行所示,如果javaEvalResult != scriptEvalResult,但我们又想进入if内部调试。怎么办呢?![](http://static.oschina.net/uploads/space/2012/0323/115551_vY3T_189760.jpg)
在这个窗口中可以输入我们想要的值。把 javaEvalResult 改成false;
(2)复杂变量
如图例一46行,bugs这个列表明明不为空,但现在想进if(bugs.isEmpty)内部调试,怎么办?写一条这样的语句,用ctrl + shift + D或ctrl + shift + I 或Ctrl + u执行:bugs = Collections.emptyList();然后就可以进入if内部调试了。
5. 执行临时语句
我们在调试过程中,临时加一条语句,不需要保存,使用CRTL + U或者CTRL+ SHIFT + I/D执行这条语句。例如,我们可以在图例一第38行下,加一条语句:
![](http://static.oschina.net/uploads/space/2012/0323/115503_Fca3_189760.jpg)
这里只是举了一个例子,实际调试时可以加其它自己需要的语句。
6 .回退
一般的做法,随便改一点源代码,比如加一个空格,保存。即可以回退。还有一种快捷方式用F7,这种方式只能退到当前线程的调用的开始处。另外一种方式见第6条。
7.查看方法调用链
一个方法可能有多个地方调用,但有时我们在希望知道当前正在调试的方法是被哪个地方调用。下图显示的其实就是调用链。可以在双击某一项跳转到对应的方法内。![](http://static.oschina.net/uploads/space/2012/0323/115617_Bkok_189760.jpg)
相关文章推荐
- Linux 自检和 SystemTap
- Python 七步捉虫法
- 路由器的配置与调试
- 对于技术人员的出现了运行时间错误,是否要进行调试的解决方法
- JavaScript程序设计之JS调试
- 可以用来调试JavaScript错误的解决方案
- 如何调试异步加载页面里包含的js文件
- jQuery下的Ajax调试步骤
- 调试一段PHP程序时遇到的三个问题
- JavaScript高级程序设计 错误处理与调试学习笔记
- Javascript调试脚本的经验之谈第1/2页
- 在IE,Firefox,Safari,Chrome,Opera浏览器上调试javascript
- Android App调试内存泄露之Cursor篇
- Lua的编译、执行和调试技术介绍
- 10个调试和排错的小建议
- 调试PHP程序的多种方法介绍
- PHP调试函数和日志记录函数分享
- Visual Studio调试技巧汇总
- JavaScript使用DeviceOne开发实战(二) 生成调试安装包
- JavaScript如何调试有哪些建议和技巧附五款有用的调试工具