2016-02-29 53 views
1

我正在尝试获取JVM的线程转储。我使用top命令和ps aux来查找进程ID和pid [它是root]的用户。来自Tomcat的ThreadDump集合

所以我来说下面的命令来获得threaddump

须藤-u根jstack -F PID> threaddump1.txt

但我得到以下异常--------- ------------------------

附加到进程错误:似乎不是热点虚拟机 (找不到符号“ gHotSpotVMTypes“在远程过程中)

sun.jvm.hotspot.debugger.DebuggerException: Doesn't appear to be a HotSpot VM (could not find symbol "gHotSpotVMTypes" in remote process)** 
    at sun.jvm.hotspot.HotSpotAgent.setupVM(HotSpotAgent.java:411) 
    at sun.jvm.hotspot.HotSpotAgent.go(HotSpotAgent.java:305) 
    at sun.jvm.hotspot.HotSpotAgent.attach(HotSpotAgent.java:140) 
    at sun.jvm.hotspot.tools.Tool.start(Tool.java:185) 
    at sun.jvm.hotspot.tools.Tool.execute(Tool.java:118) 
    at sun.jvm.hotspot.tools.JStack.main(JStack.java:92) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at sun.tools.jstack.JStack.runJStackTool(JStack.java:140) 
    at sun.tools.jstack.JStack.main(JStack.java:106) 

任何帮助或建议或意见深表感谢。

回答

2

好的。我终于可以找出问题所在。 tomcat正在docker下运行。所以我必须在docker中运行这些命令。我遵循下面提到的步骤。

1. Access the docker 
2. Find the PID of tomcat by running command within docker. 
3. Run command /<oracle path>/bin/jstack PID >> filename