debugging dumpstack()和printStackTrace()的区别

piwo6bdm  于 2023-06-30  发布在  其他
关注(0)|答案(2)|浏览(70)

我试图获取从android Java应用代码调用的底层C代码的堆栈跟踪,并尝试使用dumpStack()printStackTrace(),但没有成功。我很好奇,这两者之间有什么区别吗?
还有是否有一种方法可以打印底层C代码的堆栈跟踪,这些代码使用JNI来调用Android端的Java函数?

muk1a3rh

muk1a3rh1#

Thread.dumpStack()转储调用它的线程的 * 当前 * 堆栈跟踪。
Throwable.printStackTrace()打印堆栈跟踪 ,就像抛出throwable时一样。

zbsbpyhn

zbsbpyhn2#

使用dumpStack()和printStackTrace()的主要区别是Stack中的第一个条目,在dumpStack()的情况下,第一个条目总是java.lang.Thread.dumpStack(),而在后面的情况下,它是打印堆栈跟踪的方法。如果你不想打印堆栈跟踪,而是想在Java程序中打印,你可以使用Thread类中的getStackTrace()方法。此方法返回StackTraceElement数组。在下面的Java程序中,我们将看到所有三种方法的示例,以获取Java中当前线程的堆栈跟踪。

相关问题