【发布时间】:2017-11-19 08:10:54
【问题描述】:
我想对在 Windows 上运行的 Java 程序进行一些调试:回溯、打印一些变量、设置断点、单步执行关键函数。
我尝试的第一件事是jdb -attach 5312。这失败了“shmemBase_attach failed:系统找不到指定的文件”。我发现了一些关于该错误消息的relatedquestions,但他们似乎在谈论一个更复杂的场景,涉及到不同主机上的调试器和目标。
我正在做的是本地进程附加,所以我认为它应该更容易。但是有些事情让它变得更难了。
目标进程没有以java -jar foo.jar 或类似的正常方式运行。它是一个特定于应用程序的 EXE 文件,包含 java 代码。它在一个进程列表中将自己标识为“Commons Daemon Service Runner”,并查看其中的字符串,它似乎是the prunsrv program from Apache Commons Daemon。
Process Explorer 告诉我没有命令行参数,并且该进程是 services.exe 的子进程。我可以从 Windows 服务启动和停止它,但我不知道如何使用它。
jps 命令没有显示这个过程,但我知道它是一个 Java 程序......轻轻包装。有什么方法可以调试吗?
【问题讨论】:
标签: java debugging apache-commons jdb