我能够使用“asan_device_setup”脚本将位于ANDROID_SDK中的与ASAN相关的库推送到我的MacOS内的“Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/7.0.2/bin”。 但是,我无法获取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相关的符号信息。
我真的不确定我做错了什么。有没有一种方法可以获取ASAN相关崩溃的符号信息,而不是使用llvm-symbolizer。请帮忙。谢谢。