Java jdb远程调试命令行工具

Java jdb远程调试命令行工具,java,jdb,Java,Jdb,有没有人有使用这个的经验? 如果是这样的话,它值得吗?JDB使用起来非常困难。放置System.outs或使用IDE调试器将产生更好的结果。对于更有趣的功能(如跟踪线程、堆大小等),您可以使用该工具以图形方式获取信息。我昨天第一次使用jdb,对结果非常满意。你看,我在我的笔记本电脑上用Eclipse编程,然后部署到一个VM上,以确保整个shebang仍然工作。有时候,我不得不做一些独立执行的事情,比如命令行。这些东西有时需要调试 这一直是一个问题,因为我不想在VM上安装Eclipse(速度已经够

有没有人有使用这个的经验?
如果是这样的话,它值得吗?

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

我昨天第一次使用jdb,对结果非常满意。你看,我在我的笔记本电脑上用Eclipse编程,然后部署到一个VM上,以确保整个shebang仍然工作。有时候,我不得不做一些独立执行的事情,比如命令行。这些东西有时需要调试

这一直是一个问题,因为我不想在VM上安装Eclipse(速度已经够慢了!),但我不知道有什么简单的方法可以让它在运行完之前连接到我的命令行运行类

jdb来营救!它是一种享受——小巧实用,几乎到了裸露的地步。。。这迫使你运用你的思想而不是工具(就像我说的)


确保打印出参考文件(,-我认为它们都差不多,真的),并在第二个屏幕上打开和浏览源代码。我希望您有第二个屏幕,否则您将大量使用alt Tab键。

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

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=<port> <class>
java-Xdebug-Xrunjdwp:transport=dt\u套接字,服务器=y,地址=
您可以通过jdb附加到此流程:

jdb -attach <port>
jdb-attach
在某些情况下,您需要使用以下命令

 jdb -sourcepath \.src -connect com.sun.jdi.SocketAttach:hostname=localhost,port= <port>
jdb-sourcepath\.src-connect com.sun.jdi.SocketAttach:hostname=localhost,port=

正如codingME在另一个答案中提到的,您可以使用JPDA()命令行开关使Java VM侦听调试器连接。尝试suspend=y在调试器连接之前暂停执行,以避免在调试器连接之前程序完成的问题。通过指定合适的端口号并结合防火墙配置或SSH隧道设置,您可以通过网络连接到远程VM。e、 g.:-agentlib:jdwp=transport=dt_socket,server=y,address=5005,suspend=yJDB与任何调试器一样易于使用,这种反馈是无效的。此外,JConsole不允许您监视变量、设置断点、在异常时中断等。