如何在 Java 中打印出本机堆栈跟踪?

How to print out native stacktrace in Java?

我想打印 Java 应用程序的 stacktrace 本机方法调用。 Thread.dumpStack() 仅打印 java 方法调用。

如果可以在您的应用程序之外执行此操作,您可以 运行 $JAVA_HOME/bin/jstack -m <jvm_pid>

要查看内部 JVM(C 级)函数调用,请将标准 C 调试器附加到进程。

具体如何执行此操作取决于您的 OS 和选择的调试器,例如在 OSX 上可以使用 xcode。 gdb的使用说明可以阅读here.

如果你想要非java堆栈,你需要一个"native"调试器,例如gdb.

您也可以使用 gdb 附加到您的 运行 java。

有关使用 gdb 无缝 调试 Java 的文档,另请参阅:http://gcc.gnu.org/java/gdb.html

(gcc 可以将 java 代码编译为本机代码;此时本机调试器还将显示 Java 回溯。)