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