breakpoint
大家肯定都用过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就设置好了。
6. Class Load Breakpoint
还有一种大家平时可能不太用的断点--Class Load Breakpoint,即当某个类被加载时,通过该断点可以中断程序。
转载于:https://www.cnblogs.com/sunnyleer/archive/2012/04/14/2446875.html
breakpoint相关推荐
- python中bin函数的用法_Python 3标准库用法--ascii()、bin()、breakpoint()函数
ascii(object) 就像函数 repr(),返回一个对象可打印的字符串,但是 repr() 返回的字符串中非 ASCII 编码的字符,会使用 \x.\u 和 \U 来转义.生成的字符串和 Py ...
- pycharm 调试(debug)模式时界面上的 mute breakpoint 是什么意思?(239)
mute breakpoint 的作用是程序在debug 模式时,执行到任何一个断点处,mute breakpoints 能让所有断点静音,点击执行,程序就能快速执行结束. 参考文章:idea单步调试 ...
- 在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-> ...
- SAP 电商云 UI 如何知道当前的 breakpoint 是 xl - extremely large?
研究 breakpoint.service.ts 的 resolveBreakpointsFromConfig 方法: 答案是文件 default-layout.config.ts 文件里硬编码的: ...
- SAP Spartacus breakpoint的决定逻辑
table.service.ts里的breakpointService: breakpointService是TableService的一个依赖: 运行时这个xl的breakpoint值从哪里来的? ...
- 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
- 使用dom breakpoint找到修改属性的javascript代码
Created by Jerry Wang, last modified on Sep 23, 2014 使用dom breakpoint能快速找到修改了某一个dom element的JavaScri ...
- 如何处理错误消息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 ...
- Visual Studio Code设置断点时出现Unverified breakpoint该咋办
有的时候在Visual Studio Code里选中某一行设置断点,发现代码行号前面的圆圈是空心的, 而期望的断点设置成功后,显示是这样的: 空心的圆圈前面弹出的提示"Unverified ...
- codeblocks调试问题--单步调试遇到breakpoint不停---不能单步调试--运行按钮是灰色但是没有dos窗口...
今天晚上调试的时候可能不小心改了设置,还是其它原因,codeblocks突然遇到breakpoint不停了,然后百度了一下,大部分是说project创建的问题,感觉和自己的问题不同,我的问题是所有的p ...
最新文章
- windows下一个,OracleServiceXXX和Oracle 关系实例
- sql server datetime转char的方法
- unity 异步加载网络图片_一个非常好用的AssetBundle资源加载器
- 基于JSON的高级AJAX开发技术
- javascript 将内容复制到剪贴板
- 算法高级(1)-概述
- 【简报】帮助你免费制作单页面个人网站
- c# webclient 保存会话信息_winform项目——仿QQ即时通讯程序16:会话列表的存储
- Android studio 2.3安装遇到的问题
- HttpCanary使用指南——静态注入器
- 入门-误差逆传播算法
- PHP laravel系列之迷你博客搭建
- 20155313 杨瀚 《网络对抗技术》实验三 免杀原理与实践
- 搭建邮件系统与使用第三方邮件发送平台优劣详解
- C# 脚本化实现方式探究
- Omniverse数字孪生实战
- 如何在Eclipse上创建新项目
- Web开发者的福利 30段超实用CSS代码
- MIXLY二次开发(傻瓜版)
- 基于Modbus RTU 485通信协议实现对PH、溶解氧传感器的数据采集
热门文章
- lumen 框架学习
- 熊猫直播助手服务器断开,熊猫直播发告别信正式关停服务器 总共运行1286天终于再见了...
- 以太网供电(POE)的关键技术解析
- 基于ROS节点多机协同(无人机/无人车)分析
- linux drm 架构 基础
- 微软小冰的“体面告别”
- “走进名企”——微软亚洲研究院
- 袁宝华 oracle,关键词优化难易分析_SEO优化难度分析 - 站长工具
- jlink怎么调试linux程序_Ubuntu12.10 使用JLink连接开发板用arm-gdb调试ARM程序
- Springboot企业邮箱发送邮件