无法使用jhat,jps,jstack调试Java Windows服务

Mat*_*ugh 13 java windows windows-services

我经常在Linux和Mac上向开发人员展示jhat,jps和jstack工具集.但是,一位开发人员最近表示,如果相关的Java应用程序作为Windows服务运行,则这些在Windows中无法使用.

一个太阳提交的bug说的非常相似,但由于不活动而被关闭.

我已经为自己测试了这一点,但事实上它似乎是正确的,尽管我几乎无法相信.这是设置:

  1. 使用"登录为"=="本地系统"作为Windows服务运行的Tomcat或类似程序
  2. 具有Admin权限的用户登录到同一台Windows计算机.
  3. 管理员打开Windows任务管理器,可以看到java.exe正在运行
  4. 管理员打开控制台,键入"jps",获取不包含Tomcat的java服务进程的进程列表.
  5. 作为强力尝试,从Windows任务管理器获取tomcat的PID作为服务.输入jstack <pid>.得到回复:<pid>没有这样的过程

这在Windows XP,Windows 2003 Server和Windows 7下可重现.Java版本1.5和1.6产生相同的结果.

有没有办法从终端,即使以管理员身份登录,"sudo up"获取JPS和其他工具来查看java服务?

Rob*_*ola 8

要使实用程序运行,您可以使用"mstsc/admin"使用登录帐户连接到控制台会话(不确定它需要具有的确切权限,我的是管理员组)并使用Sysinternals psexec工具作为系统.以下是使用jstack.exe的示例:

psexec -s "%JAVA_HOME%\bin\jstack.exe" PID >stack.txt
Run Code Online (Sandbox Code Playgroud)其中PID是您的流程的流程ID.您可能还必须根据具体环境将实际路径替换为JDK.

此外,必须正确设置TEMP目录,否则工具将无法正常工作.


Tho*_*sen 1

您只能获得那些“属于”您的进程 - 相同的用户 ID。

你能用jvisualvm连接到它吗?


归档时间:

查看次数:

9298 次

最近记录:

6 年,4 月 前