Java jdb 远程调试命令行工具

10

有没有人使用过这个?如果使用过,它是否值得一试?

3个回答

8

我昨天第一次使用jdb,结果让我非常满意。你知道,我在我的笔记本电脑上用Eclipse编程,然后部署到虚拟机上确保一切仍然正常。偶尔,我需要开发一些作为命令行执行的独立程序,这些程序有时需要调试。

这一直是一个问题,因为我不想费力在虚拟机上安装Eclipse(它已经足够慢了!),但也不知道如何轻松地在我的命令行运行的类完成运行之前让它连接到我的调试器。

jdb拯救了我!它工作得很好,小而实用,几乎可以裸奔……这迫使你更多地运用自己的大脑而不是工具来调试代码(就像我在这里所说的那样)。

一定要打印出参考文档(solariswindowsjava 1.5——我认为它们都差不多),并在第二个屏幕上打开和浏览你的源代码。我希望你有第二个屏幕,否则你将频繁地使用alt-tab。


如另一个答案中由codingME提到的,您可以使用JPDA(http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/conninv.html)命令行开关使您的Java VM侦听调试器连接。尝试使用suspend=y来暂停执行,直到调试器连接,避免程序在调试器连接之前完成的问题。通过指定适当的端口号结合防火墙配置或SSH隧道设置,您可以通过网络连接到远程VM。例如:-agentlib:jdwp=transport=dt_socket,server=y,address=5005,suspend=y - Neek

6
假设您的程序是通过以下命令启动的:

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=<port> <class>

您可以通过jdb连接到此进程:
jdb -attach <port>

在某些情况下,您需要使用以下命令。
 jdb -sourcepath \.src -connect com.sun.jdi.SocketAttach:hostname=localhost,port= <port>

-6

JDB非常难用。使用System.out或使用IDE调试器会产生更好的结果。对于更有趣的功能(如跟踪线程、堆大小等),您可以使用JConsole工具以图形方式获取信息。


2
JDB和任何调试器一样易于使用,但这种反馈是无效的。另外,JConsole不允许您观察变量、设置断点、在异常中断等。 - Scott S. McCoy

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