我花了很多时间使用JPDA在Eclipse中调试应用程序。 Eclipse调试器有一些问题让我非常恼火。任何人都可以推荐插件,更好的调试器或者我不知道的技巧吗?
答案 0 :(得分:11)
我一直在使用Eclipse调试器一段时间并分享您的一些顾虑。但是,您提到的一些要点已在Eclipse调试器中解决/解决:
数据结构:变量视图已经具有显示列表/集合/数组等的“逻辑结构”的选项。此视图的左上角有一个按钮来启用此功能。您还可以通过Java-> Debug-> Logical Structures首选项添加自己的自定义表示。
异常:调试器允许您设置异常断点(在断点视图中添加Java异常断点按钮)。抛出特定异常时会触发这些断点。
源代码:如果您安装了一个包含字节码查看器的插件(例如asm字节代码插件http://asm.ow2.org/eclipse/index.html),调试器将在缺少源代码时逐步执行字节码。
答案 1 :(得分:4)
我同意Vilas Jagannath所说的很多内容。
使用Eclipse调试器 补充要点:
1)显示视图。此视图允许您在当前堆栈帧的上下文中运行代码。这允许您检查任意位代码。在某些方面,它有点原始,但它作为一个便笺本很好。
4)如果你想在具有复杂表达式的行中调用某个方法,可以导航到该函数,然后“Run to Line”(Ctrl + R)
5)您还可以使用步骤过滤器来过滤您不关心的类。右键单击您不关心的堆栈框架,然后点击“过滤器类型”。确保您有“使用步骤过滤器”。它是调试视图上“逐帧”按钮右侧两个箭头的图标。
答案 2 :(得分:3)
我使用NetBeans及其调试器。
关于你的第三点(例外):我认为没有任何其他方法可以在抛出异常时查看状态。抛出该方法的异常时,该方法的堆栈帧已被丢弃 - 它已丢失,因此您无法再检查它。
据我所知,NetBeans调试器也不允许您逐步执行字节码。
答案 3 :(得分:1)
通常情况下,我会说eclipse有一个比我首选的IDE更好的调试器,IntelliJ(免费版)对于前四个,IntelliJ可能更好用异常断点(允许你看到异常时的状态)抛出),对象类型的自定义渲染器和持久表达式(即每次更改上下文时重新评估表达式)
我不知道任何将逐步执行字节代码的调试器。
答案 4 :(得分:1)
以下是我的答案 - 子弹与你的问题项目符号的顺序相同:
我相信他们仍有改进的地方,但这些提示可能对你有所帮助。
答案 5 :(得分:1)
当我踩到一条线时 关于它的许多陈述,我不能 实际上看看哪些陈述 正在执行,除了“踩踏” 在“每个人看到它需要的地方 我
选择要插入的功能,并使用“Step Into Selection”(我在Ctrl-F5上有它,但您可以在上下文菜单中找到它。)
答案 6 :(得分:0)
作为替代方案,您可以使用log.debug和System.out.println来丢弃代码,这意味着您可以随心所欲地执行任何操作!
答案 7 :(得分:0)
对于与gui调试器不同的东西,我有一个名为jdiscript的项目,它允许您编写JVM的Java调试器接口的脚本。我发现它对于解决线程争用和查找在生产负载下偶尔会出现的问题特别有用。