Eclipse中Debug调试及视图

合集下载

Eclipse断点调试

Eclipse断点调试

Eclipse断点调试2013/3/28本文概述了怎样使用Eclipse 平台的内置调试功能来调试您的软件项目。

调试是程序员无法回避的工作。

调试方法有许多种,但归根结底,就是找到引发错误的代码。

举例来说,在Linux 应用程序中,分段故障被认为是最常见的错误之一。

当程序尝试访问未分配给它的内存并因为分段违例而终止时,将产生这种错误。

要修正这种错误,您需要找到引发该行为的那行代码。

一旦找到有问题的代码行,这对于知道引发错误的上下文及其相关的值、变量和方法也是有所帮助的。

使用调试器将使查找这些信息变得相当简单。

一、Eclipse 调试器及Debug 视图Eclipse 平台的特色在于内置了 Java 调试器,该调试器提供所有标准调试功能,包括进行单步执行、设置断点和值、检查变量和值以及暂挂和恢复线程的能力。

此外,您还可以调试在远程机器上运行的应用程序。

Eclipse 平台主要是一个 Java 开发环境,但其体系结构同时也向其它编程语言开放。

如以下您将看到的,同一个 Eclipse 的 Debug 视图也可用于 C 和 C++ 编程语言。

Eclipse 平台工作台(Eclipse Platform Workbench)及其工具是基于 Java 开发工具(JDT)组件所构建的。

这些组件向 Eclipse 提供以下功能:(1)项目管理工具(2)透视图和视图(3)构建器、编辑器、搜索和构建功能(4)调试器Eclipse 调试器本身是作为 Eclipse 二进制文件中包含的标准插件而存在的。

Eclipse 还有一个特别的 Debug 视图,允许您在工作台中管理程序的调试和运行。

它为调试中的每个目标显示其暂挂线程的堆栈帧。

程序中的各个线程以作为树的节点出现,而 Debug 视图则显示运行中的各目标的进程。

如果暂挂一个线程,则其堆栈帧显示为子元素。

在您开始使用 Eclipse 调试器之前,假定您已经安装了适当的 Java SDK/JRE (我推荐您使用 Java VM 1.5)和 Eclipse 平台 SDK 3.2+,且两者都工作正常。

Eclipse中Debug调试及视图

Eclipse中Debug调试及视图

Eclipse 调试器和Debug 视图编者注:Pawel Leszek 最初于 2003 年 5 月撰写了下文,后来由 Chris Aniszczyk 于 2007 年 4 月进行了更新。

Eclipse SDK 是针对 Java™开发工具(Java™ Development Tools,JDT)的项目,它具有一个内置的 Java 调试器,可以提供所有标准的调试功能,包括分步执行、设置断点和值、检查变量和值、挂起和恢复线程的功能。

除此之外,还可以调试远程机器上运行的应用程序。

Eclipse 平台很健壮,因为其他编程语言可以将该平台提供的调试工具用于各自的语言运行时。

正如下文所示,同一个Eclipse Debug 视图也可以用于 C/C++ 编程语言。

Eclipse 平台工作台及其工具是围绕 JDT 组件构建的,该组件为 Eclipse 提供了下列特性:∙项目管理工具∙透视图和视图∙构造器、编辑器、搜索和构建功能∙调试器Eclipse 调试器本身是 Eclipse 内的一个标准插件集。

Eclipse 还有一个特殊的 Debug 视图,用于在工作台中管理程序的调试或运行。

它可以显示每个调试目标中挂起线程的堆栈框架。

程序中的每个线程都显示为树中的一个节点,Debug 视图显示了每个运行目标的进程。

如果某个线程处于挂起状态,其堆栈框架显示为子元素。

在使用 Eclipse 调试器之前,假定您已经安装了合适的 Java SDK/JRE(我推荐使用 Java VM V1.4)和 Eclipse Platform SDK V3.3,而且两者的运行都没问题。

一般来说,先用 Eclipse 示例测试一下调试选项比较好。

如果想开发和调试 C/C++ 项目,还需要获得并安装 C/C++ 开发工具(C/C++ Development Tools,CDT)。

关于 Java SDK/JRE、Eclipse 平台和示例以及 CDT,请参阅参考资源。

Eclipse调试方法及log4j调试方法

Eclipse调试方法及log4j调试方法

PAOLO DESIGN
可以放公司标志
Log4j调试方法: 调试方法: 调试方法
6. 日志记录范围
log4j.rootLogger=info,appender1,appender2 rootLogger没有指定日志的操作范围,默认日志对所有的包操作,appender指明 输出的方式
如果只针对某些包操作,可以按如下修改: .client2 = info,appender1 表明只有在com.client2下面的包才作如上操作。
PAOLO DESIGN
可以放公司标志
设置断点 : 1. 普通断点 2. 条件断点
断点属性: 断点属性:
1.hit count 执行多少次数后暂挂 用 于循环 2.enable condition 遇到符合你输入 条件(为ture\改变时)就暂挂 3.suspend thread 多线程时暂挂此线 程 4.suspend VM 暂挂虚拟机
PAOLO DESIGN
可以放公司标志
Log4j调试方法: 调试方法: 调试方法
4. log4j.properties的使用 的使用 log4j.properties的内容显示如下: log4j.rootLogger=debug,appender1 (指明log4j中的输出级别是debug) log4j.appender.appender1=org.apache.log4j.ConsoleAppender (指明日志信息在 什么地方进行处理,这里指明是在控制台进行输出) yout=org.apache.log4j.TTCCLayout (日志文件的输出 样式)
PAOLO DESIGN
可以放公司标志
查看变量: 查看变量: Variables 视图(在 Display 窗口中)显示了选中的堆栈帧中的变量值。要查看 所请求的变量,只需展开 Variables 视图中的树直到您看到所请求的元素为止。 您也可以在 Debug 视图中单步执行代码的同时,在 Variables 视图中查看变量。

Eclipse编程中的Debug工具的使用方法

Eclipse编程中的Debug工具的使用方法

Eclipse编程中的Debug工具(即自动找错工具)的使用方法: 首先在Eclipse中编写一段代码以下边代码为例
看到代码左边的蓝条
找到int n=10,X=5,y=2;这行点击鼠标右键,
点击Toggle Breakpoint
点击后就会在int n=10,X=5,y=2;这行左侧位置出现一个小蓝点
然后在程序栏上点击小虫子图案(Debug)按钮
点击后会弹出以下对话框
问的是要不要更换画面点击“yes”
就到了下边的全新界面
其中区域A 是写代码区域;区域B 是显示变量值的区域;C 区域是程序输出的位置
小箭头指到哪行就是接下来要执行的代码。

点击图片中箭头位置名为(step over )程序就会向下继续读代码。

其中H 标黄色是表示H 值相对原来值有变化了。

程序完全执行完后点击step over 后会出现以下:
不用管。

点击Resume 表示Debug
完成。

A
B
C
点击Resume表示Debug完成出现下边对话框
那接下来怎么回到原来的位置,首先移动到程序最右边,在右上角显示目前在debug模式下,
点击它左边java按钮
就回到了Eclipse熟悉的编辑代码的页面。

可以通过右上角在两个界面来回切换。

如果又上角没有Debug按钮了,点击java左边加号按钮
出现下边对话框
点击debug就回到了debug界面。

本质上debug和自己读代码作用一样;如果程序写不出来的时候用下debug就能找出是哪里出了问题。

友情提示:范文可能无法思考和涵盖全面,供参考!最好找专业人士起草或审核后使用,感谢您的下载!。

在MyEclipse中用debug调试应用程序

在MyEclipse中用debug调试应用程序

在MyEclipse中用debug调试应用程序说来惭愧,本人虽然用MyEclipse已经相当熟练,却从来都不会用debug调试应用程序。

Debug可是说是MyEclipse中一个相当重要的功能,今天就来说说在MyEclipse中怎么用debug功能调试程序。

Debug中常用的3个快捷键是F5、F6、F7,这3个快捷键的意思是:●F5:在MyEclipse切换到debug视图时图标为,为单步测试,作用是跳入,比如说一大步中分为10小步,单击F5一次就会走完一小步,走完这一大步则需要单步10次。

●F6:在MyEclipse切换到debug视图时图标为,与F5一样也是单步测试。

只不过与F5不同的是F5追求的是过程,而F6追求的是结果。

如果一大步中分为10小步,单击F6一次就可以得到最后一步的结果.●F7:在MyEclipse切换到debug视图时图标为,作用是跳出函数。

比如当我们调试时进入了某个jar包中的类,我们可以单击F7跳出此类。

下面开始学习dedug旅程。

首先做一个有bug的加法计算器,界面如下所示:代码清单如下所示:●Strings.xml中的代码如下所示:[html]view plaincopyprint?1.<?xml version="1.0"encoding="utf-8"?>2.<resources>3.<string name="app_name">Debug测试</string>4.<string name="add">+</string>5.<string name="equ">=</string>6.<string name="call">计算</string>7.</resources>● Main.xml中的代码如下所示:[html]view plaincopyprint?1.<?xml version="1.0"encoding="utf-8"?>2.<LinearLayout xmlns:android="/apk/res/android"3.android:layout_width="fill_parent"4.android:layout_height="fill_parent"5.android:orientation="horizontal">6.7.<EditText8.android:id="@+id/num1"9.android:layout_width="50px"10.android:layout_height="wrap_content"11.android:numeric="decimal">12.13.<requestFocus/>14.15.</EditText>16.17.<TextView18.android:layout_width="wrap_content"19.android:layout_height="wrap_content"20.android:text="@string/add"21./>22.23.<EditText24.android:id="@+id/num2"25.android:layout_width="50px"26.android:numeric="decimal"27.android:layout_height="wrap_content"/>28.29.<TextView30.android:layout_width="wrap_content"31.android:layout_height="wrap_content"32.android:text="@string/equ"/>33.34.<EditText35.android:id="@+id/result"36.android:layout_width="50px"37.android:focusable="false"38.android:layout_height="wrap_content"/>39.40.<Button41.android:id="@+id/callButton"42.android:layout_width="wrap_content"43.android:layout_height="wrap_content"44.android:text="@string/call"/>45.46.</LinearLayout>●Activity类中的代码如下所示:[java]view plaincopyprint?1.packagecom.yqsn.test;2.3.importandroid.app.Activity;4.importandroid.os.Bundle;5.importandroid.view.View;6.importandroid.widget.Button;7.importandroid.widget.EditText;8.importandroid.widget.TextView;9.10.public classTestDebugActivity extends Activity {11./** Called when the activity is firstcreated. */12.private EditText numText1;13.private EditText numText2;14.private TextView sumText;15.private Button callButton;16.@Override17.public void onCreate(BundlesavedInstanceState) {18.super.onCreate(savedInstanceState);19. setContentView(yout.main);20. numText1=(EditText)findViewById(R.id.num1);21. numText2=(EditText)findViewById(R.id.num2);22. callButton=(Button)findViewById(R.id.callButton);23. callButton.setOnClickListener(newView.OnClickListener() {24.25.@Override26.public void onClick(View v){27.// TODOAuto-generated method stub28. StringnumText1Str=numText1.getText().toString();29. StringnumText2Str=numText2.getText().toString();30.float result=Float.parseFloat(numText1Str)+Float.parseFloat(numText2Str);31. sumText.setText(""+result);32. }33. });34. }35.}运行此计算器,界面如上所示,当我们输入数值后单击“计算”后出现bug 了,如下所示:我们分析可以看出我们是在输入数值点击“计算”按钮后出现问题的,分析代码,我们可以猜想出可能是我们在方法在中执行“单击侦听器”即setOnClickListener()方法时出错了。

eclipse平台介绍及怎样使用Eclipse平台调试您的软件项目

eclipse平台介绍及怎样使用Eclipse平台调试您的软件项目

怎样使用Eclipse平台调试您的软件项目发布时间:2005.05.12 11:15来源:IBM DW作者:Paul Leszek调试是程序员无法回避的工作。

调试方法有许多种,但归根结底,就是找到引发错误的代码。

举例来说,在 Linux 应用程序中,分段故障被认为是最常见的错误之一。

当程序尝试访问未分配给它的内存并因为分段违例而终止时,将产生这种错误。

要修正这种错误,您需要找到引发该行为的那行代码。

一旦找到有问题的代码行,这对于知道引发错误的上下文及其相关的值、变量和方法也是有所帮助的。

使用调试器将使查找这些信息变得相当简单。

Eclipse 调试器及 Debug 视图Eclipse 平台的特色在于内置了 Java 调试器,该调试器提供所有标准调试功能,包括进行单步执行、设置断点和值、检查变量和值以及暂挂和恢复线程的能力。

此外,您还可以调试在远程机器上运行的应用程序。

Eclipse 平台主要是一个 Java 开发环境,但其体系结构同时也向其它编程语言开放。

如以下您将看到的,同一个 Eclipse 的 Debug 视图也可用于 C 和 C++ 编程语言。

Eclipse 平台工作台(Eclipse Platform Workbench)及其工具是基于 Java 开发工具(JDT)组件所构建的。

这些组件向 Eclipse 提供以下功能:1、项目管理工具2、透视图和视图3、构建器、编辑器、搜索和构建功能4、调试器Eclipse 调试器本身是作为 Eclipse 二进制文件中包含的标准插件而存在的。

Eclipse 还有一个特别的 Debug 视图,允许您在工作台中管理程序的调试和运行。

它为调试中的每个目标显示其暂挂线程的堆栈帧。

程序中的各个线程以作为树的节点出现,而 Debug 视图则显示运行中的各目标的进程。

如果暂挂一个线程,则其堆栈帧显示为子元素。

在您开始使用 Eclipse 调试器之前,假定您已经安装了适当的 Java SDK/JRE(我推荐您使用 Java VM 1.4)和 Eclipse 平台 SDK 2.0/2.1,且两者都工作正常。

Eclipse的Debug调试技巧

Eclipse的Debug调试技巧

Eclipse的Debug调试技巧作为开发⼈员,掌握开发环境下的调试技巧⼗分有必要。

我们在编写java程序的过程中,经常会遇到各种莫名其妙的问题,为了检测程序是哪⾥出现问题,经常需要增加⽇志,看变量的值,这样调试很⿇烦。

假设我每天花费1⼩时在调试我的应⽤程序上的话,那累积起来的话也是很⼤量的时间。

由于这个原因,⽤这些时间来重视并了解所有使我们调试更⽅便的功能。

那能为你省下⼀些时间,也将会使你的⽣活更安逸、轻松。

⾸先我们需要注意三个点:不要使⽤System.out.println作为调试⼯具\使⽤⼀个⽇志分析器来阅读⽇志\启⽤所有组件的详细的⽇志记录级别⼀个关于调试的疯狂声明作为开头。

但它必须是要说的!尝试切分⼀下你那复杂的逻辑成多个独⽴的单元,并编写单元测试来检测你代码的正确性。

我想像如下这样的流程应该是发⽣得⾮常频繁的—-⼀些Debug模式的界⾯,共分为5个区域(1)Debug(调试)区域,显⽰当前正在调试代码是什么,在第多少⾏(2)Variables(变量)区域,显⽰变量的值。

(3)代码编辑区(4)代码结构区,显⽰代码中的各个⽅法。

(5)Console(控制台)区域。

⼀、条件断点我们通常调试断点的时候⼀般就是点击⾏号的左边,这个时候就会有断点被打起来。

在debug视图中,BreakPoint View将所有断点都列出来,但是我们可以添加⼀个boolean类型的条件来决定断点是否被跳过。

如果条件为真,在断点处程序将停⽌,否则断点被跳过,程序继续执⾏。

如果你只对应⽤中的某部分感兴趣的话,这个功能⾮常有⽤。

例如,如果你要在第13次循环的时候检查程序,或者在⼀个抽象⽗类中调试某些功能,⽽你只关注其中⼀个具体的实现。

你可以在断点视图中设置条件,或者通过代码旁边的蓝⾊断点标记的右键菜单(”Breakpoint Properties”)设置。

你可以在条件代码⽚段为true的时候暂停程序,或者当代码⽚段的值改变的时候挂起程序。

MyEclipse中使用debug调试程序

MyEclipse中使用debug调试程序

MyEclipse中使用debug调试程序从网上看到关于MyEclipse中使用的时候调试代码的问题,感觉不错,特精心整理之后与各位网友分享,感觉有用的,还希望捧个场,多说几句好话。

1.首先在一个java文件中设断点,然后debug as-->open debug Dialog,然后在对话框中选类后--> Run当程序走到断点处就会转到debug视图下2.F5键与F6键均为单步调试,F5是step into,也就是进入本行代码中执行,F6是step over,也就是执行本行代码,跳到下一行3.F7是跳出函数4.F8是执行到最后具体说明如下:1.Step Into (also F5) 跳入2.Step Over (also F6) 跳过3.Step Return (also F7) 执行完当前method,然后return跳出此method4.step Filter 逐步过滤一直执行直到遇到未经过滤的位置或断点(设置Filter:window-preferences-java-Debug-step Filtering)5.resume 重新开始执行debug,一直运行直到遇到breakpoint6.hit count 设置执行次数适合程序中的for循环(设置breakpoint view-右键hit count)7.inspect 检查运算。

执行一个表达式显示执行值8.watch 实时地监视变量的变化9.我们常说的断点(breakpoints)是指line breakpoints,除了line breakpoints,还有其他的断点类型:field(watchpoint)breakpoint,method breakpoint,exception breakpoint10.field breakpoint 也叫watchpoint(监视点) 当成员变量被读取或修改时暂挂11.添加method breakpoint 进入/离开此方法时暂挂(Run-method breakpoint)12.添加Exception breakpoint 捕抓到Execption时暂挂(待续...)13.variables 视图里的变量可以改变变量值,在variables 视图选择变量点击右键--change value.一次来进行快速调试14.debug 过程中修改了某些code后--〉save&build-->resume-->重新暂挂于断点断点属性:1.hit count 执行多少次数后暂挂用于循环2.enable condition 遇到符合你输入条件(为ture\改变时)就暂挂3.suspend thread 多线程时暂挂此线程4.suspend VM 暂挂虚拟机非常感谢,希望对过客能够有用!。

在Eclipse中使用debug(Eclipse调试常用技巧)

在Eclipse中使用debug(Eclipse调试常用技巧)

Eclipse调试常用技巧1、条件断点断点大家都比较熟悉,在Eclipse Java编辑区的行头双击就会得到一个断点,代码会运行到此处时停止。

条件断点,顾名思义就是一个有一定条件的断点,只有满足了用户设置的条件,代码才会在运行到断点处时停止。

在断点处点击鼠标右键,选择最后一个"Breakpoint Properties"断点的属性界面及各个选项的意思如下图,2、变量断点断点不仅能打在语句上,变量也可以接受断点,上图就是一个变量的打的断点,在变量的值初始化,或是变量值改变时可以停止,当然变量断点上也是可以加条件的,和上面的介绍的条件断点的设置是一样的。

3、方法断点方法断点就是将断点打在方法的入口处,方法断点的特别之处在于它可以打在JDK的源码里,由于JDK在编译时去掉了调试信息,所以普通断点是不能打到里面的,但是方法断点却可以,可以通过这种方法查看方法的调用栈。

4、改变变量值代码停在了断点处,但是传过来的值不正确,如何修改一下变量值保证代码继续走正确的流程,或是说有一个异常分支老是进不去,能不能调试时改一下条件,看一下异常分支代码是否正确?在Debug视图的Variables小窗口中,我们可以看到mDestJarName变量的值为"F:\Study\eclipsepro\JarDir\jarHelp.jar"我们可以在变量上右键,选择"Change Value..."在弹出的对话框中修改变量的值,或是在下面的值查看窗口中修改,保用Ctr+S保存后,变量值就会变成修改后的新值了。

5、重新调试这种调试的回退不是万能的,只能在当前线程的栈帧中回退,也就说最多只能退回到当前线程的调用的开始处。

回退时,请在需要回退的线程方法上点右键,选择"Drop to Frame"6、远程调试用于调试不在本机上的程序,有两种方式,1、本机作为客户端2、本机作为服务端使用远程调试的前提是服务器端和客户端的代码是一致的。

Android 开发之Eclipse Debug调试详解

Android 开发之Eclipse Debug调试详解

Android 开发之Eclipse Debug调试详解1.在程序中添加一个断点如果所示:在Eclipse中添加了一个程序断点在Eclipse中一共有三种添加断点的方法第一种:在红框区域右键出现菜单后点击第一项 Toggle Breakpoint 将会在你右键代码的哪一行添加一个程序断点(同样的操作方可取消程序断点)第二种:在红框区域双击鼠标左键将会在你双击代码的哪一行添加一个程序断点(同样的操作方可取消程序断点)第三种:在光标停留的地方使用快捷键 Ctrl + Shift + B 将会在光标停留的这一行添加一个程序断点(同样的操作方可取消程序断点)2.运行Debug 调试让程序停留在添加的断点上如下图所示,在红框内点击下拉菜单选中需要调试的项目则开始运行Debug调试如果不在下拉表中选直接点击表示Debug运行默认项目(默认项目为上一次运行的项目)Debug调试快捷键为单击F11分析一下如何科学的添加程序断点,上图中我为了加断点查看生成出来随机数的值我一共添加了6个程序断点,绿框表示最为科学的断点位置,红框表示不科学的位置。

我们分析一下为什么,如果switch case 中的代码片段过长或者 case 的数量过多如果采用红框的方式来添加程序断点,程序员须要添加很多程序断点万一有疏漏所以会很难快速定位代码执行到了那里,如果使用绿框的方式添加程序断点,程序员只须要在断点出按 F6 单步跳过这一行代码就会走进正确的case中方便继续调试。

Debug调试运行后,程序停在了红框处,按F6单步跳过发现随机数为4 程序停留在了绿框中,程序员可以迅速定位random的值为43.程序停留后查看变量的数值蓝框中的内容表示为断点的入口方法,就好比你的断点是从那个方法进来的,学会看这个真的非常重要,好比我现在明确知道我的一个方法在被调用的时候方法中会出现错误,但是这个方法在程序中100个地方都在调用,我可能断定实在那里调用的时候出的错误,我不可能在100个调用它的地方都加一个断点,我可以在方法中添加程序断点然后在篮框中查看程序是从那个地方走进这个方法的,便可以快速定位问题所在。

在Eclipse中进行调试

在Eclipse中进行调试

4.4 在Eclipse中进行调试(1)4.4 在Eclipse中进行调试Eclipse为调试运行中的Java应用程序提供了完善的环境。

当在主机模式下运行GWT应用程序时,Eclipse会将它作为一个Java应用程序来运行,而且开发者可以在Eclipse中调试这个GWT应用程序。

对于Ajax开发过程来说,能够调试基于浏览器的Web应用程序的确是一种巨大的进步。

本章前面,我们看到使用applicationCreator脚本和-eclipse选项来创建应用程序时,会自动地创建一个Eclipse启动配置文件。

然后,通过Eclipse就能在主机模式下用Run或Debug命令来启动该应用程序。

启动以后,主机模式浏览器仍然与Eclipse保持连通,并且能够使用Eclipse的调试命令。

首先,我们从断点讲起。

断点是指在代码中设置的一个位置,当执行到该位置时,应用程序会中断运行并将控制权转交给调试器。

这样,我们就能够观察变量的状态或者逐行地执行代码以便于分析程序流。

为了示范断点的应用,可以在HelloWorld应用程序中按钮的ClickListener.onClick方法的第一个行添加一个断点。

设置方法是在编辑器中该行的左侧边空区域单击右键,选择Toggle Breakpoint,如图4-24所示。

这时,我们能够在左侧边空区域上看到由一个蓝色圆点图标表示的断点。

而通过在该边空区域上双击同一个点可以切换断点。

现在,当调试应用程序时,Eclipse会在程序执行到断点时接管调节器。

对于HelloWorld这个例子而言,就是在单击按钮的时候程序会发生中断。

下面,单击工具栏上的Bug图标,打开Debug菜单,从中选择HelloWorld,如图4-25所示。

当在主机模式浏览器中打开HelloWorld时,单击Click Me按钮,就能够看到Eclipse显示的调试器。

此时,应该看到Eclipse处于Debug透视图模式,如图4-26所示。

eclipse 【调试】视图

eclipse  【调试】视图

eclipse 【调试】视图
【调试】视图是一个显示程序调试信息的窗口,也是程序代码调试比较重要一个视图。

上述所描述的调试相关内容,都是在为调试程序代码而做准备。

若要对程序代码进行调试,可以直接单击工具栏中的【调试】按钮即可。

此时,在【调试】视图中,显示的是正在调试的进程,以及整个调试的历史记录。

而且,在程序代码过程中,将与【编辑器】视图中的断点结合显示,如图2-67所示。

图2-67 【调试】视图
从上图中,我们可以观察到,在程序代码中添加了3个断点,如在mian( )类中添加一个方法断点、在第6行和第9行都添加有行断点。

当调试程序时,将运行main( )类断点后,就会将线程暂挂,这样有利于检测的代码是否正确,如图2-68所示。

图2-68 执行第1个断点 图2-69 继续执行调试 然后,单击【调试】视图工具栏中的【继续】按钮或者按F8键即可继续执
行代码。

在调试过程中,将在标记栏中显示一个移动调试箭头,每当移动到下一个断点,则箭头将指向该断点行,并该行代码自动添加“浅绿色”的背景色,如图2-69所示。

eclipse调试java程序的九个技巧

eclipse调试java程序的九个技巧

eclipse调试java程序的九个技巧九个技巧:1. 逻辑结构2. 条件debug3. 异常断点4. 单步过滤5. 跳到帧6. Inspect7. expressions8. display9. 远程debug 最早开始⽤eclipse的debug的时候,只会F5 F6 F7 F8,甚⾄F7都不是很搞的明⽩是怎么⽤的,那时候资浅,碰不到需要复杂debug的代码,慢慢⼯作深⼊了,场景碰多了,就需要各种debug技巧来提升定位bug效率,以前找⼈帮忙排查问题,看他开各种窗⼝debug各种溜甚是羡慕嫉妒恨,慢慢久病成医⾃⼰也⽤溜了eclipse的⼀些主要的debug技巧。

稍作整理分享出来。

F5678这四个基本技能就略过不说了,但是最基本的技能能解决90%问题,所以虽然略过不说,但是必须⽤的很溜,相信园友达⼈们这四个肯定⽐我⽤的溜的多。

1. 逻辑结构逻辑结构主要⽤来展⽰map之类的collection数据结构存储的值的,它只展⽰存储值的逻辑部分,⽽屏蔽了数据结构详细的内部结构,更⽅便我们查看map之类collection结构⾥存储的值,推荐使⽤。

这个按钮就是展⽰逻辑结构的按钮,下⾯两个图,上图是不展⽰逻辑结构,下图是展⽰逻辑结构,很明显,下图的结构可读性更强,可以专注于debug的变量。

2. 条件debug条件debug⽤在需要满⾜某种条件才会触发断点的场景,⽐如只有id是12345这条记录会有问题,那就当id等于12345时才触发断点,其他都放过。

右击断点选择断点属性,就能看到这样⼀个配置框,右边的⽂本区块可以填写条件代码,⽐如id==12345,由于每次都要做这个判断,如果循环数很⼤的话,还是有点点慢的,你可以去上个厕所接个⽔啊什么的,还是很⽅便的。

3. 异常断点异常断点只要⽤在debug某种异常的时候,可以配置当这个异常出现后才触发断点,不需要debug去寻找异常。

点击这个红圈就能弹出异常断点的窗⼝,会列出你系统⾥的所有异常类,然后选择需要断点的异常就OK。

DEBUG 使用教程 查错 排错 debug 形式 大全

DEBUG 使用教程 查错 排错 debug 形式 大全

1.项目报错,即eclipse里面项目工程有红叉eclipse中打开Problems视图,window->show view->other->General->Problems通过Problems视图中的错误信息,找到错误源(有可能是java文件,或者(xml,有可能是1.xml有错;2.含有错误字符(比如从word复制过来);3.假报)buildpath -> eclipse中工程,右键->Build Path-> Configure Build path -> Libraries选项卡察看JRE System Library(引入jdk自带包0),Server Runtime(引入jsp/servlet实现包,比如Apache Tomcat V6.0(这个是window->preferences->server下定义的Runtime Environment对应))Web App Libraries(包含了eclipse中项目工程自带的WEB-INF/lib 下引入的jar包)junit(调试用,不一定需要)User Library(一般eclipse使用者把自己引入的jar包放在一起,定义一个library,在eclipse中引用)2.项目启动,控制台报错察看控制台错误信息可能错误信息包括:1.session factory(可能是hibernate的实体类定义错误), 控制台一般看到dao,sessionFactory,hibernate的关键字eg.Caused by: org.hibernate.PropertyNotFoundException: Could not find a getter for name1 in class demo.ssh2.model.Roleatorg.hibernate.property.BasicPropertyAccessor.createGetter(BasicProperty Accessor.java:306)atorg.hibernate.property.BasicPropertyAccessor.getGetter(BasicPropertyAc cessor.java:299)at org.hibernate.mapping.Property.getGetter(Property.java:294)atorg.hibernate.tuple.entity.PojoEntityTuplizer.buildPropertyGetter(PojoEn tityTuplizer.java:300)atorg.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTu plizer.java:141)atorg.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.j ava:78)... 55 more2.bean定义错误,dao,service,action,1.<property name="" ref=""/>中的ref找不到对应的bean 的id从sessionfactory->dao->service->action,前面的错误总能导致出后面的错误eg.比如定义了如下spring配置信息<bean id="sessionFactory" ..../><bean id="baseDao" abstract="true" class="demo.ssh2.dao.BaseHibernateDao"><property name="sessionFactory" ref="sessionFactory1" /></bean>控制台报错org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userDao' defined in file...(备注:此处省略多少字)Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'sessionFactory1' is definedatorg.springframework.beans.factory.support.DefaultListableBeanFactory.g etBeanDefinition(DefaultListableBeanFactory.java:527)atorg.springframework.beans.factory.support.AbstractBeanFactory.getMer gedLocalBeanDefinition(AbstractBeanFactory.java:1083)atorg.springframework.beans.factory.support.AbstractBeanFactory.doGetB ean(AbstractBeanFactory.java:274)atorg.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:190)atorg.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322)... 30 more2.setter方法名和 spring配置文件中的<propertyname="" ref=""/>中的name 不匹配eg.比如定义如下:<bean id="roleService" class="demo.ssh2.service.RoleService"><property name="roleDao" ref="roleDao"/></bean>RoleService中roleDao的setter方法如下public void setRoleDao1(RoleDao roleDao) {this.roleDao = roleDao;}方法setRoleDao1和<property name="roleDao" 不匹配控制台报错:Caused by: org.springframework.beans.NotWritablePropertyException:Invalid property 'roleDao' of bean class [demo.ssh2.service.RoleService]:Bean property 'roleDao' is not writable or has an invalidsetter method.Did you mean 'roleDao1'?atorg.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWr apperImpl.java:1024)atorg.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWr apperImpl.java:900)atorg.springframework.beans.AbstractPropertyAccessor.setPropertyValues( AbstractPropertyAccessor.java:76)atorg.springframework.beans.AbstractPropertyAccessor.setPropertyValues( AbstractPropertyAccessor.java:58)atorg.springframework.beans.factory.support.AbstractAutowireCapableBea nFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.jav a:1358)... 28 more3.缺少setter方法比如配置<bean id="roleService" class="demo.ssh2.service.RoleService"><property name="roleDao" ref="roleDao"/></bean>在类RoleService中没有定义roleDao的setter方法控制台报错:Caused by: org.springframework.beans.NotWritablePropertyException:Invalid property 'roleDao' of bean class [demo.ssh2.service.RoleService]:Bean property 'roleDao' is not writable or has an invalid setter method.Does the parameter type of the setter match the return type of the getter?atorg.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWr apperImpl.java:1024)atorg.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWr apperImpl.java:900)atorg.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:76)atorg.springframework.beans.AbstractPropertyAccessor.setPropertyValues( AbstractPropertyAccessor.java:58)atorg.springframework.beans.factory.support.AbstractAutowireCapableBea nFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.jav a:1358)... 28 more3.eclipse缓存问题,更改了文件,部署到web server中的文件仍然旧的servers视图中,先停止server,然后删除servereclipse中点击项目工程,Project->clean->最上面选中Clean Projects selected below->点击ok3.项目运行,控制台报错察看控制台错误信息可能错误信息包括:1.jdbc配置错误(数据库url,用户名,密码)比如jdbc配置文件错误,将ername=root修改为ername=root1页面报错如下:org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.GenericJDBCException: Cannot open connection 控制台报错如下:2013-11-20 09:39:25,441 [org.hibernate.util.JDBCExceptionReporter]-[ERROR] Cannot create PoolableConnectionFactory (Access denied for user 'root1'@'localhost'(using password: YES))2.页面访问不到404或页面有异常信息根据访问的url里面的action,找到Action类对应的方法,打个断点(打在方法体内的代码块的第一行)如果不能进入debug视图,表示struts.xml配置文件有问题,页面输入url中的action找不到对应的Action类eg.比如将strus.xml配置名为<action name="role/list",页面访问role/list1.acito页面报错:ng.NoSuchMethodException:demo.ssh2.action.RoleAction.list1()ng.Class.getMethod(Class.java:1605)如果能进入debug视图,表示struts.xml配置文件没有问题,1.一般控制台会有异常栈错误信息eg.比如RoleAction有如下方法public String list(){List<?> list = roleService.getList();ActionContext.getContext().put("roles", list);return "list";}RoleService中getList方法如下public List<?> getList(){throw new RuntimeException();}页面报错:ng.RuntimeExceptiondemo.ssh2.service.RoleService.getList(RoleService.java:13)2.struts2标签或jstl标签使用错误3.页面不能显示出数据,1.action中私有实体类属性没有gettter/setter方法,或者没有使用request.setAttribute,或者使用ActionContext.getContext().put,传值2.struts2标签或jstl标签使用不对,但页面不报错。

eclipse debug实现原理

eclipse debug实现原理

eclipse debug实现原理Eclipse Debug实现原理1. 简介在软件开发过程中,调试是一个非常重要的环节。

而Eclipse作为一款强大的集成开发环境(IDE),提供了丰富的调试工具和功能,其中最重要的就是Debug功能。

那么,Eclipse Debug是如何实现的呢?本文将从浅入深,逐步解释相关原理。

2. 基本概念在开始深入解释Eclipse Debug实现原理之前,有必要先了解一些基本概念。

•断点(Breakpoint):在源代码中设置的指定位置,用于暂停程序的执行,以便开发者能够检查程序的状态。

•线程(Thread):程序中执行的独立单元,每个线程都有自己的代码执行路径。

•栈帧(Stack Frame):每个线程在执行过程中都有一个栈帧,用于存储方法的局部变量、中间结果等信息。

•调试器(Debugger):负责控制调试过程的工具,能够让开发者逐行调试程序,查看变量的值和执行流程。

•调试目标(Debug Target):即需要调试的程序或进程。

3. Debug实现流程下面将按照步骤,逐步介绍Eclipse Debug的实现流程。

设置断点首先,开发者需要在源代码的特定位置设置断点,以便在程序执行到该位置时暂停。

启动Debug开发者在Eclipse中选择需要调试的程序,并通过菜单或快捷键启动Debug。

Eclipse会启动调试的目标,并与之建立调试会话。

断点触发当调试目标执行到设置的断点位置时,调试目标会通知Eclipse,告知断点已被触发。

暂停程序Eclipse接收到断点触发的通知后,会暂停调试目标的执行。

这是通过和调试目标的通信实现的。

更新界面当程序被暂停后,Eclipse会更新Debug视图,显示当前暂停的位置以及程序的状态信息。

开发者可以查看和修改变量的值,并查看执行栈中的栈帧。

在程序暂停的状态下,开发者可以选择单步执行的方式,逐行调试程序。

单步执行会使程序从当前位置执行到下一行,或者进入函数调用等。

Android eclipse 程序调试

Android eclipse 程序调试

Android eclipse 程序调试一:断点调试用eclipse开发android程序的时,跟VS一样是可以断点单步调试的.步骤如下.1 设置断点:在编码窗体的左边框上用鼠标双击,或者右键点击菜单,选择Toggle Breakpoint菜单项即可.2 在debug模式下运行程序进入调试状态:通过点击工具栏上的小虫按钮或者是在项目右键点击然后选择DebugAs,Android Application菜单,启动程序的调试模式.第一次运行调试模式eclipse会弹出如下确认窗口当程序运行到你的断点地方时就会停下,这时可以按照下面的功能键按需求进行调试: [1]快捷键(F8)直接执行程序,直到下一个断点处停止。

[2]快捷键(F5)单步执行程序,遇到方法时进入。

[3]快捷键(F6)单步执行程序,遇到方法时跳过。

[4]快捷键(F7)单步执行程序,从当前方法跳出。

查看断点时变量当前的值:右键点击对应的变量,在菜单上选择watch 菜单项,变量的值就会出现在expressions窗口中.二、Android应用调试之工具Eclipse Java编辑器这个编辑器不但能够为开发者提供代码编写、语法纠错和实时编译等常用功能,而且还能够对Java源代码进行快速修改、重构等高级操作。

详讲:错误提示符(一个小电灯泡图标和一个红色的X)指出了错误所在的位置,在屏幕的右上角有一个红色的标记,它的作用是提示开发者该文档的某个位置存在错误。

在文档的右边空白处还能看到一个红色的矩形框,它指明了错误所在的大致位置,如果代码量非常大,可以将竖直滚动条拖到这个红色矩形块的位置,快速定位错误。

Java和Dalvik编译、构建系统Android应用程序最终是运行在手机(或者模拟器)的Dalvik虚拟机上的。

因此对Android 应用程序的编译和构建需要用到Java编译器和Dalvik字节码转换器。

Eclipse调试器Android SDK提供了从Dalvik字节码到Java源代码的映射,这样开发者就可以直接使用Eclipse功能强大的调试器进行Android应用程序的调试。

Eclipse的使用技巧和PHP的XDebug调试配置

Eclipse的使用技巧和PHP的XDebug调试配置

(一)Eclipse使用技巧1)设置工作空间的编码(建议为UTF-8)。

Window->Preferences->General->Workspace->Test fileencoding->Other修改后点Apply或OK即可。

2)设置文件的字体大小。

Window->Preferences->General->Appearance->Colors andFonts->Basic->Text Font修改后点Apply或OK即可。

3)显示行号。

Window->Preferences->General->Editors->TestEditors->Show line numbers勾选上点OK即可。

4)修改默认生成文件的(头)类型。

Window->Preferences->General->Content Types->选择要定义默认类型的文件后在Default encoding文本框中输入UTF-8(建议)然后点Update即可。

(若更改后无效果,可在Web选项下修改Encoding选择UTF-8即可)。

5)修改代码自动提示延时时间。

Window->Preferences->Java->Editor->Content Assist->AutoActivation->Enable auto activation->Auto activation delay (ms)->文本框内输入适合自己的时间点OK即可。

此方法似乎不适合JSP文件,其他如JavaScript和PHP选项卡中都有类似的功能,请自行查改。

6)在项目(文件)上右键,Refactor->Rename可以更改文件的名称(包括后缀名),Build Path可添加外部包到项目classpath下等,Copy Qualified Name可以复制从项目根路径开始到所选文件的路径等。

EclipseDebug调试步骤及注意事项

EclipseDebug调试步骤及注意事项

EclipseDebug调试步骤及注意事项
debug⽅法
第⼀步:打开java代码⽂件,在左侧双击⿏标设置断点,或者在左侧右键点击Toggle Breakpoint
第⼆步:点击eclipse上⽅的“蜘蛛”按钮,点击debug as,debug调试开始。

第三步:显⽰debug图框。

debug模式的界⾯,分为5个区域。

(1)Debug(调试)区域,显⽰当前正在调试代码是什么,在第多少⾏
(2)Variables(变量)区域,显⽰变量的值。

(3)Console(控制台)区域。

第四步:点击黄⾊按钮,或者按F5后退⼀步,F6前进⼀步,可以在变量区实时查看值的变化。

第五步:点击调试区的绿⾊按钮,可以将程序直接执⾏完毕,跳过所有断点调试。

注意事项:F5和F6都是单步调试,F5是step into,也就是进⼊本⾏代码中执⾏,F6是step over,也就是执⾏本⾏代码,跳到下⼀⾏。

F7是跳出函数,F8是执⾏到最后。

按钮介绍
1.表⽰当前实现继续运⾏直到下⼀个断点,快捷键为F8。

2.表⽰打断整个进程
3.表⽰进⼊当前⽅法,快捷键为F5。

4.表⽰运⾏下⼀⾏代码,快捷键为F6。

5.表⽰退出当前⽅法,返回到调⽤层,快捷键为F7。

6.表⽰当前线程的堆栈,从中可以看出在运⾏哪些代码,并且整个调⽤过程,以及代码⾏号。

Eclipse的单步调试

Eclipse的单步调试

Eclipse的单步调试1、设置断点在程序⾥⾯放置⼀个断点,也就是双击需要放置断点的程序左边的栏⽬上。

2、调试(1)点击"打开透视图"按钮,选择调试透视图,则打开调试透视图界⾯,然后先设置断点,按调试按钮则可以调试程序。

(2)或者直接点击调试按钮,那个⾍⼦样⼦的按钮,然后就会进⼊调试透视图的界⾯。

前提你需要是要在程序中设置好断点。

(3)或者右键单击该程序,选择debug as(调试⽅式) -> java application(Java应⽤程序),则可以调试程序了。

前提你需要是要在程序中设置好断点。

3、调试快捷键以debug⽅式运⾏java程序后(F5)单步执⾏程序,遇到⽅法时进⼊;(F6)单步执⾏程序,遇到⽅法时跳过;(F7)单步执⾏程序,从当前⽅法跳出;(F8)直接执⾏程序。

遇到断点时暂停;按F5就是⼀层层深⼊的debug相当于剥葱样,会进⼊每个⽅法内部;按F6就是在当前函数⼀步步debug,不理会深层次运作;按F7就是如果当前进⼊了某个⽅法内部,都跳转到该⽅法的结尾代码处;按F8就是如果后⾯还有断点,则运⾏到下⼀断点处,否则运⾏完程序;另,在debug时,会有很多有⽤信息显⽰在debug框⾥,如堆栈信息,需要⾃⼰实践;在程序界⾯⾥,⿏标移到变量上时会有当前变量的属性值。

4、改变变量的值在变量窗⼝中右击变量,在弹出的菜单中选择[change value],弹出修改画⾯。

改变其值后,按下ok按钮;这时变量的值就改为修改后的值了。

5、检查代码段执⾏结果在程序运⾏的时候,想看看某段程序运⾏的结果是否正确,或者查看某个变量的值时:选择⼀句或⼀段代码,右键单击在弹出的菜单中选择Watch(创建查看表达式)项,此时,代码的执⾏结果将显⽰在Expressions(表达式)窗⼝中。

选择⼀句或⼀段代码,右键单击在弹出的菜单中选择Inspect(检查)项,可以直接显⽰表达式的值。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Eclipse 调试器和Debug 视图编者注:Pawel Leszek 最初于 2003 年 5 月撰写了下文,后来由 Chris Aniszczyk 于 2007 年 4 月进行了更新。

Eclipse SDK 是针对 Java™开发工具(Java™ Development Tools,JDT)的项目,它具有一个内置的 Java 调试器,可以提供所有标准的调试功能,包括分步执行、设置断点和值、检查变量和值、挂起和恢复线程的功能。

除此之外,还可以调试远程机器上运行的应用程序。

Eclipse 平台很健壮,因为其他编程语言可以将该平台提供的调试工具用于各自的语言运行时。

正如下文所示,同一个Eclipse Debug 视图也可以用于 C/C++ 编程语言。

Eclipse 平台工作台及其工具是围绕 JDT 组件构建的,该组件为 Eclipse 提供了下列特性:∙项目管理工具∙透视图和视图∙构造器、编辑器、搜索和构建功能∙调试器Eclipse 调试器本身是 Eclipse 内的一个标准插件集。

Eclipse 还有一个特殊的 Debug 视图,用于在工作台中管理程序的调试或运行。

它可以显示每个调试目标中挂起线程的堆栈框架。

程序中的每个线程都显示为树中的一个节点,Debug 视图显示了每个运行目标的进程。

如果某个线程处于挂起状态,其堆栈框架显示为子元素。

在使用 Eclipse 调试器之前,假定您已经安装了合适的 Java SDK/JRE(我推荐使用 Java VM V1.4)和 Eclipse Platform SDK V3.3,而且两者的运行都没问题。

一般来说,先用 Eclipse 示例测试一下调试选项比较好。

如果想开发和调试 C/C++ 项目,还需要获得并安装 C/C++ 开发工具(C/C++ Development Tools,CDT)。

关于 Java SDK/JRE、Eclipse 平台和示例以及 CDT,请参阅参考资源。

图 1 显示了 Debug 透视图的一般视图。

图 1. Eclipse Debug 透视图的一般视图调试 Java 语言程序在可以调试项目前,需要干净地编译和运行代码。

首先,需要为应用程序创建一个运行配置,确保应用程序可以正确启动。

然后,需要通过Run > Debug菜单以类似的方式设置调试配置。

还需要选择一个类,将它作为调试的主 Java 类来使用(请参见图 2)。

您可以按照自己的意愿为单个项目设置多个调试配置。

当调试器启动时(从Run > Debug),会在一个新的窗口中打开,这时就可以开始调试了。

图 2. 在调试配置中设置项目的主 Java 类接下来,将讨论 Eclipse 中的一些常用调试实践。

设置断点在启动应用程序进行调试时,Eclipse 会自动切换到 Debug 透视图。

毫无疑问,最常见的调试步骤是设置断点,这样可以检查条件语句或循环内的变量和值。

要在 Java 透视图的 Package Explorer 视图中设置断点,双击选择的源代码文件,在一个编辑器中打开它。

遍历代码,将鼠标放在可疑代码一行的标记栏(在编辑器区域的左侧)上,双击即可设置断点。

图 3. 编辑器左侧看到的两个断点现在,从Run > Debug菜单启动调试会话。

最好不要将多条语句放在一行上,因为会无法单步执行,也不能为同一行上的多条语句设置行断点。

图 4. 视图中左侧空白处的箭头指示当前正在执行的行还有一个方便的断点视图来管理所有的断点。

图 5. 断点视图条件断点一旦了解到错误发生的位置,您可能想要知道在程序崩溃之前,程序在做什么。

一种方法就是单步执行程序的每行语句。

一次执行一行,直到运行到可疑的那行代码。

有时,最好只运行一段代码,在可疑代码处停止运行,在这个位置检查数据。

还可以声明条件断点,它在表达式值发生变化时触发(请参见图 6)。

除此之外,在输入条件表达式时,也可以使用代码帮助。

图 6. 设置条件断点触发器计算表达式的值为了在 Debug 透视图的编辑器中计算表达式的值,选择设置了断点的那行代码,在上下文菜单中,通过Ctrl+Shift+I或右键单击您感兴趣的变量(参见图 7)选择 Inspect 选项。

在当前堆栈框架的上下文中会计算表达式的值,在 Display 窗口的 Expressions 视图中会显示结果。

图 7. 通过 Inspect 选项计算表达式的值剪切活动代码Display 视图允许您以剪切类型的方式处理活动代码(参见图 8)。

要处理一个变量,在 Display 视图中输入变量名即可,视图会提示您一个熟悉的内容助手。

图 8. Display 视图当调试器停止在一个断点处时,您可以从 Debug 视图工具栏(参见图 9)中选择 Step Over 选项,继续调试器会话。

该操作会越过高亮显示的那行代码,继续执行同一方法中的下一行代码(或者继续执行调用当前方法的那个方法的下一行代码)。

执行上一步后发生改变的变量会用某种颜色高亮显示(默认是黄色)。

颜色可以在调试首选项页面中改变。

图 9. 改变颜色的变量要在 Debug 视图中挂起执行线程,选择一个运行线程,单击 Debug 视图工具栏中的Suspend。

该线程的当前调用堆栈就会显示出来,当前执行的代码行就会在Debug 透视图中的编辑器中高亮显示。

挂起一个线程时,将鼠标放在 Java 编辑器中的变量上,该变量的值就会在一个小的悬停窗口中显示出来。

此时,该线程的顶部堆栈框架也会自动选中,其中的可视变量也会在 Variables 视图中显示出来。

您可以通过单击 Variables 视图中合适的变量名来检查变量。

热交换错误修正:动态代码修正如果运行的是 Java 虚拟机(Java Virtual Machine,JVM)V1.4 或更高的版本,Eclipse 支持一个叫做热交换错误修正(Hotswap Bug Fixing)的功能,JVM V1.3 或更低的版本不支持该功能。

该功能允许在调试器会话中改变源代码,这比退出应用程序、更改代码、重新编译、然后启动另一个调试会话更好。

要利用该功能,在编辑器中更改代码后重新调试即可。

由于 JVM V1.4 与 Java 平台调试器架构(Java Platform Debugger Architecture,JPDA)兼容,所以才有可能具备该功能。

JPDA 实现了在运行的应用程序中替换经过修改的代码的功能。

如果应用程序启动时间较长或执行到程序失败的地方时间很长,那么这一点特别有用。

如果在完成调试时,程序还没有全部执行一遍,在 Debug 视图的上下文菜单中选择 Terminate 选项。

容易犯的一个错误是在调试器会话中使用 Debug 或Run,而不是 Resume。

这样做会启动另一个调试器会话,而不是继续当前会话。

回页首远程调试Eclipse 调试器提供了一个有趣的选项,可以调试远程应用程序。

它可以连接到一个运行 Java 应用程序的远程 VM,将自己连接到该应用程序上去。

使用远程调试会话与使用本地调试会话大致相同。

但是,远程调试配置需要在Run > Debug 窗口中配置一些不同的设置。

需要在左侧视图中先选择Remote Java Application选项,然后单击New。

这样就创建了一个新的远程启动配置,会显示出三个选项卡:Connect、Source 和 Common。

在 Connect 选项卡的 Project 字段,选择在启动搜索源代码时要引用的项目。

在 Connect 选项卡的 Host 字段,输入运行 Java 程序的远程主机的 IP 地址或域名。

在 Connect 选项卡的 Port 字段,输入远程 VM 接收连接的端口。

通常,该端口在启动远程 VM 时指定。

如果想让调试器决定在远程会话中Terminate 命令是否可用,可以选择 Allow termination of remote VM 选项。

如果希望可以终止连接的 VM,则选择该选项。

现在,在您选择 Debug 选项时,调试器会尝试连接到指定地址或端口的远程 VM,结果会在 Debug 视图中显示出来。

如果启动程序不能连接到指定地址的 VM,会出现一条错误信息。

通常来说,是否可以使用远程调试功能完全取决于远程主机上运行的 Java VM。

图 10 显示了一个远程调试会话的连接属性设置。

图 10. 设置一个远程调试会话的连接属性回页首调试其他语言尽管 Java 语言是 Eclipse 使用的最广泛的语言,但是 Eclipse 是一个可扩展的平台,可以支持许多其他的语言。

Eclipse 可以通过 C/C++ 开发工具(CDT)支持 C/C++ 。

CDT 扩展了标准的 Eclipse Debug 视图,添加了调试 C/C++ 代码的功能,CDT Debug 视图可以在工作台中管理 C/C++ 项目的调试过程。

CDT 中没有内部的调试器,但是它提供了一个 GNU GDB 调试器的前端,该调试器必须在本地可用。

还有其他项目可以提供各自的调试器,例如 PHP 开发工具(PHP Development Tools ,PDT),请参见图 11。

图 11. PHP 调试器回页首结束语Eclipse 平台提供了一个内置 Java 语言调试器,它带有标准的调试功能,包括分步执行、设置断点和值、检查变量和值以及挂起和恢复线程功能。

它还可以用来调试运行在远程机器上的应用程序。

Eclipse 平台主要是一个 Java 开发环境,但是其中的 Eclipse Debug 视图还可以用于 C/C++、PHP 和许多其他的编程语言。

回页首致谢感谢 Tyler Anderson 绘制了图 11。

参考资料学习∙您可以参阅本文在 developerWorks 全球站点上的英文原文。

∙访问获得关于程序及其使用的全面信息。

∙访问随时了解 Eclipse 社区的变化。

∙从 的CDT 项目了解 C/C++ 开发工具。

∙查看Ajax Tools Framework (ATF) flash 页面和项目页面,了解JavaScript 调试。

∙通过这份 EclipseCon 教程了解 Eclipse Debug Framework 的知识。

∙查看“Eclipse 推荐阅读清单”。

∙浏览 developerWorks 上所有的 Eclipse 文章和教程。

∙Eclipse 的新用户应该从这里查看Eclipse 新手入门。

∙查看 IBM developerWorks 的Eclipse 项目资源中心,扩展您的Eclipse 技能。

∙要收听针对软件开发人员的有趣访谈和讨论,请查看developerWorks podcasts。

相关文档
最新文档