我想打印Java应用程序的stacktrace
本机方法调用。 Thread.dumpStack()
仅打印java方法调用。
答案 0 :(得分:3)
如果你想要非java堆栈,你需要一个“本机”调试器,例如gdb
。
您也可以使用gdb
附加到正在运行的java。
有关使用gdb进行无缝调试Java的文档,另请参阅:http://gcc.gnu.org/java/gdb.html
(gcc可以将java代码编译为本机代码;此时本机调试器也将显示Java回溯。)
答案 1 :(得分:2)
如果可以在您的应用程序之外执行此操作,则可以运行$JAVA_HOME/bin/jstack -m <jvm_pid>
答案 2 :(得分:2)
要查看内部JVM(C级)函数调用,请将标准C调试器附加到该进程。
究竟如何做到这一点取决于您选择的操作系统和调试器,例如OSX上会使用xcode。有关使用gdb的说明,请参阅here。