搜档网
当前位置:搜档网 › Eclipse断点调试

Eclipse断点调试

Eclipse断点调试
Eclipse断点调试

转载自网络文章,部分内容做了调整。

【转载】https://www.sodocs.net/doc/da173628.html,/developerworks/cn/linux/opensource/os-ecbug/

Paul Leszek (pawel.leszek@ipgate.pl), 独立软件顾问

2003 年10 月09 日

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

调试是程序员无法回避的工作。调试方法有许多种,但归根结底,就是找到引发错误的代码。举例来说,在Linux 应用程序中,分段故障被认为是最常见的错误之一。当程序尝试访问未分配给它的内存并因为分段违例而终止时,将产生这种错误。要修正这种错误,您需要找到引发该行为的那行代码。一旦找到有问题的代码行,这对于知道引发错误的上下文及其相关的值、变量和方法也是有所帮助的。使用调试器将使查找这些信息变得相当简单。

Eclipse 调试器及Debug 视图

Eclipse 平台的特色在于内置了 Java 调试器,该调试器提供所有标准调试功能,包括进行单步执行、设置断点和值、检查变量和值以及暂挂和恢复线程的能力。此外,您还可以调试在远程机器上运行的应用程序。Eclipse 平台主要是一个 Java 开发环境,但其体系结构同时也向其它编程语言开放。如以下您将看到的,同一个 Eclipse 的 Debug 视图也可用于 C 和 C++ 编程语言。

Eclipse 平台工作台(Eclipse Platform Workbench)及其工具是基于 Java 开发工具(JDT)组件所构建的。这些组件向 Eclipse 提供以下功能:

项目管理工具

透视图和视图

构建器、编辑器、搜索和构建功能

调试器

Eclipse 调试器本身是作为 Eclipse 二进制文件中包含的标准插件而存在的。Eclipse 还有一个特别的 Debug 视图,允许您在工作台中管理程序的调试和运行。它为调试中的每个目标显示其暂挂线程的堆栈帧。程序中的各个线程以作为树的节点出现,而 Debug 视图则显示运行中的各目标的进程。如果暂挂一个线程,则其堆栈帧显示为子元素。

在您开始使用 Eclipse 调试器之前,假定您已经安装了适当的 Java SDK/JRE (我推荐您使用 Java VM 1.5)和 Eclipse 平台 SDK 3.2+,且两者都工作正常。一般来说,先使用 Eclipse 样本来测试一下调试选项是一个好主意。

调试环境【Debug】下运行NC中间件。

调试环境【Debug】下运行NC客户端

输入: HelloWorldUI

输入:HelloWorldUI

定位到默认的构造方法,在左侧双击红色区域,设置一个断点。

设置断点后的样子如下:

节点。

Eclipse中程序会运行到设置的断点处,并挂起。

图 1. Eclipse Debug 视图用户界面的常规视图

调试Java

在您能调试您的项目之前,需要先完整地编译和运行代码。您首先需要为您的应用程序创建运行配置并确认其正常启动。之后,您需要使用Run > Debug...菜单,以同样的方式设置调试配置。您还需要选择作为主 Java 类的由调试器使用的类(也请参阅图 2)。对一个项目,您希望有几种调试配置就可以有几种。当调试器启动后(通过Run > Debug...),会在一个新窗口打开它,您可以准备开始调试。

图 2. 在调试配置中设置项目的主 Java 类

以下是最常见的 Eclipse 调试操作的示例指示信息:

设置断点

当您启动应用程序以进行调试时,Eclipse 自动切换到 Debug 透视图。无庸置疑,最常见的调试过程就是设置断点,以允许检查在条件语句和循环中的变量和值。要在 Java 透视图的 Package Explorer 视图中设置断点,双击所选的源代码文件,在编辑器中打开它。遍历全部代码,将光标放置在含有可疑代码的那一行的标记栏上(在编辑器区域的左侧)。双击以设置断点(也请参阅图 3)。

图 3. 在编辑器左侧边缘可看到两个断点标记

现在通过Run > Debug...菜单启动调试会话。有一点很重要,不要把数条语句放在同一行,因为您不能在同一行的多条语句上单步跳过或设置行断点(也请参阅图 4)。

图 4. 视图通过左侧边缘的箭头指出当前正在执行的行

条件断点

一旦您找到出错的地方,您会想要了解在崩溃前程序在干些什么。完成该工作的一种方法是单步执行程序中的每条语句,一次一句,直到到达出问题的地方。有时候更好的方法是仅运行某段代码并在出问题的地方终止其执行,这样就可以检查该位置上的数据。要实现这一点,可能要声明每当表达式的值更改时就被

触发的条件断点(请参阅图 5)。此外,在输入条件表达式时还可以使用代码辅助。

图 5. 设置条件断点触发器

对表达式求值

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

图 6. 用 Inspect 选项求表达式的值

查看变量

Variables 视图(在 Display 窗口中)显示了选中的堆栈帧中的变量值(请参阅图 7)。要查看所请求的变量,只需展开 Variables 视图中的树直到您看到所请求的元素为止。您也可以在 Debug 视图中单步执行代码的同时,在Variables 视图中查看变量。

选中“valuesList”变量,右键选择【Display】(或者快捷键:Ctrl+Shift+D),在弹开的视图中可以查看此变量的值。

也可以在此视图中写入一些Java代码片段。

如下图所示:

图 7. 在 Display 窗口中查看变量

当调试器在断点上停止时,您可以通过在Run > Debug...菜单上选择 Step Over 选项来继续调试器会话(请参阅图 8)。这将单步跳过突出显示的代码行并执行同一个方法中的下一行(或者它在调用当前方法的方法中继续)。作为最后一步的结果而发生更改的变量用颜色突出显示(缺省值是红色),所用颜色可在“Changed Variable Value Color”首选项(由 Debug Variable Views 指定)中指定。

图 8. Run... 菜单中的调试器命令

要在 Debug 视图中暂挂线程的执行,选择一个运行中的线程并单击 Debug 视图工具栏中的Suspend按钮。会显示该线程的当前调用堆栈,并且在 Debug 透视图的编辑器中突出显示当前执行的行。

暂挂线程时,将光标放置到 Java 编辑器中的变量上,该变量的值显示在一个小悬浮窗口中。同样,该线程的顶部堆栈帧被自动选中,该堆栈帧中的可视变量显示在 Variables 视图中。可以通过在 Variables 视图中单击变量名来检查相应的变量。

结束语

Eclipse 平台提供了内置的Java 调试器,该调试器具有标准调试功能,包括进行单步执行、设置断点和值、检查变量和值以及暂挂和恢复线程的能力。它还可以用于调试在远程机器上

运行的应用程序。

更多资料可查看Eclipse自带的帮助文件。

eclipse使用技巧

代码篇: 1.在源代码中快速跳转: eclipse中的跳转甚至比https://www.sodocs.net/doc/da173628.html,还方便,方法是按住Ctrl键,然后鼠标指向变量名,方法名,类名,就会出现链接,点击就可跳到定义处。 2.实时语法检查: 编辑区右侧如果有红色小方块,直接点击就可跳到有错的行;黄色小方块是警告,可以忽略,但最好检查一下;如果某个函数尚未完成,要提 醒自己注意怎么办?加上注释// TODO,右侧就会有蓝色小方块,提示你此处尚未完成。当一个源码的右侧没有任何提示时,说明这个文件已经 完成了。 3.自动生成getter/setter方法: 只需要申明protected,private类成员变量,然后在Package Explore中找到该类,右键点击,选择“Source”“Generate Getters and Setters”。 4.更改类名/变量名: 如果涉及到多处修改,不要直接在源码中更改,在Package Explore中找到要改名的类或变量,右键点击,选择“Refactor”“Rename”, eclipse会自动搜索所有相关代码并替换,确保不会遗漏或改错。 5.匹配Try: 如果写的代码需要抛出或者捕捉异常,在JBuilder中,你需要首先引入这个异常类,然后再在写好的代码前后加try,catch或者在方法后面加 throws,在eclipse里完全不必要这样,只需要写好代码,然后按ctrl + 1,这时会出来提示,提示你是throw还是catch这个异常,选择你需要 的,按下enter就可以了。 6.快速书写循环代码: 在写循环或者选择条件的语句时,先写出关键字如if、while,然后按alt + /自己去看有什么好处吧。接下来会出来提示代码,按下tab可以在 框框中跳,按下确定跳出代码提示。 热键篇: ctrl + D:删除行 ctrl + M:当前窗口的最大化或最小化 ctrl + L:跳到指定的行 ctrl + 1:代码纠错提示 alt + /:代码辅助提示 F11:运行上次运行的程序

AS断点调试

1.设置断点 选定要设置断点的代码行,在行号的区域后面单击鼠标左键即可。 2.开启调试会话 点击红色箭头指向的小虫子,开始进入调试。 IDE下方出现Debug视图,红色的箭头指向的是现在调试程序停留的代码行,方法f2()中,程序的第11行。红色箭头悬停的区域是程

序的方法调用栈区。在这个区域中显示了程序执行到断点处所调用过的所用方法,越下面的方法被调用的越早。 3.单步调试 3.1 step over 点击红色箭头指向的按钮,程序向下执行一行(如果当前行有方法调用,这个方法将被执行完毕返回,然后到下一行) 3.2 step into 点击红色箭头指向的按钮,程序向下执行一行。如果该行有自定义方法,则运行进入自定义方法(不会进入官方类库的方法)。具体步骤如下:在自定义方法发f1()处设置断点,执行调试

点击

3.3 Force step into 该按钮在调试的时候能进入任何方法。 3.4 step out 如果在调试的时候你进入了一个方法(如f2()),并觉得该方法没有问题,你就可以使用stepout跳出该方法,返回到该方法被调用处的下一行语句。值得注意的是,该方法已执行完毕。 3.5 Drop frame

点击该按钮后,你将返回到当前方法的调用处(如上图,程序会回到main()中)重新执行,并且所有上下文变量的值也回到那个时候。只要调用链中还有上级方法,可以跳到其中的任何一个方法。 4. 高级调试 4.1 跨断点调试 设置多个断点,开启调试。

想移动到下一个断点,点击如下图: 程序将运行一个断点到下一个断点之间需要执行的代码。如果后面代码没有断点,再次点击该按钮将会执行完程序。 4.2 查看断点

Visual Studio调试之断点进阶篇

在上一篇文章Visual Studio调试之断点基础篇里面介绍了什么是断点,INT 是Intel 系列CPU的一个指令,可以让程序产生一个中断或者异常。程序中如果有中断或者异常发生了以后,CPU会中断程序的执行,去一个叫做IDT的部件查找处理这个中断(或者异常)的例程(Handler)。IDT是操作系统在启动的时候初始化的,至于IDT的细节问题,例如什么是IDT,怎样编写一个IDT的例程,怎样初始化IDT,可以去网上搜索一些资料。 总之,这里我们只要知道,CPU在执行程序指令过程中,碰到INT 3中断程序的执行,CPU 然后去IDT表里面找到处理断点的例程入口。这个例程要做的事情就是: 1.先看看机器里面是不是安装了一个调试器—记住,这一步很重要,之所以重要以 后的文章里面会介绍。 2.如果机器里面没有安装调试器,那么操作系统就会终止程序的执行。 3.否则操作系统启动调试器,并将调试器附到进程上。 4.这样,我们才能在调试器里面检查程序内部变量的值。 前面文章里面的INT 3 (或者DebugBreak(),或者Debugger.Break())指令是我们自己在代码里面硬编码进去的,因此我们在Visual Studio里,在相应的代码行里面点一下,出现一个小红球,也就是说Visual Studio在程序指令集某个地方动态地添加了一个INT 3指令。现在的问题来了,Visual Studio是如何在程序中正确找到插入INT 3指令的位置的? 或者更具体一些,我们在源代码(文本文件)里面设置断点的,Visual Studio需要把代码行翻译成在程序指令集中的位置。Visual Studio之所以需要做翻译,是因为通常一行C++或者C#代码都会对应好几行汇编指令。 因此,Visual Studio需要一个额外的文件来执行这个翻译过程,这个额外的文件叫做调试符号文件(Symbols),是由编译器生成的。Visual Studio系列的编译器,不论是C#、https://www.sodocs.net/doc/da173628.html,还是C++编译器都会生成这个调试符号文件,.pdb 文件。所以如果你花一点时间看看Debug文件夹的话,你就会发现这个文件。 因此我们来看看Visual Studio支持的各种断点,并解释各种断点的实现方式 条件断点 首先我们先看看如何设置条件断点,条件断点有两种,一种是根据触发的次数来设置,另外一种是根据一条预置的条件来设置。 根据触发次数设置 比如说,你有一个循环,循环1000次,你知道有一个BUG总是在500次之后才会出现,因此肯定希望在循环内设置一个断点,但是前面500次都不会触发这个断点,否则连续按500次的F5的确不是一件轻松的差事。

Eclipse调试方法入门

Eclipse调试 这个教程将帮助学生获得关于调试的一些关键概念,以及如何进行一个调试 这是我们所熟悉的Eclipse环境,我们从这里开始教程。打开一个我们想进行调试的工程 需要做的第一件事就是给我们的工程设置一个调试特性,点击bug图标之后的下拉三角。弹出Debug窗口 双击Jave Application,我们可以对程序创建一个Java Application型的新配置。选择工程及主类。点击“Apply”然后关闭。

放置断点 断点起到告诉程序什么时候暂停的作用。进入你想放置断点的代码行。右键点击选中行前面的的兰色竖条部分。选择toggle breakpoint。或者双击兰色竖条。 选择toggle breakpoint. 选择Window菜单,切换到debug透视图。这就是Debug透视图,如果你注意到,我们的代码窗口在下方。并且上面多出了两个窗口,左边就是显示我们运行程序的窗口,以及堆栈。右边将显示变量和表达式。

下的箭头符号,进行选择 代码变为绿色,意思是这是将要执行的下一行代码。

现在我们可以执行几个操作。其中比较基础的一个是单步操作。如果断点标注的是一个函数调用,选择单步进入Step Into,你可以执行并进入到代码的下一行;同样的如果你想不执行方法的这一行,你可以执行“Step over”,并且不进入方法。 假设我们使用单步跳入,并且进入了一个函数调用开始调试。这时如果我们使用一个“Step Return”,这将完成执行方法的余下部分。你将顺利的处于方法后的将要执行的那一行代码中。

(继续)按钮。 最后,如果我们不再想进行调试,并且想要程序结束,你可以点击位于左窗口顶端的“terminate”按钮。

如何高效使用GDB断点

在gdb中,断点通常有三种形式 断点(BreakPoint): 在代码的指定位置中断,这个是我们用得最多的一种。设置断点的命令是break,它通常有如下方式: 可以通过info breakpoints [n]命令查看当前断点信息。此外,还有如下几个配套的常用命令: 观察点(WatchPoint): 在变量读、写或变化时中断,这类方式常用来定位bug。

捕捉点(CatchPoint): 捕捉点用来补捉程序运行时的一些事件。如:载入共享库(动态链接库)、C++的异常等。通常也是用来定位bug。 捕捉点的命令格式是:catch ,event可以是下面的内容 自动删除。 捕捉点信息的查看方式和代码断点的命令是一样的,这里就不多介绍了。 在特定线程中中断 你可以定义你的断点是否在所有的线程上,或是在某个特定的线程。GDB很容易帮你完成这一工作。

break thread break thread if ... linespec指定了断点设置在的源程序的行号。threadno指定了线程的ID,注意,这个ID是GDB分配的,你可以通过"info threads"命令来查看正在运行程序中的线程信息。如果你不指定thread 则表示你的断点设在所有线程上面。你还可以为某线程指定断点条件。如: (gdb) break frik.c:13 thread 28 if bartab > lim 当你的程序被GDB停住时,所有的运行线程都会被停住。这方便你你查看运行程序的总体情况。而在你恢复程序运行时,所有的线程也会被恢复运行。那怕是主进程在被单步调试时。 在特定条件下中断 条件断点的一种特殊场景是在断点命中指定次数后停下来。事实上每个断点都有一个 ignore count, 他是一个正整数。通常情况下它的值为0,所以看不出来它的存在。但是如果它是一个非0值, 那么它将在每次命中后都将 count 减 1,直到它为 0. ignore bnum count 恢复程序运行和单步调试 在gdb中,和调试步进相关的命令主要有如下几条: 参考资料

javaEclipse下配置Windchill远程调试 windchill学习笔记

Tomcat配置 修改Tomcat\config.properties 找到mode=prod,对比内容,如果没有以下3行,进行追加,同时注释掉mode=prod mode=dev **********设置tomcat远程调试*********** jpdaAddress=8002 //表示要远程调试连接的端口号 jpdaTransport=dt_socket shell中进入Tomcat目录 cd .. cd Tomcat 执行以下命令 ant -f config.xml configureScripts #ant -f config.xml -projecthelp无用 执行完毕后,打开Tomcat/bin目录下的wttomcat_start.bat,查找以下内容,如果没有则追加 *********************启用JPDA ********************************* rem Un-rem next line to enable debugger attaching to this instance of Tomcat set JAVA_OPTS=%JAVA_OPTS% -Xnoagent -Xdebug -Xrunjdwp:transport=dt_socket,address=8002,server=y,suspend=n 重启Tomcat 目的:使本机和target 服务器连接起来 说明:JPDA简介 顾名思义,JPDA为Java平台上的调试器定义了一个标准的体系结构。该体系结构包括3个主要组成部分:JVM TI、JDI和JDWP。 JVM TI的全称是Java Virtual Machine Tool Interface,它定义了JVM为了支持调试而必须提供的功能及相应的访问接口。这些访问接口是以本地语言的形式提供的,由JVM(比如Sun公司的HotSpot VM)负责实现。 不过,JVM TI只是JVM提供的一系列函数,调试器(特别是远程的调试器)如何调用呢?其实啊,JVM TI的直接客户端并不是调试器,而是一个称为“JPDA back-end”的东东。这个东东应该是属于JVM的一部分,在SUN JRE的bin目录下可以找到jdwp.dll(jdwp.so)的库文件,这就是JPDA back-end的实现。按我理解,JPDA back-end提供了各种访问方式(共享内存,Socket),通过这些方式接收调试器的请求,然后调用JVM TI接口。

eclipse断点调试指导

1.进入debug模式(基础知识列表) 1、设置断点 2、启动servers端的debug模式 3、运行程序,在后台遇到断点时,进入debug调试状态 ============================= 作用域功能快捷键 全局单步返回F7 全局单步跳过F6 全局单步跳入F5 全局单步跳入选择Ctrl+F5 全局调试上次启动F11 全局继续F8 全局使用过滤器单步执行Shift+F5 全局添加/去除断点Ctrl+Shift+B 全局显示Ctrl+D 全局运行上次启动Ctrl+F11 全局运行至行Ctrl+R 全局执行Ctrl+U ============================= 1.Step Into (also F5) 跳入 2.Step Over (also F6) 跳过 3.Step Return (also F7) 执行完当前method,然后return跳出此

method 4.step Filter 逐步过滤一直执行直到遇到未经过滤的位置或断点(设置Filter:window-preferences-java-Debug-step Filtering) 5.resume 重新开始执行debug,一直运行直到遇到breakpoint。 例如:A和B两个断点,debug过程中发现A断点已经无用,去除A 断点,运行resume就会跳过A直接到达B断点。 6.hit count 设置执行次数适合程序中的for循环(设置breakpoint view-右键hit count) 7.inspect 检查运算。执行一个表达式显示执行值 8.watch 实时地监视对象、方法或变量的变化 9.我们常说的断点(breakpoints)是指line breakpoints,除了line breakpoints,还有其他的断点类型:field(watchpoint)breakpoint,method breakpoint ,exception breakpoint. 10.field breakpoint 也叫watchpoint(监视点) 当成员变量被读取或修改时暂挂 11.添加method breakpoint 进入/离开此方法时暂挂(Run-method breakpoint) 12.添加Exception breakpoint 捕抓到Execption时暂挂(待续...) 断点属性: 1.hit count 执行多少次数后暂挂用于循环 2.enable condition 遇到符合你输入条件(为ture\改变时)就暂挂 3.suspend thread 多线程时暂挂此线程 4.suspend VM 暂挂虚拟机 13.variables 视图里的变量可以改变变量值,在variables 视图选择变

在Eclipse上调试Android应用程序

在Eclipse上调试Android应用程序 以前一直用VC开发,VC开发工具调试程序非常简单,按F7源码编译通过后,按F5就开始调试了。为了开发Android程序,使用Eclipse开发环境,刚接触Eclipse不久,对Eclipse 环境不够熟悉,在这之前开发Android程序都是通过Trace定位问题的,后来得知Eclipse也可以进行单步调试,经过动手试验,发现调试过程类似VC开发环境,下面是调试步骤: 1. 首先启动Eclipse,启动Android模拟器 2. 打开DDMS界面,选择要调试的设备,并指定要调试的进程,例如: 3.设置好断点,打开调试界面,按F11开始调试,可以F6进行单步调试。 ******************************** DDMS 的全称是Dalvik Debug Monitor Service,是Android 开发环境中的Dalvik虚拟机调试监控服务。它为我们提供例如:为测试设备截屏,针对特定的进程查看正在运行的线程以及堆信息、Logcat、广播状态信息、模拟电话呼叫、接收SMS、虚拟地理坐标等等。 在集成开发环境中,有DDMS控制台窗口。如,MyEclipse中,有个叫DDMS的Console。 1.如何启动DDMS 这个工具存放在SDK-tools路径下,启动方法: 1) 直接双击ddms.bat运行; 2) 在Eclipse调试程序的过程中启动DDMS,在Eclipse如下: Window-Open Perspective-DDMS,点击启动就可以了 DDMS对Emulator和外接测试机同等效用,如果系统检测到它们(VM)同时运行,那么DDMS 将会默认指向Emulator,以上两种启动后的操作有些不一样,建议分别尝试下; (WGY-Dalvik:虚拟机;Monitor:监听器)

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的值为4 3.程序停留后查看变量的数值 蓝框中的内容表示为断点的入口方法,就好比你的断点是从那个方法进

Eclipse的debug操作手册

在本教程中,我们将看到使用Eclipse调试Java应用程序。调试可以帮助我们识别和解决应用程序中的缺陷。我们将重点放在运行时间的问题,而不是编译时错误。有提供像gdb的命令行调试器。在本教程中,我们将集中在基于GUI的调试,我们把我们最喜爱的IDE Eclipse来运行,通过本教程。虽然我们说的Eclipse,点大多是通用的,适用于调试使用的IDE像NetBeans。在看这篇文章前,我推荐你看一下Eclipse 快捷键手册,你也可以到这儿:下载PDF文件 我的eclipse版本是4.2 Juno。 0.三点特别提醒: ?不要使用System.out.println作为调试工具 ?启用所有组件的详细的日志记录级别 ?使用一个日志分析器来阅读日志 [ (System.out.println()对开发人员来说,有时候也许可以是一种调试手段,但是项目一旦完成他就没有什么用途了,就变成垃圾了,得必须注释或删除掉,这样会比较麻烦。启用所有组件的详细日志记录级别,运用日志分析器来记录详细系统运行状态,这对后期网站的优化和维护会有很多作用。)这仅仅是个人理解,仅供参考! ] 1.条件断点 想象一下我们平时如何添加断点,通常的做法是双击行号的左边。在debug视图中, BreakPoint View将所有断点都列出来,但是我们可以添加一个boolean类型的条件来决 定断点是否被跳过。如果条件为真,在断点处程序将停止,否则断点被跳过,程序继续执行。

2.异常断点 在断点view中有一个看起来像J!的按钮,我们可以使用它添加一个基于异常的断点,例如我们希望当NullPointerException抛出的时候程序暂停,我们可以这样: 3.观察点 这是一个很好的功能,他允许当一个选定的属性被访问或者被更改的时候程序执行暂停,并进行debug。最简单的办法是在类中声明成员变量的语句行号左边双击,就可以加入一个观察点。

VS环境断点调试技巧_85920453_597709898

VS环境断点调试技巧 设置断点:在如下图中的红色圆点处设置断点,红色圆点表示已经在这行设置断点。 启动调试:按F5或者点击左边红框中的按钮。右边框是开始执行(不调试)Ctrl+F5。 调试工具栏:下面是工具栏中对应的名称和快捷键。 在调试过程中F5是执行到下一个断点。F11是逐语句,在执行到下图中的断点时,按F11会执行到Fibonacci方法里面逐步记录执行过程。F10是逐过程,与逐语句不同的是,在执行到下图中断点时,再执行会执行断点下面的语句,而不是去执行语句中的方法。

局部变量:在调试过程中可以查看局部变量窗口,如下图里面会有变量的当前状态。如果找不到的话在 数组的状态表示如下图: InteliTrace记录每一步的调试状态。

条件中断 开发人员设置断点,运行程序,利用不同的输入触发断点,然后在断点处手工检查是否满足某些特定的条件,从而决定是否继续调查。如果当前场景不是他们想要的,按F5继续运行程序,尝试别的输入,手动重复刚才的过程。 针对上述情况,Visual Studio提供了一个方便得多的功能——“条件中断”。只有当程序满足了开发人员预设的条件后,条件断点才会被触发,调试器中断。这将避免频繁地手工检查/恢复程序运行,大量减少调试过程中的手工和烦琐工作。 如何设置条件断点: 设置条件断点非常容易。在特定的行上,按F9设置断点。 然后右击断点–编辑窗口左侧的红点,在上下文菜单上选择“条件”。 这时弹出一个对话框供你设置激活该断点所需的条件。比如:我们希望只有当x==5时,调试才中断。我们可以写出如下的表达式:

现在我再运行这个程序按F5达到条件断点,只有当x等于5时,程序运行才会被中断。对于其它条件下的x值,断点将被跳过。 记录到达断点次数 有时你希望,只有当第N次满足条件的运行到达断点时,才中断程序运行。例如:当第一次命中断点。可以通过右击断点,然后在弹出菜单上选择“命中次数”菜单命令实现。 这时系统弹出一个对话框,它允许你指定:(1)当满足条件,而且进入断点的累计次数等于N时,断点命中一次。(2)当满足条件,而且进入断点的累计次数是N的倍数时,断点命中一次。(3)当满足条件,而且进入断点的累计次数大于N时,每次命中断点。 注意:如果多个条件同时用的话,结果取交集。

eclipse debug (调试)

eclipse debug (调试) 学习心得 进入debug模式: 1、设置断点 2、启动servers端的debug模式 3、运行程序,在后台遇到断点时,进入debug调试状态 ============================= 作用域功能快捷键 全局单步返回 F7 全局单步跳过 F6 全局单步跳入 F5 全局单步跳入选择 Ctrl+F5 全局调试上次启动 F11 全局继续 F8 全局使用过滤器单步执行 Shift+F5 全局添加/去除断点 Ctrl+Shift+B 全局显示 Ctrl+D 全局运行上次启动 Ctrl+F11 全局运行至行 Ctrl+R 全局执行 Ctrl+U ============================= 1.Step Into (also F5) 跳入 2.Step Over (also F6) 跳过 3.Step Return (also F7) 执行完当前method,然后return跳出此method 4.step Filter 逐步过滤一直执行直到遇到未经过滤的位置或断点(设置Filter:window-preferences-java-Debug-step Filtering) 5.resume 重新开始执行debug,一直运行直到遇到breakpoint。 例如:A和B两个断点,debug过程中发现A断点已经无用,去除A断点,运行resume就会跳过A直接到达B断点。 6.hit count 设置执行次数适合程序中的for循环(设置 breakpoint view-右键hit count) 7.inspect 检查运算。执行一个表达式显示执行值 8.watch 实时地监视对象、方法或变量的变化 9.我们常说的断点(breakpoints)是指line breakpoints,除了line breakpoints,还有其他的断点类型:field(watchpoint)breakpoint,method breakpoint ,exception breakpoint. 10.field breakpoint 也叫watchpoint(监视点) 当成员变量被读取或修改时暂挂 11.添加method breakpoint 进入/离开此方法时暂挂(Run-method breakpoint) 12.添加Exception breakpoint 捕抓到Execption时暂挂(待续...) 断点属性: 1.hit count 执行多少次数后暂挂用于循环 2.enable condition 遇到符合你输入条件(为ture\改变时)就暂挂

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,请参阅参考资源。图 1 显示了 Debug 透视图的一般视图。 图 1. Eclipse Debug 透视图的一般视图

od破解调试秘籍断点

拦截窗口: bp CreateWindow 创建窗口 bp CreateWindowEx(A) 创建窗口 bp ShowWindow 显示窗口 bp UpdateWindow 更新窗口 bp GetWindowText(A) 获取窗口文本 拦截消息框: bp MessageBox(A) 创建消息框 bp MessageBoxExA 创建消息框 bp MessageBoxIndirect(A) 创建定制消息框 拦截警告声: bp MessageBeep 发出系统警告声(如果没有声卡就直接驱动系统喇叭发声) 拦截对话框: bp DialogBox 创建模态对话框 bp DialogBoxParam(A) 创建模态对话框 bp DialogBoxIndirect 创建模态对话框 bp DialogBoxIndirectParam(A) 创建模态对话框 bp CreateDialog 创建非模态对话框 bp CreateDialogParam(A) 创建非模态对话框 bp CreateDialogIndirect 创建非模态对话框 bp CreateDialogIndirectParam(A) 创建非模态对话框 bp GetDlgItemText(A) 获取对话框文本 bp GetDlgItemInt 获取对话框整数值 拦截剪贴板: bp GetClipboardData 获取剪贴板数据 拦截注册表: bp RegOpenKey(A) 打开子健 bp RegOpenKeyEx 打开子健 bp RegQueryValue(A) 查找子健 bp RegQueryValueEx 查找子健 bp RegSetValue(A) 设置子健 bp RegSetValueEx(A) 设置子健 功能限制拦截断点: bp EnableMenuItem 禁止或允许菜单项 bp EnableWindow 禁止或允许窗口 拦截时间:

黑马程序员java教程:断点调试模式运行java程序

断点调试模式运行java程序 1断点调试的目的 ●跟踪源代码; ●观察程序运行状态; 2调试程序1 编写求和代码 ●设置断点; ●debug运行; ●进入debug透视图; ●程序会运行到断点处停住; ●当前行还没有运行; ●查看变量值:选中变量→鼠标右键→Watch; ●F5(跳入)、F6(跳过)、F7(跳出); 3调试程序2 使用Arrays.binarySearch()编写折半搜索数组元素代码 ●设置断点; ●测试跳入; ●测试跳过; ●测试跳出; ●添加断点; ●测试进入下一断点; ●测试返回当前方法栈的头部(Drop To Frame); ●清除断点; ●清除表达式; ●注意,停止程序! MyEclipse快捷键 1MyEclipse常用快捷键1 ●Alt + /(内容助理):补全; ●Ctrl + 1(快速定位):出错时定位错误,与点击“红X”效果一样;

●Ctrl + Shift + O:导包; ●Ctrl + Shift + F:格式化代码块; 2MyEclipse常用快捷键2 ●Ctrl + Shift + T:查看源代码; ●Ctrl + 点击源代码:查看源代码; ●F3:查看选中类的源代码; ●Alt + 左键:查看源代码时的“原路返回”; ●Ctrl + Shift + X:把小写修改为大写; ●Ctrl + Shift + Y:把小写修改为小写; ●Ctrl + Alt + 下键:复制当前行; ●Ctrl + /:添加或撤销行注释; ●Ctrl + Shift + /:对选中代码添加段注释; ●Ctrl + Shift + \:撤销当前段注释; ●Alt + 上键:向上移动当前行; ●Alt + 下键:向上移动当前行; ●Ctrl + D:删除当前行; MyEclipse: ●工作空间; ●项目名称; ●包名; ●类名; ●Alt + /、Ctrl + 1、Ctrl + shift + o、Ctrl + shift + f

keil c 的在线调试与断点设置

Keil 的调试命令、在线汇编与断点设置 上一讲中我们学习了如何建立工程、汇编、连接工程,并获得目标代码,但是做到这一步仅仅代表你的源程序没有语法错误,至于源程序中存在着的其它错误,必须通过调试才能发现并解决,事实上,除了极简单的程序以外,绝大部份的程序都要通过反复调试才能得到正确的结果,因此,调试是软件开发中重要的一个环节,这一讲将介绍常用的调试命令、利用在线汇编、各种设置断点进行程序调试的方法,并通过实例介绍这些方法的使用。 一、常用调试命令 在对工程成功地进行汇编、连接以后,按Ctrl+F5 或者使用菜单 Debug->Start/Stop Debug Session 即可进入调试状态,Keil 内建了一个仿真CPU 用来模拟执行程序,该仿真CPU 功能强大,可以在没有硬件和仿真机的情况下进行程序的调试,下面将要学的就是该模拟调试功能。不过在学习之前必须明确,模拟毕竟只是模拟,与真实的硬件执行程序肯定还是有区别的,其中最明显的就是时序,软件模拟是不可能和真实的硬件具有相同的时序的,具体的表现就是程序执行的速度和各人使用的计算机有关,计算机性能越好,运行速度越快。 进入调试状态后,界面与编缉状态相比有明显的变化,Debug 菜单项中原来不能用的命令现在已可以使用了,工具栏会多出一个用于运行和调试的工具条,如图1 所示,Debug 菜单上的大部份命令可以在此找到对应的快捷按钮,从左到右依次是复位、运行、暂停、单步、过程单步、执行完当前子程序、运行到当前行、下一状态、打开跟踪、观察跟踪、反汇编窗口、观察窗口、代码作用范围分析、1#串行窗口、内存窗口、性能分析、工具按钮等命令。 接着执行下一行程序,中间不停止,这样程序执行的速度很快,并可以看到该 段程序执行的总体效果,即最终结果正确还是错误,但如果程序有错,则难 以确认错误出现在哪些程序行。单步执行是每次执行一行程序,执行完该行 程序以后即停止,等待命令执行下一行程序,此时可以观察该行程序执行完 以后得到的结果,是否与我们写该行程序所想要得到的结果相同,借此可以 找到程序中问题所在。程序调试中,这两种运行方式都要用到。 使用菜单STEP 或相应的命令按钮或使用快捷键F11 可以单步执行程序, 使用菜单STEP OVER 或功能键F10 可以以过程单步形式执行命令,所谓 过程单步,是指将汇编语言中的子程序或高级语言中的函数作为一个语句来

apache2.2整合resin3+Eclipse远程调试

(第一部分)apache2.2 + resin3.1.4 整合 前言 apache和resin的整合是为了把动态的jsp、action请求与静态的界面进行分离,达到系统访问高效性,以及静态界面独立发布、管理。 文中的描述环境是windows 8系统,linux系统的话个别安装步骤可能不一样,不过配置类的东西应该都是一样的。 一. 安装resin3.1.4 下载resin安装包解压后目录为 D:\soft\resin-3.1.14-ap 二. 安装apache2.2 管理员方式执行apache_2.2.4-win32-x86-no_ssl.msi 出现安装界面,一次填写三个选项,自定义安装,安装目录为“D:\soft\Apache”三. 配置apache --(httpd.conf) 安装目录“D:\soft\Apache\conf”下httpd.conf文件为配置文件,修改配置文件 .1. 参数配置 找到如下参数,去掉前面的'#'(#为注释符),如果没有添加如下参数配置 ThreadsPerChild 250 MaxRequestsPerChild 0 .2. 监听端口 找到如下参数,如果没有添加如下参数配置,80为监听服务端口,避免与其他服务端口冲突,自行修改,其中这2个端口一定保持一致

Listen 80 ServerName localhost:80 .3. 绑定resin 如下参数如没有则添加,其中caucho_module路径为resin的安装路径 LoadModule caucho_module "D:/soft/resin-3.1.14-ap/win32/apache-2.2/mod_caucho.dll" SSLRandomSeed startup builtin SSLRandomSeed connect builtin .4. 绑定resin,参数配置 增加如下配置参数,其中127.0.0.1为resin服务ip,如与apache同机器则使用127.0.0.1或localhost, 但ip、端口一定和resin配置一致,都是用127.0.0.1或localhost。 ResinConfigServer 127.0.0.1 6800 SetHandler caucho-status .5. apache转向resin请求 apache收到jsp请求时,通过插件模块mod_caucho交给Resin处理 AddHandler caucho-request jsp SetHandler caucho-request AddHandler caucho-request do SetHandler caucho-request .6. 根目录,静态界面发布目录 DocumentRoot "D:/soft/Apache/htdocs/portal"

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

Eclipse调试常用技巧 发表时间:2010-04-06 最后修改:2010-11-26 记得刚刚毕业的时候,自己连断点也不会打,当时还在用JCreate,就连毕业设计也是用System.out找Bug的,想想真的很笨。开始工作后,一个星期过去了,在一个1、2百万行的系统中找Bug,我依然在用System.out,当时最痛苦的就是修改代码,每次找到疑似Bug,就输出一下,然后重启(那时也不知道代码热替换),直到有一天带我的导师发现了这样笨笨的调试Bug,才让我第一次认识了断点,也知道了代码修改完了可以进行热替换,我这个中国教育的半牺牲品才算向美好生活迈进了一小步。 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"

ReWorks嵌入式实时操作系统和ReDe嵌入式软件开发环境

ReWorks嵌入式实时操作系统和ReDe嵌入式软件开发环境 1 引言 嵌入式系统与软件是发展先进制造业和现代服务业,满足高端数字化应用对网络自适应、服务个性化、功能综合化以及功能复杂化等需求的重要技术保障。 随着嵌入式微处理器、通信总线、存储器和嵌入式计算机系统结构的技术发展,嵌入式硬件的价格不断降低,计算能力、通信能力和存储能力不断提高,这为嵌入式软件的发展提供了更大的空间。另一方面,嵌入式应用层面的信息化、智能化、网络化需求,促使传统的嵌入式软件向基于嵌入式实时操作系统的、更具功能扩展能力和价值创造能力的嵌入式软件发展。在轨道交通、船舶电子、信息家电等领域,嵌入式技术的应用已经成为提高产品竞争力的重要手段。 ReWorks是华东计算技术研究所自主研制的嵌入式实时操作系统,ReDe是为ReWorks提供的嵌入式软件开发环境,该产品已广泛应用于轨道交通、船舶电子、信息家电、工业控制和国防领域。本文从技术角度对ReWorks/ReDe的结构、功能和特点作简要介绍。 2 ReWorks嵌入式实时操作系统

嵌入式实时操作系统位于嵌入式硬件和嵌入式应用软件之间,为上层应用提供基础服务,是信息家电、信息终端等嵌入式应用产品的核心和灵魂,应用系统的功能实现、实时性能、安全可靠在很大程度上依赖于操作系统的支持。 ReWorks/ReDe采取宿主/目标机的体系结构,如图1所示: 图1 ReWorks/ReDe的宿主/目标机体系结构(1)系统结构

ReWorks采用微内核及组件技术,能根据应用需要对操作系统内核进行配置、裁剪、扩展与定制,具备较强的伸缩能力。其中,微内核提供强实时调度、基本内存管理、时钟管理、中断管理等功能,核心组件提供定时器、区域、分区、信号、事件、信号量、消息等可裁剪功能。这种微内核、层次化组件结构决定了其固有的模块化特性,为提高系统的升级维护能力、目标处理环境适应能力以及系统的扩展能力等提供了基础保障。 (2)ReWorks的强实时性 ReWorks提供实时多任务管理机制,支持基于优先级的可抢占调度、时间片轮转调度以及速率单调算法等任务调度策略和技术。 对于可抢占调度,高优先级的任务可随时打断低优先级任务的运行,抢占点不仅包括应用程序,也包括大部分内核程序,见图2。同时针对关键任务,允许任务的排他性运行,一旦其进入运行状态,其它优先级更高的任务也不能抢占调度,直至该任务被阻塞或运行完成。这种调度模式可以最大限度地保证关键任务的截止时间得到满足。 高优先级任务

相关主题