Eclipse调试的三个小技巧

1.设置条件断点

项目异常中止后,总也找不到原因,在项目中应用了第三方类库的时候更可能发生这种情况。这种情况的原因有可能是代码中catch了异常但是没有做任何处理(最可恨的是还屏蔽了打印错误信息)。
下面以简短的例子进行说明

public class User{
    int id;
    String name;

    public User(int id, String name) {
        this.id = id;
        this.name = name;
    }
    public User(){

    }
//getXX  ignore there
//setXX  ignore there
}
public static void main(String[] args) {

        User userEmpty = new User();
        userEmpty = null;
        User user0 = new User(23, "12321");
        try {
            if (userEmpty.equals(user0)) {
                System.err.println("");
            }
        } catch (Exception e) {
//          e.printStackTrace();
        }
        }

这样一块代码,直接运行,异常终止,但是没有任何错误信息。调试这样的错误可能就有些麻烦了。如果使用条件断点,就会“柳暗花明”。
Eclipse中进入debug View,然后如下图所示,点击“Add java Breakpoint Exception”这里写图片描述
在弹出的对话框中输入NullPointerExcetion,点击确定。
再次运行
这里写图片描述
ok!,找到问题出处了。

2.查看对象的具体信息(这里不重写bean的toString())

将Main方法修改为如下内容:

public static void main(String[] args) {

        User user0 = new User(23, "12321");

        Map<String, User> userMap=new HashMap<String,User>();
        userMap.put("0", user0);
        System.err.println();
}

在打印空信息的那一行打下断点,运行查看map信息如下:
这里写图片描述
即使将每一个节点都展开,也不能看到user0的id和name信息。下面点击Variable View中的“Show Logical Structure”,如下图所示:
这里写图片描述
再次运行程序,查看变量
这里写图片描述
ok,用户信息出现了!

3.动态修改变量的值

将Main函数修改为如下内容:

    public static void main(String[] args) {

        User user0 = new User(23, "12321");
        System.err.println();
        System.err.println(user0);
        }

打印空信息的那一行打上一个断点,debug查看信息:
这里写图片描述
然后如下图所示,在Variables View中user0对象的name属性上右键单击选择“Change Values”,输入“erhuo”,确定。
这里写图片描述
F6单步调试,查看结果
这里写图片描述
ok,修改变量信息成功!

参考文章:

Effective Java Debugging with Eclipse

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值