首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用jhat、jps、j堆栈调试Java Windows服务

无法使用jhat、jps、j堆栈调试Java Windows服务
EN

Stack Overflow用户
提问于 2009-07-29 03:27:32
回答 6查看 10.8K关注 0票数 14

我经常在Linux和Mac上向开发人员展示jhat、jps和j堆栈工具集。但是,一位开发人员最近表示,如果问题中的Java应用程序是作为Windows服务运行的,那么这些程序在Windows中是不可用的。

A 太阳领域的窃听器说了一些非常相似的话,但由于不活动而关闭。

我亲自验证了这一点,虽然我很难相信,但这似乎是真的。下面是设置:

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

在Windows XP、Windows 2003 Server和Windows 7下,这似乎是可重复的。Java版本1.5和1.6产生了相同的结果。

有什么方法可以从终端(即使以Admin的身份登录)到"sudo up“来获取JPS和其他工具来查看java服务?

EN

回答 6

Stack Overflow用户

发布于 2009-07-31 15:26:34

通过从命令提示符运行此命令,我很幸运地调试了系统用户运行的进程:

代码语言:javascript
复制
c:> time/t
11:18 AM
c:> at 11:19 /interactive cmd.exe
Added a new job with job ID = 1

在未来用1分钟的时间。当"at“作业运行时,windows命令提示符将打开,并作为用户系统运行。在那里,您应该能够看到java进程。

如果服务是以本地用户的身份运行(通过双击服务并选择“登录”选项卡来检查"mmc %windir%\system32\SERVICES.MSC“中的详细信息),您可以使用”runas“执行相同的操作:

代码语言:javascript
复制
runas /user:USERNAME cmd.exe
票数 4
EN

Stack Overflow用户

发布于 2009-07-29 09:02:22

您只得到那些“属于”您的进程-相同的用户id。

你能用jvisualvm连接到它吗?

票数 1
EN

Stack Overflow用户

发布于 2009-09-07 07:13:33

我只找到了将visuamvm (或其他工具)作为windows服务运行的建议:监视作为Windows服务运行的Java进程

也许其他人知道更好的解决办法。

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

https://stackoverflow.com/questions/1197912

复制
相关文章

相似问题

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