获取静态二进制文件的AOSP回溯
Get backtrace for AOSP for static binary
出于几个原因,我不得不将我的二进制文件编译为静态文件。
我还创建了一个简单的测试应用程序,只有两个类似的代码:
ALOGE(LOG_TAG, "Start");
ProcessState::self()->startThreadPool();
ALOGE(LOG_TAG, "startThreadPool");
IPCThreadState::self()->joinThreadPool();
ALOGE(LOG_TAG, "quit");
似乎如果我编译这个小应用程序为静态,就像我需要编译我的生产应用程序的debuggerd不会在SIGSEGV上触发。
另外,我可以在AOSP中静态链接的唯一库是libunwind。(CallStack, libcorkscrew和libbacktrace没有静态版本)
libwind的问题是,当我调用unw_step时,它会崩溃。一个崩溃,我不知道如何调查,因为我没有堆栈跟踪。(http://eli.thegreenplace.net/2015/programmatic-access-to-the-call-stack-in-c/)
那么,对于获取静态AOSP臂二进制文件的堆栈跟踪有什么提示吗?
你是如何编译libwind的?您是使用llvm-llvm源还是aosp外部/libwind源?还有,这是什么拱门?
如果target_arch_abi是armeabi或armeabi-v7a libunwind在aosp中被编译为llvm-libc++abi的一部分从Android。在$NDK/sources/cxx-stl/llvm-libc++abi:
ifneq (,$(filter armeabi%,$(TARGET_ARCH_ABI)))Use_llvm_unwinder:= true
如果这是一个手臂项目,那么还应该有一个预构建的静态libunwind。$NDK/sources/cxx-stl/llvm-libc++abi如果我没记错的话。可能值得尝试预编译的静态libwind。A from there
相关文章:
- 当回溯以零开始时,如何调试崩溃
- 回溯C++不打印函数,因此文件
- 这是使用回溯的 nqueen 问题,但我使用了动态 2d 数组,我的程序编译良好,但不返回任何输出
- 如何解释GDB中回溯的模板函数签名?
- 重新引发异常保留回溯
- boost::p ython:PyErr_Fetch始终返回 NULL 回溯
- 返回不停止函数,递归函数问题?(编程练习,动态规划,Levenshtein 回溯)
- 这种针对 N Queen 问题的回溯方法不正确吗?
- 我们能否使 GDB 在回溯中显示非平凡的参数
- 回溯 N 女王算法
- C++ 使用递归回溯的数独求解器不起作用
- 国际象棋骑士巡回赛使用递归回溯
- 递归回溯打印长度为N的二进制数的所有组合,而不使用循环
- 多线程程序中的分段故障和gdb回溯上的不完整信息
- 这不应该使用回溯算法吗?
- iOS 13 崩溃 - 回溯不可用
- 如何在 CentOS 7 中为应用程序生成具有完整回溯C++的核心转储文件
- 如何在C++中通过回溯获得正确的代码行?
- 更好的回溯版本
- 获取静态二进制文件的AOSP回溯