早晨来到公司发现一片比较好的文章,如果早看到,就不用自己一点一点的摸索debug的技术了。
转发记录一下。
Debug视图
认识debug视图,红色部分框为线程堆栈视图,黄色部分框为表达式、断点、变量视图,蓝色部分为代码视图。
线程堆栈视图
分别介绍一下这几个按钮的含义:
1.表示当前实现继续运行直到下一个断点,快捷键为F8。
2.表示打断整个进程
3.表示进入当前方法,快捷键为F5。
4.表示运行下一行代码,快捷键为F6。
5.表示退出当前方法,返回到调用层,快捷键为F7。
6.表示当前线程的堆栈,从中可以看出在运行哪些代码,并且整个调用过程,以及代码行号
变量视图
1.为变量名视图,显示当前代码行中所有可以访问的实例变量和局部变量
2.显示所有的变量值
3.可以通过该窗口来改变变量值
断点视图
1.显示所有断点
2. 将当前窗口1中选中的端口失效,再次点击启用。
3.异常断点
表达式视图
表达式视图:表达式视图是Debug过程中较为常用的一个视图,可以对自己的感兴趣的一些变量进行观察,也可以增加一些自己的表达式,也可以查看一行代码的运行结果。
1.表达式
2. 点击此可以新增一个表达式
代码视图
代码视图:用来显示具体的代码。其中绿色部分是指当前将要执行的代码
场景一:小明辛苦了两天终于将自己的负责的任务完成了,第二天转测后,测试找到了小明说,小明的程序有bug,可以是小明经过仔细调试,发现本地没有任何问题,但是测试的环境上确实有问题,所以小明遇到了难题,测试的环境linux,又不能上去linux去debug,小明这个时候想要是Linux也可以debug就好了.
远程debug
远程debug:远程debug顾名思义,能够将远程操作系统上的任何java进行debug,但是有前提是本地需要有同步的代码。
1.远程debug的步骤是在远程操作系统上启动java进程时增加特殊的
-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=$DEBUG_PORT,server=y,suspend=n
2.在Eclipse中新建一个Remote Java Application
远程debug
1.打开Debug Configurations视图
2.右击Remote Java Application,
New
3.选择源码工程
4.输入远程IP和端口,端口即服务
端的$DEBUG_PORT,点击OK。
场景一:小明写了一个任务执行者,该执行者不间断的执行一些任务,在现网上运行了一段时间后,发现有概率的出现一些故障,发现运行一段时间后,该任务者异常退出了,退出的因为是空指针,可以小明想要在本地debug,不知道断点打在哪里,该问题是概率事件,不一定会出现,所以小明debug几遍下来后,头晕眼花,连代码都看不清楚了,小明想要是能有个断点每当出现空指针异常的时候就停下来让他发现问题,那该多好呀。
异常断点
异常断点:在定位问题的过程中,常常会遇到断点无法打到合适的位置,以至于和问题的触发点千差万别,所以这个时候不妨试试异常断点,顾名思义,异常断点是指抛出某种异常后自动挂起的断点。
点击红色部位,增加一个异常断点
输入想要定位的异常类型,例如NullPointerException,这样系统中抛出任何NullPointerException异常后,都会挂起当前线程,给你机会去定位问题。
场景一:小明写了一个巨大的循环,在调测代码时,小明发现每当循环到第100000次的时候,就是出现问题,没有达到自己的预期,于是小明在循环里打了个断点,想看看到底怎么回事,可小明万万没有想到,想要到达100000次循环是多么的困难,小明这个时候已经开始浮想联翩,如果能有这样的断点:
If 循环次数== 100000,线程停下来
条件断点
如右图,循环1000次,如果想要在循环到500
次的时候停下来,可以创建一个条件断点,右
击断点悬着Breakpoint Properties。
选中Enable Condition
在空白处,添加你自己的条件,如果条件返回true,线程会被挂起,如果为false,则忽略该异常
Hit Count为该断点经过多少次后,正式挂起线程,如果设置为500,则表达前499次,经过该断点都不会停下,当第500次,该断点会挂起当前线程。
表达式
表达式可以查看一些在当前代码中没有的命令行,方便定位问题。
场景一:小明最近遇到一个难题,在调用一个第三方插件时总是会有问题,小明怀疑是第三方插件的bug,但小明没有找到源码不能进行debug,小明该怎么办呢?
Debug定位第三方插件的问题
1.使用反编译工具将代码反编译
2.将反编译后的源码进行过滤
3.修复源码编译错误
4.进行debug
Debug一些经验
1.尽量减少debug,少用debug,优秀的程序员总是花80%的时间来思考如何解决问题,20%的时间来动手完成代码,而糟糕的程序员总是用20%的时间去写代码,80%的时间去调试代码,动手之前尽量想好如何去做,并且已经为你自己的思路做了充分的实验。
2.尽可能的提高debug的效率,设置合适的断点,使用快捷键。
3.debug的F6快捷键经常用到,它与金山词霸的快捷键冲突,所以在debug的时候最好将金山词霸关掉。
4.debug的表达式是可执行代码,将会对代码结果产生永久性影响,在调试时注意,经常将不用的表达式清除掉。
原文链接:
http://mgoann.iteye.com/blog/1396637
-------------------------------------------------------------------------------------------------------
发现 原文的作者貌似忘记了display的使用,这里补充一下呵呵。
有时候在debug到一行代码的时候,要自己再写一些代码进行验证,这时候就可以使用一下display了。
类似下面的这张图
分享到:
相关推荐
以下是对Eclipse使用说明及快捷键的详细说明: 1. **运行配置 (Run Configuration)**:在Eclipse中,你可以创建并管理不同的运行配置。例如,如果你正在开发一个Java应用程序,你可以通过"Run Configurations"来...
eclipse项目配置说明 本篇文章主要讲解了Eclipse项目配置的相关知识点,涵盖了项目配置环境变量、数据库连接、日志记录、Eclipse性能优化等方面的内容。 一、项目配置环境变量 在Eclipse项目中,配置环境变量是...
17. org.eclipse.debug.core.launchConfigurationComparators:声明用于比较运行配置的比较器,以便在列表中按特定顺序排列。 18. org.eclipse.debug.core.launchConfigurationTypes:定义运行和调试不同程序的配置...
13. **透视图**:透视图允许用户根据当前任务调整Eclipse的工作环境,例如,开发者可以选择Java透视图专注于编码,或者选择Debug透视图进行调试。 14. **导入和导出项目**:如果需要将项目从一个Eclipse工作区转移...
以下是对Eclipse中常见图标及其含义的详细说明: 1. **Objects**: - **Compilation Unit(*.java 文件)**:表示一个Java源代码文件,通常包含一个或多个类定义。 - **Class File**:编译后的字节码文件,对应于...
通过"Run Configurations"或"Debug Configurations"进行配置,选择合适的运行或调试配置,可以根据项目的类型和需求来切换。 3. **修改字符集**:在“Window”菜单下选择“Preferences”,然后导航到“General” ->...
中的内容可能包括详细的安装步骤或插件的下载链接,例如“eclipse中tomcat插件安装说明.txt”可能是详细的安装指南,“tomcatPluginV33.zip”可能是插件的下载包,用户需要根据文件内容进行实际操作。 总之,安装...
它包含了Eclipse平台、JDT(Java Development Tools)和PDE(Plug-in Development Environment)等核心组件的详细接口和类的说明,以及丰富的示例代码,为开发者提供全面的技术支持。 Eclipse作为一个开源的集成...
2. **Eclipse JDT Debug**: 虽然不是专门用于查看源码的插件,但Eclipse的内置调试器提供了强大的源码查看功能。通过断点调试,你可以逐步执行代码并查看每一步的源码。 3. **JD-Eclipse**: JD-Eclipse是一个反...
以上步骤和说明,是基于当前技术状态对Eclipse使用Gradle进行打包操作的详细描述。需要注意的是,由于Eclipse不是官方推荐的Android开发环境,部分操作可能需要开发者自己探索和适配,而且官方推荐开发Android应用时...
本文将详细介绍如何通过 Eclipse 集成开发环境(IDE)进行 Node.js 应用程序的调试。 #### 一、安装 Google V8 Eclipse 插件 为了实现 Eclipse 与 Node.js 的调试功能,首先需要安装一个关键的插件——Google V8 ...
TC13-Teamcenter开发模式主要涉及使用Eclipse RCP(Rich Client Platform)进行应用程序的构建。RCP是Eclipse框架的一部分,它提供了一个可扩展的平台,用于创建桌面应用程序,特别适合企业级的定制化开发。在...
本压缩包"tomcat_debug.rar"提供了在Eclipse中与远程Tomcat服务器进行调试的配置方法。 首先,我们来看`setenv.bat`文件。这个文件是Tomcat启动时用来设置环境变量的批处理脚本。在远程debug场景下,我们需要在这个...
Eclipse 本人整理的目前最全的资料:内涵Eclipse中文教程pdf,Codeblocks中文教程pdf Eclipse C/C++调试方法、文档、问题说明 CDT配置 GDb调试工具。另有Eclipse C、C++(CDT)开发文档pdf。绝对值!
在下载的压缩包中,"下载之家下载说明.txt"很可能是提供下载和安装Eclipse的指南,而"eclipse"这个文件可能就是Eclipse IDE的安装程序或者解压后的文件夹,包含了所有运行Eclipse所需的基本组件和配置。 安装...
解决问题:eclipse调试显示jdk源码变量 如何使用:下载后放在jdk目录“jre\lib\endorsed”下,如果“endorsed”不存在就新建一个。 说明:适用于jdk1.8 参考链接: ...
以下是对Eclipse 6.0及其相关知识点的详细说明: 1. **Eclipse IDE的基本结构**:Eclipse由工作台(Workbench)、透视图(Perspective)、视图(View)和编辑器(Editor)等核心组件构成,提供了一个灵活且可扩展的...
4. 如何使用Eclipse进行开发,包括启动Eclipse并进行设置、新建和配置工程、编译和清除程序,以及使用Eclipse进行程序调试。 5. 附录中提供了u-boot的使用简要说明。 本教程还特别提到了如何改造u-boot以支持Nor/...
以下是对使用Eclipse进行嵌入式软件开发和调试的详细说明: 1. **Eclipse安装与配置**:首先,你需要从官方网站下载适合你的操作系统的Eclipse IDE。安装完成后,为了支持嵌入式开发,你需要安装C/C++开发工具(CDT...
- 使用Eclipse的Debug功能对应用进行调试。 - 设置断点、观察变量值等常用调试手段。 #### 五、总结 通过以上步骤,我们已经完成了Eclipse + Android开发环境的搭建。从软件准备到环境配置再到创建和运行第一个...