无法将可服务代理 (sun.jvm.hotspot.HSDB) 连接到 windows 7(32 位)上的 运行 jvm

Unable to connect Serviceable Agent (sun.jvm.hotspot.HSDB) to running jvm on windows 7 (32 Bit)

根据 link,我可以通过以下步骤成功地将 HSDB 连接到 Ubuntu 上的 运行ning jvm 进程:

  1. (在 Ubuntu 终端上)set SA_JAVA=/usr/lib/jvm/java-8-oracle/bin/java
  2. (在 Ubuntu 终端上)echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
  3. (在 Ubuntu 终端上)java -Dsun.jvm.hotspot.debugger.useProcDebugger=true -classpath /usr/lib/jvm/java-8-orcale/lib/sa-jdi.jar sun.jvm.hotspot.HSDB

对于 Windows 7 32 位和来自同一个 link 我尝试将 sun.jvm.hotspot.HSDB 与 运行ning jvm 进程连接,但我面临以下问题:

  1. (在命令提示符下)set PATH=C:\Program Files\Java\jdk1.8.0_40\bin;d:\windbg;%PATH%。但是在上面的命令中我找不到 d:\windbg。对于这种依赖性,我 Google 很多并且还安装了 Microsoft Windows Debugger 但安装后它具有不同的文件夹层次结构 (c:\WinDDK00.16385.1)。
  2. 有一段时间我跳过了"windbg"并执行了下面的命令。 这给出了以下屏幕。 在上面的屏幕上,我输入了 运行ning jvm process id,这是我从 Windows 任务管理器中收集的,然后单击“确定”按钮。 出现以下屏幕并导致异常。 我知道我关注的 link 已经很老了。我如何 运行 sun.jvm.hotspot.HSDB 上 windows。或者还有其他我应该遵循的工具吗?

问题是,您使用 jre 中的 java.exe 而不是 jdk 来启动 hdsb。这就是为什么它在您的 jre\bin(找不到它的地方)而不是您的 jdk\bin(dll 所在的地方)寻找 sawindbg.dll 的原因。您可以在 LinkError 错误消息中看到这一点。

所以使用:

C:\Program Files\Java\jdk1.8.0_40\bin\java.exe -cp C:\Program Files\Java\jdk1.8.0_40\lib\sa-jdi.jar sun.jvm.hotspot.HSDB

或者最好将路径更改为始终在 jdk 中使用 java.exe。其他工具也有 jre 的问题。