测试 Expressions

代码

     public static void main(String[] args) {
int x=100;
System.out.println("----");
System.out.println("----");
System.out.println("----"); int y=20;
int count=x/y;
System.out.println(count);
}

执行效果

----
----
----
5

添加Expressions

执行到y赋值的时候.  Expressions的value也有值了.

y==20 的value会显示false.

这里在测试误写了一个y=10

结果发现一个奇怪的现象,如果debug断点打在int y=20或之后的语句. 则Expressions的赋值有效.

代码执行结果为

----
----
----
10

说明cout=100/10

如果debug时端点打在int y=20之前,且直接用F8执行全部程序. 则执行结果为

----
----
----
5

说明y仍然为20 即cout=100/20

通过Expressions查看变量情况

在debug情况下, 对变量点击watch.则可观察debug期间变量的情况

参考


前言
现在我们很多人都是使用MyEclipse来进行开发,最近一段时间我也在使用MyEclipse,结合我自己使用过程中的经验以及搜罗的一些小技巧,在这里跟大家分享一下,帮助我们大家一起利用这些小技巧来提高我们的工作效率。
 
正题
我们都知道,在使用MyEclipse进行开发的时候并没有浪费什么时间,浪费时间的就是我们的调试工作了,下面介绍的是我们在调试时经常会用到的一些方法:
一、调试运行的快捷键:
    一般情况下,我们都是直接点击Server窗口的Run或者Debug运行服务器或则右击项目选择运行模式,下面介绍一个调试运行的快捷键Shift+Alt+D可以调出调试运行的菜单,然后我们可以选择我们需要运行的模式,常用的就是J,R和T,即Java程序调试,Web服务器调试和Junit测试调试模式。
Shift+Alt+D 弹出菜单后按J :Java程序调试
Shift+Alt+D 弹出菜单后按R :在Web Server上调试
Shift+Alt+D 弹出菜单后按T :在Junit Test上调试
 
二、Debug视图
   我们一进行Debug模式运行程序,那么就会提示我们进入Debug视图(或者在窗口的右上角去切换到Debug视图),然后这个视图默认给我们打开了很多个窗口,刚一看可能有些乱,但是对每一个窗口的作用稍作了解的话,你就会知道它的存在是多么的方便我们的调试。下面我们就分别来看下我们常常会用到的这几个小窗口:
1.Debug窗口
左上角有一个Debug窗口,这个窗口是用来跟踪调试时程序运行到哪行代码了;下面简单介绍下它的各个快捷的使用:
 
F5:跟入Step into, 一般会跟踪进入到调用函数的函数体,Step Over则不会跟踪进入,直接把调用当做一个语句处理。
 
F6:单步执行Step Over。 通常如果不关心该语句的调用细节,单步执行就可以了。
 
F7:返回到调用处Step Return。如果无意Step into了一个不需要关心的函数,或者没有必要再对某个函数跟踪了,直接F7返回到调用语句处。
 
ps:这个是我不太常用的,但是昨天尝试了一下真的很好用,因为有时总会不小心Step into到某某些函数然后又害怕执行过去所以一直往里面走,很浪费时间,学会了F7可以省去不少时间滴。
 
F8:运行至下一断点Resume。
 
这几个快捷键是我们调试时最常用到的,合理的配合使用这几个键可以帮助我们更加快速的定位出错的代码。下面举两个例子:
 
1)如何跳过一段循环
有的时候跟踪代码执行,无意中进入了循环中,看了几次发现没什么问题了。是不是要StepOver到循环结束呢,或许你会Step Return,那么循环下面的代码就跟踪不到了。这时候就要利用Resume这个有趣的特性了。
去掉旧断点(循环体内的),增加新断点(循环体外),然后Resume(F8)。
 
2)如何调试递归调用
还是要巧用F7(StepReturn)、F8(Resume)这两个键。
另外别忘了Debug模式中的Expressions视图(Window->showview-> Expressions)
把你关心的递归变量的表达式都add进来吧,这样看起来就比Variable轻松多了。
返回上一层递归,使用F7。跳过循环使用上面的方法。
 
还有巧设断点。直接让光标运行到你需要关注的地方。
在Expressions中添加能区分递归层次的表达式,这样你看起来就不会乱(不知道调用到哪一层了)。
 
2.Variables窗口
右上角第一个窗口就是Variables窗口,这个窗口是用来查看程序中变量或对象的值(只要是你程序中定义的或者调用的变量都会在这里显示出来),就可以知道变量或对象的值是不是你想要的。
 
3.Breakpoints窗口
右上角第二个窗口是Breakpoints窗口,这个窗口是显示你程序中所有的断点列表,可以通过该窗口将你的以前测试时设置的一些断点去掉(而不用去程序里面查找)。
 
4.Expressions窗口
右上角第三个窗口就是Expressions窗口,这个窗口有些类似于我们VS中的立即窗口,它不仅支持显示运算结果、数组元素,还可以显示方法返回值。你只需要将你关心的表达式写进来就可以了。
 
例如,我在Name列中输入表达式 s.equals("0")然后在对应的value列中出现对应的结果(true还是false)。

5.Console窗口
最下面就是控制台(这个窗口是我们常见的,如果没有看到的话,直接从左下角的快速视图中调出来即可),如果有打印的变量,在这个窗口中就可以看到这个变量输出的值;
 
小结:
   其实,我们平常的调试,只需要用到Debug,Variables和Console窗口就够了,但是如果错误比较隐蔽的话我们就需要借助Expressions窗口来帮我们更加细致的去查找错误根源。当然我们在这之前要先学会定位断点的位置(这个需要根据你的错误和程序进行分析,判断出大概的出错位置然后设置断点),再之后才是合理和巧妙的使用我们这些小窗口来帮助我们提高我们调试的效率。

eclipse debug小技巧的更多相关文章

  1. 工具——eclipse debug小技巧

    1.开启调试: 在代码编辑处右键单击,在弹出菜单中点击Debug As开始调试 2.几个快捷键: F5:跟入Step into, 一般会跟踪进入到调用函数的函数体,Step Over则不会跟踪进入,直 ...

  2. 软件——eclipse debug小技巧

    1.开启调试: 在代码编辑处右键单击,在弹出菜单中点击Debug As开始调试 2.几个快捷键: F5:跟入Step into, 一般会跟踪进入到调用函数的函数体,Step Over则不会跟踪进入,直 ...

  3. python debug小技巧&&工程能力的几点建议

    Debug小技巧: 转载请声明本文的引用出处:仰望大牛的小清新 1.初次编程时,在每一个if后面都写上else,这样,如果你的else原本是不应该运行的,那么就可以在else中输出此时的状态信息便于排 ...

  4. [Tools] Eclipse使用小技巧-持续更新

    [背景] 使用之中发现一些eclipse使用的小技巧,记录下来供以后查阅   Eclipse保存preferences,并导入到其他workspaces The Export wizard can b ...

  5. Eclipse全面提速小技巧

    转自:http://rongmayisheng.com/post/eclipse%E5%85%A8%E9%9D%A2%E6%8F%90%E9%80%9F 欢迎关注我的社交账号: 博客园地址: http ...

  6. Eclipse Photon 小技巧(tips)

    本文内容: Eclipse 4.8版本 代号 photon  光量子 ,感觉更像ide了,虽然这些技巧广为认知,但是作为eclipse来说,也是很重要的. Code completion allows ...

  7. Eclipse 那些小技巧(值得收藏)

    1.菜单命令系列 Edit→content Assist→add Alt+/ 代码关联 Windows→Next Editor→add Ctrl+Tab 切换窗口 Run→Debug Toggle L ...

  8. eclipse使用小技巧

    1.eclipse中SVN无版本信息显示,window-preference-general-appeerance-label decoration-svn勾上,显示有关项目中受 SVN 控制的资源的 ...

  9. eclipse的小技巧

    Eclipse 保存文件时自动格式化代码 很多同学不知道Eclipse有个很有用的功能,就是自动格式源代码的功能,一般大家都是直接Ctrl+Shift+F手动格式化,多浪费时间. 其实Eclipse里 ...

随机推荐

  1. 转: ASP.NET+ExtJs4.0+表单提交submit,上传图片到服务器

    http://blog.csdn.net/lmaohuanl/article/details/6792057 <!DOCTYPE html PUBLIC "-//W3C//DTD XH ...

  2. 《more effective c++》条款26 限制类对象的个数

    问题: 如何限制类对象的个数?比如1个,10个等等. 方法(1): 将类的构造函数定义为private,那么就无法实例化这个类了.但是如何创建1个对象出来?方法有2种: 1.声明一个友元函数,那么在友 ...

  3. c++ encode decode

    std::string UrlEncode(const std::string& szToEncode) { std::string src = szToEncode; char hex[] ...

  4. C# 入门篇之listview用法

    在用listview,经常对各种属性都不了解,用完了,下次又忘:写个随笔记记. 看到别人已经有总结很详细的,就直接转过来了,可能中间会有一些自己加的. ------------------------ ...

  5. 如何为libs目录下的jar包关联源代码

    以前,我们可以为lib目录下的jar包关联源代码,但是现在似乎不行了. 下面是一篇讲述此问题解决方法的文章: How to attach javadoc or sources to jars in l ...

  6. Java程序如何生成Jar、exe及安装文件

    http://blog.csdn.net/luoweifu/article/details/7628006/ 一.用Eclipse生产Jar文件 首先,看一下我的项目的目录结构: 1,项目名字上面点右 ...

  7. iOS学习笔记---C语言第五天

    二维数组   字符串数组   多维数组 二维数组的定义 类型  数组[常量表达式1][常量表达式2]={值1,值2...}; int a[2][3] = {7,8,3,2,8,5}; #import ...

  8. thrift在windows的编译/安装--c++版

    前言: thrift是出于Facebook的rpc网络编程框架, 其对跨平台和多语言的支持优于google protobuf, 但thrift在java/c#语言上应用比较多, 资料也丰富, 在win ...

  9. ZOJ 1067 Color Me Less

    原题链接 题目大意:一道类似于简单图像压缩的题目.给定一个调色板,然后把24位真彩色按照就近原则聚类. 解法:每个像素的色彩都是RGB三个值,相当于三维空间的一个点.所以当一个新的像素进来时,分别和调 ...

  10. ZOJ 1201 Inversion

    原题链接 题目大意:给一个数组{ A1,A2,…,An } ,要求生成另一个数组B1,B2,…,Bn,使得Bi表示的是在数组A中排在i前面大于i的数字的个数.题目的输入是数组A(字母P表示)或者数组B ...