【问题标题】:Send ctrl-break to java process on 64-bit Windows ala sendsignal on 32-bit在 64 位 Windows 上将 ctrl-break 发送到 java 进程,在 32 位上发送信号
【发布时间】:2011-05-25 19:30:40
【问题描述】:

我经常为 WebSphere Application Server 进程(服务器、launchClient、wsadmin 等)使用sendsignal 工具来生成堆转储。但是,sendsignal 不适用于 64 位机器。有谁知道将 ctrl-break 发送到远程进程的替代方法?

更新:Bengt指出这与下面的问题基本相同。所以,我想我的问题是:在过去的两年里,有没有人找到绕过这个限制的方法?

Can I send a ctrl-C (SIGINT) to an application on Windows?

【问题讨论】:

标签: java windows 64-bit websphere signals


【解决方案1】:

为什么对转储使用控制中断 为什么不使用精确提供的命令来执行此类活动?

https://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.express.doc/info/exp/ae/tprf_generatingheapdumps.html

$AdminControl 调用 $objectName generateHeapDump

这会为您提供所需的信息,并且您会获得所需的转储。

HTH

芒露

【讨论】:

  • 谢谢,但这仅适用于服务器进程(我已经更新了我的问题),即使这样,如果服务器进程挂起或过载到它没有响应的地步,它也不起作用到 JMX/SOAP。
  • 有没有办法在 Windows 上使用任何 unix 实用程序的 gnu 端口?如果是, kill -3 将能够提供帮助。我个人没有在 Windows 盒子上尝试过,但值得一试。
  • 至少 Cygwin kill -3 不会产生想要的效果。
【解决方案2】:

http://www.latenighthacking.com/projects/2003/sendSignal/

最新的 cmets 也链接到适用于 windows 2003 和 windows 2008 的 x64 版本:

(2013-9-26) : 32 位和 64 位 EXE 版本都可以 从以下链接下载: https://github.com/walware/statet/tree/master/de.walware.statet.r.console.core/win32 -- GeorgeP (2014-3-7) : 我用 Ctrl-C 构建了 32 位和 64 位版本,它被称为 SendSignalCtrlC.exe,你可以在以下位置下载它: https://dl.dropboxusercontent.com/u/49065779/sendsignalctrlc/x86/SendSignalCtrlC.exe https://dl.dropboxusercontent.com/u/49065779/sendsignalctrlc/x86_64/SendSignalCtrlC.exe -- 朱拉吉·米哈拉克

【讨论】:

  • 谢谢,我没有注意到。不幸的是,我无法让代码示例正常工作(它似乎对远程进程没有影响)。您自己尝试过还是有什么建议?
  • @BrettKail,stackoverflow.com/questions/813086/… 有几个假装是有效的解决方案。例如,请参阅 rogerdpack 的 comment。但我已经切换到强制 java threaddumps 用 jstack 分隔文件:stackoverflow.com/questions/1197912/….
  • 有趣,感谢您的评论。不幸的是,需要实际的 ctrl-break 才能在 IBM JVM 上获取 javacore/heapdump/systemdump。 (同样不幸的是,为了调查/验证链接的解决方案,我不再轻松访问我曾经拥有的各种 Windows+JVM 环境。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-06
  • 2018-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-12
相关资源
最近更新 更多