首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >调试java应用程序,而不使用Debug参数启动JVM

调试java应用程序,而不使用Debug参数启动JVM
EN

Stack Overflow用户
提问于 2008-12-17 22:02:57
回答 5查看 74K关注 0票数 100

通常,要将调试器附加到正在运行的jvm,您需要使用以下参数启动jvm:

代码语言:javascript
复制
> java -Xdebug -Xrunjdwp:transport=dt_socket,address=1000,server=y,suspend=n

现在,如果我想调试一个不是在调试模式下启动的进程,我该怎么办?

当生产系统(也就是在没有调试参数的情况下启动)出现‘随机’(我使用这个术语不太严谨)错误时,就会出现这种情况。因此,我不能使用适当的参数重新启动jvm,因为没有人知道如何再次重现错误。在这种情况下连接到JVM是不可能的吗?

为了澄清,不能使用像jdb这样的工具来附加到已经在运行的JVM,除非它们是在调试模式下启动的

从JVM手册页

使用jdb的另一种方式是将其附加到已在运行的Java。要使用jdb调试的虚拟机必须使用以下选项启动:

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2008-12-17 22:27:09

您可以使用jsadebugd (JDK)将调试服务器附加到进程(在带有Debugging Tools for Windows的Windows上可用)。它被标记为实验性的,因此您可能希望首先在测试机器上进行尝试。

用法:

代码语言:javascript
复制
jsadebugd <pid>
jdb -connect sun.jvm.hotspot.jdi.SADebugServerAttachingConnector:debugServerName=localhost

使用jdb -listconnectors可以找到带有参数的连接器名称。

票数 50
EN

Stack Overflow用户

发布于 2010-06-10 22:52:34

只是澄清一下,不能使用像jdb这样的工具来附加到已经在运行的JVM>>,除非它们是在调试模式下启动的

在苏联的线人读到你

代码语言:javascript
复制
jdb -connect sun.jvm.hotspot.jdi.SAPIDAttachingConnector:pid=9426
票数 32
EN

Stack Overflow用户

发布于 2008-12-17 22:51:14

VisualVM不是一个调试器,但是您可以从它获得线程转储和堆转储,这对诊断一些问题很有用。最有用的特性需要JVM 5或6。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/376201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档