Debug在中Eclipse的应用

1.debug在eclipse中的显示。(可以点击右上角debug进入)

Debug视图允许您在工作台上管理正在调试和运行的程序,他显示了你正在调试的程序中挂起的线程的堆栈帧,程序中的每个线程作为树的节点出现。他展示了正在运行的每个目标的进程。如果线程被挂起,它的堆栈帧以子元素的形式展示。以下是一些常用的debug按钮:

Skip
All Breakpoints:
:将所有断点设置为被跳过的,设置了Skip All Breakpoints之后,所有断点上都会有一个斜线,表示断点将被跳过,线程不会在该断点处被挂起。

Drop
to Frame:
这个命令可以让程序回到当前方法的开头第一行重新开始执行,可以重新执行这个java堆栈帧,可以选择一个指定的堆栈帧,然后点击
Drop to Frame
,这样就可以重新进入指定的堆栈帧。使用Drop to Frame时候需要注意:

1.不能drop到已经执行过的方法栈中的方法中。

2.drop到stack frame中时,不会改变全局数据原有的值,比如,一个包含元素的vertor并不会被清空。

Step
Filters:
这个功能比较简单,就是当我们在debug的时候想要忽略一些我们不关注的类时,可以开启Step Filters进行过滤,程序会一直执行直到遇到未经过滤的位置或断点。Step Filters功能由Use Step FiltersEdit Step FiltersFilter TypeFilter Package四项组成。具体操作如下:

步骤 1: Windows -> Preferences -> Java -> Debug -> Step Filtering.

步骤 2:选择‘Use Step Filters’.

步骤 3:在屏幕上选中所需的选项。你可以添加你自己代码库中的部分代码。

步骤 4:点击‘Apply’.

  原理上,Edit Step Filter命令用于配置Step Filter规则,而Filter TypeFilter Package分别指的是过滤的Java类型与Java Package。

Step
Return(F7):
跳出当前方法,在被调用方法的执行过程中,使用Step Return会在执行完当前方法的全部代码后跳出该方法返回到调用该方法的方法中。

Step
Over(F6):
在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完在停止,也就是把子函数整个作为一步。

Step
Into(F5):
单步执行,遇到子函数就进入并且继续单步执行

Resume(F8):恢复暂停的线程,直接从当前位置跳到下一个断点位置。

Suspend:暂停选定的线程,这个时候可以进行浏览或者修改代码,检查数据等。

Eclipse通过Suspend与Resume来支持线程的暂挂与恢复。一般来讲,Suspend适用于多线程程序的调试,当需要查看某一个线程的堆栈帧及变量值时,我们可以通过Suspend命令将该线程暂挂。Resume用于恢复。有两种Resume需要注意:第一是当在调试过程中修改程序代码,然后保存,点击Resume,此时程序会暂挂于断点。第二是当程序抛出异常时,运行Resume,程序也会暂挂于断点。

Terminate:Eclipse通过Terminate命令终止对本地程序的调试。

Disconnect:Eclipse使用Disconnect命令来终止与远程JVM的socket连接。

Variables View显示与Debug View中选定的堆栈帧相关的变量信息,调试Java程序时,变量可以选择将更详细的信息显示在详细信息窗格中。此外,Java对象还可以显示出其包含的属性的值。在该窗口中选中变量鼠标右键点击可以进行许多操作,主要操作有以下这些:

All Instances:打开一个对话框来显示该java类的所有实例,使用该功能需要java虚拟机支持实例的检索。

All References::打开一个对话框来显示所有引用了该变量的java对象,

Change Value::更改变量的值,该功能可以和Drop to Frame联合使用进行程序的调试。使用这两个功能就可以代替重新debug

Copy Variables:复制变量的值,尤其在变量值很长(比如json数据)的时候,这个功能就派上用场了。

Find:有的时候一个类中变量特别多的时候,可以进行查找。

Breakpoints View将列出你在当前工作区间里设置的所有断点,双击断点可以进入到程序中该断点的位置。还可以启用或禁用断点,删除,添加新的,根据工作组或点命中计数给他们分组。在使用断点是有以下两个技巧是十分有用的:

Hit Count: 是指定断点处的代码段运行多少次,最典型的就是循环,如果要让一个循环执行10次就线程挂起,则指定Hit Count值为10,那么当前的循环执行到第九次的时候就会挂掉。

Conditional:顾名思义,就是条件判断,例如我们需要循环变量i==10时,线程挂起,则条件设定为i==10,选择Suspend when “true”。

那如果上面的Hit Count和Conditional都选择的话,如果表达式和值设置不合理则会实效。如果选择Suspend when value changes,那么可能在Conditional在变量值发生改变的时候就挂起。

要在 Debug 透视图的编辑器中求表达式的值,选中设置有断点的一整行,并在上下文菜单中选择 Inspect 选项。表达式是在当前堆栈帧的上下文中求值的,其结果显示在 Display 窗口的 Expressions 视图中。

可以使用这个视图,输入或者演算一些新的代码。这些代码在当前的调试位置的上下文环境中被执行,这意味着,你可以使用所有变量甚至是内容助手。要执行你的代码的话,只需标记它,并使用右键菜单或者CTRL+U(执行)或者 CTRL+SHIFT+I (检查).。

条件断点

在源代码文件中,在想要设置断点的代码行的前面的标记行处,双击鼠标左键就可以设置断点,在相同位置再次双击即可取消断点。有的时候我们还有这样的需要,就是我并不想一行一行的执行代码,比如一个for循环会循环1000多遍,我只想在第500遍的时候让线程挂起进行调试,这个时候我们可以使用条件断点
设置条件断点:我们可以给该断点设置触发条件,一旦满足某条件是才开始调试,可以在断点处点击鼠标右键,选择Breakpoint Properties进入断点设置页面,刚刚在讲断点视图的时候我们学到过Hit CountConditional的用法,这里可以设置条件和执行次数。

远程调试

在进行Java的web开发时,通常服务器都是在linux服务器上搭建的,不方便调试。那我们怎样在本地调试linux运行的程序呢?

首先得在linux中tomcat下进行相应的设置,具体在tomcat目录下calalina.sh,详见下图:

调试好远程debug端口后,在本地eclipse配置远程调试,点击debug图标出现下拉菜单,选择debug configration选项进入debug设置页面。或者选择要调试的项目,右键选择debug,在选择debug configuration选项也可以进去设置页面。

时间: 2024-09-29 17:33:14

Debug在中Eclipse的应用的相关文章

tomcat-Eclipse中Tomcat能正常启动,但是在debug模式中不能正常启动。

问题描述 Eclipse中Tomcat能正常启动,但是在debug模式中不能正常启动. 解决方案 症状: tomcat在eclipse里面能正常启动,而在浏览器中访问http://localhost:8080/不能访问,且报404错误.同时其他项目页面也不能访问. 关闭eclipse里面的tomcat,在tomcat安装目录下双击startup.bat手动启动tomcat服务器.访问htt://localhost:8080/能正常访问tomcat管理页面. 症状原因: ?????? e.....

Android开发中Eclipse报错及对应处理方法总结_Android

本文较为详细的总结了Android开发中Eclipse报错及对应处理方法.分享给大家供大家参考,具体如下: 报错1: Conversion to Dalvik format failed with error 1 报错原因:原因是我在android工程中不小心多导入Java的mina,结果一跑程序就报这个错误. 解决方法:将Java中用到的mina包移除,就OK了. 小结:以后遇到这种报错时,记得提醒自己可能是由于自己导错包了. 附: 网上其他处理方法:<丢失Android系统库或者Conver

android-Android开发问题,安卓环境搭建完成后,调试过程中eclipse报错的问题

问题描述 Android开发问题,安卓环境搭建完成后,调试过程中eclipse报错的问题 安卓环境搭建 eclipse报 The connection to adb is down and a severe error has occured.You must restart adb and Eclipse.Please ensure that adb is correctly located at 'D:shithashadt-bundle-windows-x86_64-20140321sdk

android-Android 调试中eclipse一直提示adb.exe停止工作

问题描述 Android 调试中eclipse一直提示adb.exe停止工作 如题,已试过:各种重启不行,更换带补丁adb.exe不行,重新配置环境变量不行,禁用电脑上管理软件不行 求大神解决 解决方案 把eclipse卸载重新安装,或者安装个新版本的eclipse 或者,用以下的adb.exe试试 下载已经修改最大连接数的adb.exe地址:http://code.google.com/p/android/issues/detail?id=12141 解决方案二: 下一个豌豆荚 什么都好说 解

Ubuntu中Eclipse按钮失效解决方法

症状:在Ubuntu9.10中,Eclipse很多按钮用鼠标点击失效,必须用键盘操作. 解决方法: gedit ~/.bashrc 在文件末尾加入:export GDK_NATIVE_WINDOWS=1 问题解决. 或者export GDK_NATIVE_WINDOWS=1,在每次启动前运行一下,也可以在.profile中加入改环境变量.

解决NDK开发中Eclipse报错“Unresolved inclusion jni.h”的最终方法

在做NDK开发过程中有时候在eclipse里会遇到其无法处理inclusion导致symbol显示错误,网上有许多方法可以解决类似"Unresolved inclusion jni.h" 错误的方法,包括include path等方法,不过对我都不管用. 最终的解决办法就是初始化eclipse对该project的native support: 在eclipse中关闭指定Project 用其他编辑工具打开该project的.project文件,删除以下内容: ...... <bui

windows系统中eclipse C开发环境的架设

虽然c有很多经典的开发环境,但是大多数是linux或unix下的,对于windows的忠实用户来讲,可能并不习惯. windows环境中,有一个dev-c++可以做c代码的调试,但这个软件貌似已经停止更新了,而且个人觉得它也不够时尚,有点过时了.所以windows平台中,我更倾向于推荐eclipse环境 1.下载Eclipse IDE for C/C++ Developers 地址:http://www.eclipse.org/downloads/ 或 http://www.eclipse.or

使用IBM WebSphere Application Server中Eclipse插件简化开发

本文将介绍如何使用 http://www.aliyun.com/zixun/aggregation/13387.html">WebSphere Application Server Developer Tools for Eclipse 插件简化对数据访问应用程序的开发,以便将应用程序发布在轻型应用程序服务 Liberty 配置文件环境中.本文包含一个基于 JPA 的示例数据访问应用程序,用于演示 Liberty 配置文件的动态功能. Liberty 配置文件是 IBM WebSphere

解决NDK开发中Eclipse报错Unresolved inclusion jni.h的最终解决方法(已测)_Android

在做NDK开发过程中有时候在eclipse里会遇到其无法处理inclusion导致symbol显示错误,网上有许多方法可以解决类似"Unresolved inclusion jni.h" 错误的方法,包括include path等方法,不过对我都不管用. 最终的解决办法就是初始化eclipse对该project的native support: 1. 在eclipse中关闭指定Project 2. 用其他编辑工具打开该project的.project文件,删除以下内容: ...... &