【发布时间】:2019-04-16 04:38:41
【问题描述】:
我能够使用位于“Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/7.0.2/”中的脚本“asan_device_setup”推送位于 ANDROID_SDK 中的 ASAN 相关库bin”来自我的 MacOS。
但是,我无法获取 Address Sanitizer 调用堆栈的任何符号信息。我将位于“/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin”中的文件“llvm-symbolizer”推送到Android设备上的“/system/bin/”。
当我尝试从终端执行“adb shell /system/bin/llvm-symbolizer --help”时,我收到了一些奇怪的错误消息。显然 llvm-symbolizer 没有按预期的方式运行。
因此,我看到此警告消息:
==6937==WARNING: external symbolizer didn't start up correctly!
==6937==WARNING: Can't write to symbolizer at fd 56
==6937==WARNING: external symbolizer didn't start up correctly!
==6937==WARNING: Failed to use and restart external symbolizer!
除了 .so+offset 以及 Address Sanitizer 相关崩溃的内存地址之外,没有任何符号信息。
我真的不知道我哪里出错了。除了 llvm-symbolizer 之外,有没有办法获取与 ASAN 相关的崩溃的符号信息。请帮忙。谢谢。
【问题讨论】:
标签: android stack-trace symbols llvm-clang address-sanitizer