调试Java jar文件

3

我有一个jar文件,但是没有源代码。它应该连接到一个服务器。第一次运行时,它无法正常运行,需要第二次尝试才能成功。我正在寻找一种方法来获取它的日志。如何启用它的日志记录功能?

下面是我调用它的方式:

java -Xms512m -Xmx512m -jar mcon.jar

我找到并尝试了下面的代码,但我认为它是用于服务器套接字的。

java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000,suspend=n -jar mcon.jar

你可以尝试在调试模式下运行代码,这可能会让你找到具体出错的那一行。 - Tim Biegeleisen
我该怎么做?我不是Java程序员,但我正在尝试找出问题。 - blacksun
1个回答

1
你发现的大部分是正确的,但你不需要地址,这是为了进行远程调试以连接到服务器。
从命令行中,你需要的是:
java -agentlib:jdwp=transport=dt_shmem,address=jdbconn,server=y,suspend=n -jar mcon.jar

然后你可以连接Java调试器。
jdb -attach jdbconn

你可以参考文档,了解可用的命令。

这是我得到的内容 错误:未找到传输库:dt_shmem 错误:JDWP传输dt_shmem无法初始化,TRANSPORT_LOAD(509) JDWP退出错误AGENT_ERROR_TRANSPORT_LOAD(196):未初始化任何传输[../../../src/share/back/debugInit.c:690] 本地方法中的致命错误:JDWP未初始化任何传输,jvmtiError = AGENT_ERROR_TRANSPORT_LOAD(196) ./debug.sh:第8行:7938已中止java -agentlib:jdwp = transport = dt_shmem,address = jdbconn,server = y,suspend = n -jar mcon.jar - blacksun
但如果有帮助的话,我可以使用dt_socket吗? - blacksun
奇怪,确保你从JDK 7运行Java。 - Frederic Henri
dt_socket将连接到特定端口,但如果您的程序不在此端口上运行,则不会发生任何事情,调试器将无法连接。 - Frederic Henri
好的,我已经找到安装文件夹了,但是我仍然遇到了这个错误。 - blacksun
显示剩余3条评论

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