如何调试Java程序?

大家最开始学习Java,都会觉得IDE调试好高端有木有,其实很简单了。

下文会尽量简单直观的教会你在Eclipse中调试,其他的IDE调试步骤也是类似的。

1.在你觉得有错的地方设置断点。

在代码行数前,点击右键,注意是右键,然后选择Toggle Breakpoint。

你可能会问,我如何知道在哪儿放置断点?

  • 如果对这个问题完全没有感觉,你完全可以多打几个断点,单步调试直到找到异常,只是多花一点时间而已,而且这样可以更深入了解程序的执行过程!
  • 当然,如果你大致可以直到哪里可能会出问题,或者异常信息报告类位置,那么就可以在这里设置断点。

2.点击Debug,如果是web程序,需要你将Tomcat或者Apache服务器以Debug模式启动。

这很重要,标准的Start模式,不能进入预先设置的断点,也就不能达到调试的目的。

3.运行程序,当程序运行到刚才设置断点的位置就会停下来,并且那行代码底色会高亮显示。

这时候,你可以通过屏幕按钮或者键盘控制程序的进行。

下面是键盘对应调试的快捷键,如果不起作用,你可以检查一下是不是键盘冲突

比如有道词典的快捷键,经常会和Debud模式下的Resume冲突。

作用域 功能 快捷键

全局 单步返回 F7 
全局 单步跳过 F6 
全局 单步跳入 F5 
全局 单步跳入选择 Ctrl+F5 
全局 调试上次启动 F11 
全局 继续 F8 
全局 使用过滤器单步执行 Shift+F5 
全局 添加/去除断点 Ctrl+Shift+B 
全局 显示 Ctrl+D 
全局 运行上次启动 Ctrl+F11 
全局 运行至行 Ctrl+R 
全局 执行 Ctrl+U

4.进入调试界面可以看到你想要的信息。

5.在Variables里面可以查看所有变量的值,比如刚才设置的断点里面的值,右键ChangeValue可以更改,部分IDE支持在窗口中热更改并执行代码。

6.下面按钮第一个是进入方法执行,比如你调用了其他方法,可以进入方法一步一步执行,如果点击第二个按钮,只会在本方法内一步一步执行,第三个按钮时你跳出此方法,继续执行调用这个方法的原方法,说明如下。

7.执行完程序。

8.为Eclipse添加反编译插件,更好的调试

一般来说,我们的项目或多或少的都会引用一些外部jar包,如果可以查看jar包的源代码,对于我们的调试可以说是事半功倍。

1、下载并安装jad.exe。将jad.exe解压到程序目录(可以放置任意目录),例如:C:\Program Files\Jad\jad.exe。

2、安装jadclipse插件。下载并解压net.sf.jadclipse_3.3.0.jar,将其拷贝到eclipse\plugins目录下,重新启动eclipse。

3、配置jadclipse。在eclipse窗口下,点击Window > Preferences > Java > JadClipse > Path to Decompiler。
(设置jad的绝对路径,例如 C:\Program Files\Jad\jad.exe)
可将Use Eclipse code formatter(overrides Jad formatting instructions)选项打勾,这样可以与Ctrl+Shif+F格式化出来的代码样式一致。

执行完这几个步骤,再在导入自Jar包的类或者方法上点击查看,就可以查看源代码了,如果不能,参考下面的解决办法:

多数情况下,是eclipse未能自动将JadClipse Class File Viewer设置成class文件的缺省打开方式。
在Eclipse的Windows——> Perference——>General->Editors->File Associations中修改“*.class”和“*.class without source”默认关联的编辑器为“JadClipse Class File Viewer”。
曾经配置过几次jad插件,如果不能反编译,如此设置后,屡试不爽。

Java Eclipse进行断点调试的更多相关文章

  1. eclipse打断点调试进入到class文件中,不显示变量值的解决办法汇总

    每天学习一点点 编程PDF电子书免费下载: http://www.shitanlife.com/code 问题描述:eclipse打断点调试进入到class文件中,而且监视区不显示变量结果 是由于对应 ...

  2. 编程入门-Eclipse的断点调试

    编程入门-Eclipse的断点调试 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 1>.双击选中你要调试的代码行数 2>.允许方法透视图 3>.进行代码调试 4& ...

  3. 解决Eclipse Debug 断点调试的source not found问题

    写完代码进行调试的时候,经常会用到断点调试,一步步检测问题,但有时候eclipse有时候无法进入断点,这样就失去了断点的意义,原因是debug无法找到该项目的源代码,解决方法如下 1,打开debug ...

  4. 关于Eclipse Debug断点调试出现 Search not found 页面的解决办法

    1. 在代码中鼠标右键 Debug AS ---> Debug Configurations... ----> 找到Source选项  ---> 点击add ---> 选择 j ...

  5. eclipse无法断点调试JDK源码的问题

    最近换了新版的eclipse,在jdk源码里面,打断点发现无法进入源码调试,程序直接跳过,已查资料发现自己eclipse配置的是jre环境的. 此处要配成jdk目录才有效 打开preferences, ...

  6. Spring Boot项目使用Eclipse进行断点调试Debug

    1.在命令行下定位到项目根目录,启动Spring Boot项目,命令如下: java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=80 ...

  7. Eclipse debug断点调试代码时出现source not found问题

    偶尔调试代码的时候会出现这种事情,之前并没有特别注意,今天稍微搜集一下相关资料: 1.跳转到的代码的确没有源码,下载源码后选择源码位置后便会正常显示源码. 2.源码和class文件不一致.即便勾选了a ...

  8. 【Java】Debug断点调试常用技巧

    Debug操作技巧 Show Execution Point 将光标回到当前断点停顿的地方 Step Over 执行当前行代码,并将运行进度跳转到下一行. Step Into 进入到当前代码行的方法内 ...

  9. NDK(6)eclipse下断点调试ndk代码

    Using the NDK Plugin 1. First set the path to SDK and NDK: Eclipse -> Window -> Preferences -& ...

随机推荐

  1. 《C和指针(Pointer on c)》 学习笔记(转自:http://dsqiu.iteye.com/blog/1687944)

    首先本文是对参考中三个连接的博客进行的整理,非常感谢三位博主的努力,每次都感叹网友的力量实在太强大了…… 第一章 快速上手 1.  在C语言中用/*和*/来注释掉这段代码,这个实际上并不是十分的安全, ...

  2. hiho #1325 : 平衡树·Treap

    #1325 : 平衡树·Treap 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho:小Hi,我发现我们以前讲过的两个数据结构特别相似. 小Hi:你说的是哪两个啊? ...

  3. Mysql中索引的 创建,查看,删除,修改

    创建索引 MySQL创建索引的语法如下: ? 1 2 3 CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [USING index_type] ON ...

  4. python self introspection

    http://www.ibm.com/developerworks/cn/linux/l-pyint/index1.html

  5. GMM简单解释

    1.GMM(guassian mixture model) 混合高斯模型,顾名思义,就是用多个带有权重的高斯密度函数来描述数据的分布情况.理论上来说,高斯分量越多,极值点越多,混合高斯密度函数可以逼近 ...

  6. Leetcode Unique Word Abbreviation

    An abbreviation of a word follows the form <first letter><number><last letter>. Be ...

  7. 【leetcode】Merge Intervals

    Merge Intervals Given a collection of intervals, merge all overlapping intervals. For example,Given  ...

  8. poj 1010

    http://poj.org/problem?id=1010 题意:给你n种邮票的价值,到0结束,这些邮票价值有可能相同,但是形状是不同的. 还有给你m个收藏家所需要收藏的邮票的总价格.到0结束. 每 ...

  9. 解压zip文件中文文件名乱码问题

    主要原因是,在windows下压缩文件时,是以系统的默认编码(gbk,gb18030)来压缩,zip文件并没有声明编码的格式,因此,linux下解压缩时,也会使用系统默认的格式(utf-8)解压缩,编 ...

  10. 用jquery怎么实现点击显示,再一次点击隐藏

    html代码: <button>点击</button> <div class="div"></div> css代码: <sty ...