dumpstack()和printStackTrace()之间的区别

时间:2014-07-02 21:28:23

标签: java android debugging stack-trace backtrace

我正在尝试获取从Android Java应用程序代码调用并尝试使用的底层C代码的堆栈跟踪 dumpStack() printStackTrace()没有任何成功。 只是好奇两者之间是否存在差异?

另外有没有办法打印底层C代码的堆栈跟踪,使用JNI来调用android端的java函数?

2 个答案:

答案 0 :(得分:5)

Thread.dumpStack()转储调用它的线程的当前堆栈跟踪。

Throwable.printStackTrace()打印抛出throwable时的堆栈跟踪

答案 1 :(得分:0)

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