【发布时间】:2016-03-16 19:44:15
【问题描述】:
我正在尝试调试在 Android 5 上运行的用 C 语言编写的 JNI 代码。当调用我的某个函数时,我想将堆栈跟踪写入 adb 日志,以便查看从何处调用该函数。
我发现的第一个资源表明我需要使用 libcorkscrew,并包含如何使用该库的完整示例。不幸的是,似乎 libcorkscrew 从 Android 5 中消失了,现在应该使用 libunwind。对于我的项目,有几个问题:
将 libunwind 加入项目的说明很少且/或具有误导性 - 一些资源说从 github 下载项目并构建它(指示不起作用),其他资源表明该库已经是 Android 的一部分5.
所有示例都是用 C++ 编写的,而且似乎 libunwind 中的函数只有 C++ 绑定。由于我的代码是 C 而不是 C++,并且写入日志函数而不是通过 C++ 标准库,因此这是不可用的。
除其他外,我查看了以下页面:
有没有办法在 Android 5 上获取 C 代码中的堆栈跟踪而不会使程序崩溃?
【问题讨论】:
标签: android c java-native-interface printstacktrace libunwind