命令行Java调试器

10

有没有一个好的命令行调试器可以用于Java?

我试过 JDB,但控制台界面不好用。如果我想修改最后一行并重新执行它,我必须重新输入整个命令。按 [UP-ARROW] 只会显示 "^[[A",而且也没有针对包/类/方法名称的自动补全功能。

GDB 是一个很好的替代工具,但我不知道如何使用它进行远程调试。

我使用的是 Maven/Vim 设置,并希望使用一个命令行调试器来调试 Java,是否有可能将 GDB 或其他好的调试器集成到这个设置中?

祝好,Sven


命令行开发很酷!但我认为使用Eclipse或IntelliJ IDEA这样的IDE可以让你轻松获得这些功能 :) - Jaime Hablutzel
直到现在我才听说eclim服务器,它似乎是一个有趣的项目...我猜你正在使用它,因为你之前对vim有丰富的经验...但是...为什么不只是使用带有vim快捷键的Eclipse呢?我以前使用emacs,但现在我真的更喜欢一直使用带有emacs快捷键的IDE。顺便说一句...如果你以前没有尝试过,我建议你使用IntelliJ IDEA...我也用过Netbeans和Eclipse...但是IDEA是最好的...但它不是免费的,至少终极版(可以工作的那个)不是。 - Jaime Hablutzel
有时我会在Eclipse中使用vim编辑器(http://eclim.org/场景3),但是对于我来说,Eclipse功能过于强大,因为每个功能都可以通过插件在vim中使用,所以我回到了旧的纯vim。这引出了关于命令行调试器的问题。 - SvenK
3个回答

9

虽然我还没有找到一个很好的替代jdb的工具,但是我使用rlwrap启动了带有readline的jdb。这样,我就可以像在bash中一样获得历史记录和完整的行编辑功能。不幸的是,没有自动补全功能,但是rlwrap支持可插拔的自动补全,所以有人可以编写一个!


rlwrap-jdb 使用 rlwrap 钩子来提供制表符自动完成和一些有用的命令别名,除了必不可少的 readline 行为。请注意,您可能会从命令行运行类似 rlwrap-jdb jdb -classpath my.jar ... 的内容。 - teichert

5

“rlwrap”的提示非常好!

现在我使用rlwrap -f . -f tags -e "" jdb <java> <args>,它可以根据历史记录和标签文件(使用ctags --recurse创建)进行自动完成,非常有用。有关详细信息,请参阅man rlwrap


你可以加一个解释,ctags的目的是什么吗?是为了让所有可能的变量名都能自动完成吗?在任何情况下?我想Java关键字不需要自动完成也无妨。我使用rlwrap -f . jdb ... 在我的版本中,-e“”甚至没有被识别。但我喜欢它,因为我讨厌Eclipse的臃肿,而JSwat很遗憾已经不再支持JDK 1.5以上了。 - Gunther Schadow
@GuntherSchadow,如果我没记错的话,我用它来完成函数名称以便能在那里设置断点。 - doak

-5

在这里,您可以获取所有命令行调试器的列表。

此外,虽然不是调试器,但绝对是一个Java命令行界面,可能会帮助您进行调试:


你的意思是将Jython作为Java脚本接口,我不知道,把一些日志记录指令写入代码中不是更容易吗? - SvenK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接