Eclipse调试"陷阱"

原创 2004年07月01日 21:47:00

调试也有陷阱?

我想是有的, 今天就发现了一个. 如果以后还能发现, 再继续补充吧

自从今年四月正式写Java代码以来, 越来越惊叹于Java的神奇,且不说自动垃圾收集吧, 连她的调试也好像充满了神秘色彩 (不过,可能我的Java水平太菜了), 居然圈中一个函数, 能得出函数的最终返回结果, 那么调试器必须具备类似分析脚本的功能(我用的是Eclipse 2.1.3). 但是这种强大的功能有时候也会帮倒忙.

来看下面这段普通代码

 

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;


/*
 * IteratorDebuggingTrap.java 2004-7-1
 *
 *
 * chenxh
 */

/**
 * @author chenxh
 * 2004-7-1
 *
 *
 */
public class IteratorDebuggingTrap {

 public static void main(String[] args) {
  List list = new ArrayList();
  list.add("a");
  list.add("b");
  list.add("c");
  for (Iterator iter = list.iterator(); iter.hasNext();) {
   System.out.println(iter.next());
  }
  
 }
}

 

执行结果

a
b
c
没什么异常啊, 但是如果你在

System.out.println(iter.next());

加上断点, 并圈中iter.next()监视,

结果却是

b

很奇怪,不是吗. 仔细观察不难发现, 其实调试器本身也调用iter.next(),每过一次断点调用一次叠代子的next(), 结果还是和断点的多少有关的, 即监视的次数, 如果你在

for (Iterator iter = list.iterator(); iter.hasNext();) {

设置了断点, 结果回是

c

如果你再把代码的

 list.add("c");

去掉, 将会很不幸的得到一个运行时错误

java.util.NoSuchElementException

不过这没什么好大惊小怪的了,因为我已经清楚了出错的原因, 不过刚遇到这种情况是也许会很诧异.

注:我用的IDE是Eclipse, 我的java水平有限, 对一些主流的IDE比如JBuilder也都不怎么熟悉, 不知道像JBuider这样的工具是否也会出现这样的小陷阱

Eclipse高级调试技巧

记得刚刚毕业的时候,自己连断点也不会打,当时还在用JCreate ,就连毕业设计也是用 System.out 找 Bug 的,想想真的很笨。开始工作后,一个星期过去了,在一个 1 、 2 百万行的系统...
  • Alexlee1986
  • Alexlee1986
  • 2014年02月03日 17:45
  • 2222

eclipse常用调试快捷键

前言 掌握IDE调试快捷键方便我们快速定位程序bug位置,对于问题的解决和效率有巨大的帮助 调试最常用快捷键F5、F6、F7、F8 参考资料: Eclipse断点调试 eclipse调试java...
  • Fanpei_moukoy
  • Fanpei_moukoy
  • 2016年07月19日 15:54
  • 888

Eclipse的Debug调试技巧大全

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

Eclipse调试的三个小技巧

这里展示了Eclipse调试的三个小技巧:1.设置条件断点2.查看对象的具体信息;3.动态修改变量的值...
  • guchuanhang
  • guchuanhang
  • 2016年04月09日 17:21
  • 705

操作系统—陷阱、中断、异常

在操作系统中,陷阱,中断和异常是常见的术语,它们贯穿操作系统学习的始终,这篇文章主要区分它们之间的不同。 陷阱 计算机有两种运行模式:用户态, 内核态。 其中操作系统运行在内核态,在内核态中,操作...
  • qq_30866297
  • qq_30866297
  • 2016年07月27日 16:20
  • 638

tomcat和eclipse调试servlet教程

      本教程将教您对在eclipse中使用tomcat对一个简单的servlet进行debug的设置流程。在eclipse里有很多插件可以帮助你进行配置,他们都基本上都试图对本教程中所描述的内容...
  • milooxu
  • milooxu
  • 2011年02月18日 00:40
  • 3927

调试基础 eclipse C++ 断点调试

转载:http://langgufu.iteye.com/blog/1168366 Debug---Eclipse断点调试基础 博客分类: 开发工具IDEJAVA基础知识 debu...
  • hewusheng10
  • hewusheng10
  • 2016年03月14日 14:15
  • 2490

Eclipse的Debug调试技巧

作为开发人员,掌握开发环境下的调试技巧十分有必要。我们在编写java程序的过程中,经常会遇到各种莫名其妙的问题,为了检测程序是哪里出现问题,经常需要增加日志,看变量的值,这样调试很麻烦。假设我每天花费...
  • sdksdk0
  • sdksdk0
  • 2016年04月24日 23:19
  • 19421

Android+NDK+Eclipse调试

android调试c++代码环境搭建
  • buck84
  • buck84
  • 2015年02月12日 11:48
  • 2123

android 使用eclipse 调试 so

Eclipse+CDT+GDB调试android NDK程序 Eclipse+CDT+gdb调试android ndk程序 先介绍一下开发环境,在这个环境下,up主保证是没有问...
  • chenghai2011
  • chenghai2011
  • 2012年05月24日 10:18
  • 7151
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Eclipse调试"陷阱"
举报原因:
原因补充:

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