【发布时间】:2016-09-21 09:36:52
【问题描述】:
当我的 .so 库中的程序崩溃时,我想获取堆栈跟踪,事实上,我从 JNI 调用 .so 中的接口。
我关注了一个老问题,但没有奏效。 我在 dumpBacktrace 中得到的只是信号处理程序本身。 这里是the link of old question。
平台:arm,ndk 版本:android-ndk-r10d
【问题讨论】:
-
您到底想得到什么?术语“stacktrace”和“backtrace”经常互换使用。你想得到一个堆栈dump吗?还是调用栈中所有函数的trace?
-
@Joachim Pileborg ,是的,我想跟踪调用堆栈中的所有函数。 ndk 中没有 backtrace()。
-
在仔细阅读您的问题后,我还有几个问题。您是否使用信号处理程序(即您为
SIGSEGV安装处理程序)捕获崩溃(例如分段错误)?然后你不能依赖调用堆栈,因为信号处理程序是特殊情况,直接从内核调用。在这种情况下,我个人不知道如何获取调用跟踪,但我认为应该可以从内核中获取原始(非信号处理程序)堆栈。
标签: android c++ android-ndk arm