java 调试技巧
java调试技巧有哪些?调试不仅可以查找到应用程序缺陷所在,还可以解决缺陷。对于Java程序员来说,他们不仅要学会如何在Eclipse里面开发像样的程序,更需要学会如何调试程序。
条件断点
如果你不知道如何添加断点,只需点击左边面板(行号前面)断点即被创建。在调试界面中,“断点”视图会把所有被创建的断点列出来。我们可以给它加一个布尔条件,也就是说,该断点会被激活并且如果布尔条件为真,就会执行该断点,否则将会跳过往下执行。
异常断点
在断点视图中,有一个J!标记按钮!我们可以使用该按钮来添加一个Java异常断点。例如,我们想让程序在遇到空指针异常(NullPointerException)时,仍然能继续调试,那么我们可以使用该按钮来添加一个异常断点!
监视点
这是一个非常好的功能,当选定的属性访问或修改程序时,程序会停止执行并允许进行调试。在Outline视图中选择一个类变量并从上下文菜单中选择切换监视点,属性监视点将会被创建,在断点(Breakpoints)视图中会把所有监视点用列表的形式显示出来。
评估/检查
按Ctrl+Shift+D或者Ctrl+Shift+I来显示选定变量或者表达式的值。我们也可以给一个变量或表达式添加永久观察点,当程序在调试时,这些观察点就会在表达式视图(Expression view)中显示出来。
修改变量值
在调试过程中,我们可以修改变量值。先选好一个变量然后进入变量视图(Variables view),根据变量类型在其对应的Value列里输入值即可。
Java调试工具
1. JDB
Java Debugger(JDB)是一款高效的调试器,能够识别和修复Java程序中的bug。它也是一个用于Java类的简单的命令行调试器。此调试器包含的Java平台调试器体系结构(JPDA)可加强检查和调试本地或远程的JVM(Java虚拟机)。
JDB也是流行的Java IDE,包括NetBeans IDE和Eclipse IDE来支持Java调试,因此,非常有助于Java开发。
2. Bugloo
这款源代码级的调试器是专门设计用于支持Scheme编译器——Bigloo的。因此,使用Bigloo编译器的程序可以高效地使用Bugloo调试器进行调试。当然,不仅仅是Bigloo程序,还有Java程序或者两者的结合都可以使用此调试工具。它部署在提供了一套标准API的JVM调试架构上。此专家级软件还包含了与GDB相同的调试模型,并提供众多的功能来帮助我们应对当代编程语言中的功能问题。
3.Cricket Cage
又一个多功能的调试器,通过自动生成重复性bug和测试场景的JUnit测试用例来加强对Java程序的调试。因此,它可以通过扩展生成代码来提高我们的工作效率。这更进一步地允许安装代码生成器和执行开发相应测试用例的程序。此外,你还可以通过整合测试用例到build.xml文件中来重复每一个构建的测试。
4. Artima SuiteRunner
这是一款发布在开源软件许可证下的免费开源工具包,非常适合用于测试Java程序。Artima SuiteRunner可当作独立的测试工具,用来开发支持Java API的单元测试和一致性测试。并且,它还可以和JUnit一起来执行现有的JUnit测试套件。JUnit用户还可享受到由调试器提供的帮助以确保代码万无一失。它提供报告、配置文件和runpath给用户,同时坚持实现用户开发的JUnit测试用例。
如何调试Java程序
1.在你觉得有错的地方设置断点。在代码行数前,点击右键,注意是右键,然后选择Toggle Breakpoint。
你可能会问,我如何知道在哪儿放置断点?如果对这个问题完全没有感觉,你完全可以多打几个断点,单步调试直到找到异常,只是多花一点时间而已,而且这样可以更深入了解程序的执行过程!当然,如果你大致可以直到哪里可能会出问题,或者异常信息报告类位置,那么就可以在这里设置断点。
2.点击Debug,如果是web程序,需要你将Tomcat或者Apache服务器以Debug模式启动。这很重要,标准的Start模式,不能进入预先设置的断点,也就不能达到调试的目的。
3.运行程序,当程序运行到刚才设置断点的位置就会停下来,并且那行代码底色会高亮显示。这时候,你可以通过屏幕按钮或者键盘控制程序的进行。下面是键盘对应调试的快捷键,如果不起作用,你可以检查一下是不是键盘冲突。比如有道词典的快捷键,经常会和Debud模式下的Resume冲突。
4.进入调试界面可以看到你想要的信息。
5.在Variables里面可以查看所有变量的值,比如刚才设置的断点里面的值,右键ChangeValue可以更改,部分IDE支持在窗口中热更改并执行代码。
6.下面按钮第一个是进入方法执行,比如你调用了其他方法,可以进入方法一步一步执行,如果点击第二个按钮,只会在本方法内一步一步执行,第三个按钮时你跳出此方法,继续执行调用这个方法的原方法。
7.执行完程序。
8.为Eclipse添加反编译插件,更好的调试
java程序错误类型
语法错误是指由于编程中输入不符合语法规则而产生的。程序编译就通不过,程序不能运行起来。此类错误最简单,调试起来比较容易。
例如:表达式不完整、缺少必要的标点符号、关键字输入错误、数据类型不匹配、循环语句或选择语句的关键字不匹配等。通常,编译器对程序进行编译的过程中,会把检测到的语法错误以提示的方式列举出来,又称为编译错误。
语法错误的调试,则可以由集成开发环境提供的调试功能来实现,在程序进行编译时,编译器会对程序中的语法错误进行诊断。
编译诊断的语法错误分为3中:致命错误、错误和警告。
(1)致命错误:这个错误大多是编译程序内部发生的错误,发生这类错误时,编译被迫中止,只能重新启动编译程序,但是这类错误很少发生,为了安全,编译前最好还是先保存程序。
(2)错误:这个错误通常是在编译时,语法不当所引起的。例如:括号不匹配,变量未声明等。产生这类错误时,编译程序会出现报错提示,我们根据提示对源程序进行修改即可。这类错误是出现最多的。
(3)警告:是指被编译程序怀疑有错,但是不确定,有时可强行通过。例如:没有加void声明的主函数没有返回值,double数据被转换为float类型等。这些警告中有些会导致错误,有些可以通过。
常规解决方法:此类错误一般程序编译系统会自动提示相应的错误地点和错误原因,比如哪一行代码少了个括号等诸如此类的提示,常见的错误,看懂直接改正即可,如果是看不懂原因,可以将错误提示信息输入搜索引擎查找一下,一般都能找到具体的解决办法。或者有些编程平台会本身提供一个本地或者在线的信息库,提供详细的错误原因和解决办法,比如微软的.NET开发平台。