Java的调试器JDB简要上手

临时要调试一个Java程序,于是乎顺便学习一下Java的调试器JDB。配置上的东西不怎么难,但需要一点时间熟悉Java的工具链。所以在这里做个记录。 调试一个程序通常要两步准备,一是往程序中添加调试信息,二是把运行程序时让调试器介入。 如何往Java程序中加入调试信息 如果是直接使用Javac编译程序,那么在命令行加上以下选项: 参考javac的文档。 如果是ant的工程,则在调试对象的target中指定: 具体可以参考ant关于javac的文档中debuglevel一栏。 如何让JDB介入调试对象 JDB调试有本地和远程两种模式。本地模式只须直接调用被调试程序即可,例如: 本地调试有时候不方便,比如调试对象在远程服务器上,这时候远程模式就派上用场了。首先,运行Java虚拟机的时候使调试程序处于等待状态。可以指定Java的命令行选项来达到这个效果: 如果使用ant,可以在Target里面指定相应的属性: 完成上述步骤,调试对象会进入等待jdb连接状态,这时启动JDB连上就可以开始调试了: 更多JDB使用可以参考这篇文章。 ** 小瑕疵(Caveats)** 有时候JDB无法显示源文件内容,需要在命令行选项-sourcepath指定源代码路径。 默认情况下JDB遇到一个Exception就会停下来,执行ignore uncaught java.lang.Throwable可以避免此现象 JDB的命令行编辑功能较弱,不能保存历史,听说JLine可以解决这个问题,stackoverflow上有个相应的问题介绍。 JDB启动的时候可以调用一些初始的命令,可以放在home目录下的jdb.ini或者.jdbrc

September 28, 2015