大家肯定都用过Eclipse的调试的功能,在调试的过程中自然也无法避免要使用断点(breakpoint),但不知是否对Eclipse中各类断点都有所了解。本篇图文并茂地介绍了Eclipse中全部类型的断点,及其设置,希望对大家有所帮助。(2011.11.20)

1. 示例程序
BreakpointDemo是一个臆造的应用程序,只是为了便于讲解Eclipse中各类断点的使用罢了。其代码如下图所示,

BreakpointDemo主要包含两个方法:
[1]setValue,该方法根据指定的次数(count),对成员变量value进行赋值,值的范围为0-9的随机整数。
[2]printValue,该方法会调用setValue()对value进行赋值,并打印出value的值;但,如果value能被3整除,那么就会抛出IllegalArgumentException异常。

2. Line Breakpoint
Line Breakpoin是最简单的Eclipse断点,只要双击某行代码对应的左侧栏,就对该行设置上断点。此处,对第20行代码设置上Line Breakpoint,如下图所示,

可以为Line Breakpoint设置一个条件,那么当程序运行到该断点时,只有满足设定的条件,才会被中断。右键点击第20行的断点,选择"Breakpoint Properties..."

在弹出的属性对话框中,勾选上"Conditional",然后在文本框中输入"count % 2 == 0"。

该条件表示,当程序运行到第20行时,只有当count为偶数时,程序才会被中断。细心地话,你会发现该断点的图标发生了改变,多了一个问号。

3. Watchpoint
Line Breakpoint关注于程序运行的"过程",大家也常把使用这种断点的调试称为单步调试。但有时候,我们对程序的运行过程不太了解,可能也不太关心,不能确定在什么地方设置断点比较合适,而可能比较关注某个关键变量的变化或使用。此时,就可以为该变量设置一种特殊的断点--Watchpoint。在此示例,我们最关心的就是成员变量value的值,那么就可以为它设置一个Watchpoint,双击第9行代码对应的左侧栏就可以了。

使用在2中所提及的方法,查看该断点的属性,

默认地,当该变量被访问或它的值被修改时,程序都会被中断。但在本示例中,只希望当对value的值进行修改时程序才需要被中断,所以取消对"Access"的勾选。

这时,我们会发现原来的Watchpoin图标也有变化了。

4. Method Breakpoint
与关注对某个变量的访问与修改一样,我们也可以关注程序对某个方法的调用情况,即,可以设置Method Breakpoint。在此处,设置针对方法setValue的Method Breakpoint。同理,双击第11行代码对应的左侧栏即可。

仍然要查看该断点的属性。默认地,只勾选了"Entry",而没有勾选"Exit"。

这表示,当刚进入该方法(调用开始)时,程序会被中断;而,离开该方法(调用结束)时,程序并不会被中断。在本示例中,需要同时勾选上"Exit"。

点击OK之后,可以看到该断点的图标也有所改变。

根据这里的设置,当程序运行到第20行后会在第12行被中断,尽管这里没有显式的断点,但这就是setValue()方法的入口(Entry)。必须注意地是,程序在运行到第16行时不会被中断,尽管它看起来像是setValue()方法的出口(Exit)。实际上,程序会在第17行被中断,这里才是setValue()调用结束的地方。

5. Exception Breakpoint
如果,我们期望某个特定异常发生时程序能够被中断,以方便查看当时程序所处的状态。通过设置Exception Breakpoint就能达到这一目标。本示例故意在第23行抛出了IllegalArgumentException异常,我们期望程序运行到此处时会被中断。但我们不直接为此行代码设置Line Breakpoint,而是为IllegalArgumentException设置Exception Breakpoint。设置Exception Breakpoint的方法与其它类型断点都不同,它不能通过双击左侧栏的方式在代码编辑器上直接进行设置。点击Breakpoints视图右上角形如Ji的图标,

会弹出如下所示的对话框,

在其中选中IllegalArgumentException,并点击OK,这时一个Exception Breakpoint就设置好了。

当value为3的倍数时,程序会在第23行被中断,这时我们就能使用调试器来看看value具体是等于0,3或6。

6. Class Load Breakpoint
还有一种大家平时可能不太用的断点--Class Load Breakpoint,即当某个类被加载时,通过该断点可以中断程序。

转载于:https://www.cnblogs.com/sunnyleer/archive/2012/04/14/2446875.html

breakpoint相关推荐

  1. python中bin函数的用法_Python 3标准库用法--ascii()、bin()、breakpoint()函数

    ascii(object) 就像函数 repr(),返回一个对象可打印的字符串,但是 repr() 返回的字符串中非 ASCII 编码的字符,会使用 \x.\u 和 \U 来转义.生成的字符串和 Py ...

  2. pycharm 调试(debug)模式时界面上的 mute breakpoint 是什么意思?(239)

    mute breakpoint 的作用是程序在debug 模式时,执行到任何一个断点处,mute breakpoints 能让所有断点静音,点击执行,程序就能快速执行结束. 参考文章:idea单步调试 ...

  3. 在IAR 中出现the stack plug-in failed to set a breakpoint on main

    在IAR AVR中出现the stack plug-in failed to set a breakpoint on "main" Project->Options-> ...

  4. SAP 电商云 UI 如何知道当前的 breakpoint 是 xl - extremely large?

    研究 breakpoint.service.ts 的 resolveBreakpointsFromConfig 方法: 答案是文件 default-layout.config.ts 文件里硬编码的: ...

  5. SAP Spartacus breakpoint的决定逻辑

    table.service.ts里的breakpointService: breakpointService是TableService的一个依赖: 运行时这个xl的breakpoint值从哪里来的? ...

  6. SAP Fiori Elements - how to set breakpoint to get converted xml view parsed by f

    how to set breakpoint to get converted xml view parsed by framework

  7. 使用dom breakpoint找到修改属性的javascript代码

    Created by Jerry Wang, last modified on Sep 23, 2014 使用dom breakpoint能快速找到修改了某一个dom element的JavaScri ...

  8. 如何处理错误消息Unable to install breakpoint due to missing line number attributes

    Created by Wang, Jerry, last modified on Mar 11, 2017 Unable to install breakpoint due to missing li ...

  9. Visual Studio Code设置断点时出现Unverified breakpoint该咋办

    有的时候在Visual Studio Code里选中某一行设置断点,发现代码行号前面的圆圈是空心的, 而期望的断点设置成功后,显示是这样的: 空心的圆圈前面弹出的提示"Unverified ...

  10. codeblocks调试问题--单步调试遇到breakpoint不停---不能单步调试--运行按钮是灰色但是没有dos窗口...

    今天晚上调试的时候可能不小心改了设置,还是其它原因,codeblocks突然遇到breakpoint不停了,然后百度了一下,大部分是说project创建的问题,感觉和自己的问题不同,我的问题是所有的p ...

最新文章

  1. windows下一个,OracleServiceXXX和Oracle 关系实例
  2. sql server datetime转char的方法
  3. unity 异步加载网络图片_一个非常好用的AssetBundle资源加载器
  4. 基于JSON的高级AJAX开发技术
  5. javascript 将内容复制到剪贴板
  6. 算法高级(1)-概述
  7. 【简报】帮助你免费制作单页面个人网站
  8. c# webclient 保存会话信息_winform项目——仿QQ即时通讯程序16:会话列表的存储
  9. Android studio 2.3安装遇到的问题
  10. HttpCanary使用指南——静态注入器
  11. 入门-误差逆传播算法
  12. PHP laravel系列之迷你博客搭建
  13. 20155313 杨瀚 《网络对抗技术》实验三 免杀原理与实践
  14. 搭建邮件系统与使用第三方邮件发送平台优劣详解
  15. C# 脚本化实现方式探究
  16. Omniverse数字孪生实战
  17. 如何在Eclipse上创建新项目
  18. Web开发者的福利 30段超实用CSS代码
  19. MIXLY二次开发(傻瓜版)
  20. 基于Modbus RTU 485通信协议实现对PH、溶解氧传感器的数据采集

热门文章

  1. lumen 框架学习
  2. 熊猫直播助手服务器断开,熊猫直播发告别信正式关停服务器 总共运行1286天终于再见了...
  3. 以太网供电(POE)的关键技术解析
  4. 基于ROS节点多机协同(无人机/无人车)分析
  5. linux drm 架构 基础
  6. 微软小冰的“体面告别”
  7. “走进名企”——微软亚洲研究院
  8. 袁宝华 oracle,关键词优化难易分析_SEO优化难度分析 - 站长工具
  9. jlink怎么调试linux程序_Ubuntu12.10 使用JLink连接开发板用arm-gdb调试ARM程序
  10. Springboot企业邮箱发送邮件