gpt4 book ai didi

android - 在 Android 上使用 Instrumentation 进行 Clang 分析

转载 作者:行者123 更新时间:2023-12-01 14:08:32 27 4
gpt4 key购买 nike

我正在为 Android 编译一个共享库,其他人在他们的应用程序中加载该库。我想使用 Clang 的 profiling with instrumentation 对我的库在 Android 设备上运行时进行概要分析.
我添加了 Clang 选项 -fprofile-instr-generate编译和链接,虽然这会在 Linux 上编译和加载库时产生原始分析数据,但在 Android 上我收到以下错误:

04-26 20:39:37.559 3313 3313 D AndroidRuntime: Shutting down VM

04-26 20:39:37.559 3313 3313 E AndroidRuntime: FATAL EXCEPTION: main

04-26 20:39:37.559 3313 3313 E AndroidRuntime: Process: com.my.process, PID: 3313

04-26 20:39:37.559 3313 3313 E AndroidRuntime:

java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "__start___llvm_prf_vnds" referenced by "/path/to/my.so"...

04-26 20:39:37.559 3313 3313 E AndroidRuntime: at java.lang.Runtime.loadLibrary0(Runtime.java:1016)

04-26 20:39:37.559 3313 3313 E AndroidRuntime: at java.lang.System.loadLibrary(System.java:1657)


运行时 nm -D my.so | grep prf我得到:

00000000007f1cc8 d __start___llvm_prf_cnts

0000000000827918 d __start___llvm_prf_data

00000000008fb570 d __start___llvm_prf_names

000000000117bf58 d __start___llvm_prf_vnds

0000000000827918 a __stop___llvm_prf_cnts

00000000008fb568 a __stop___llvm_prf_data

000000000117bf54 a __stop___llvm_prf_names

0000000001181f58 a __stop___llvm_prf_vnds


所以看起来符号在那里。
是否可以在 Android 上运行分析工具?

最佳答案

分析适用于黄金和 LLD 链接器。 This error is caused only when using the BFD linker . sh_info .dynsym 的条目部分应该指向第一个非本地符号,但在错误情况下,它设置得太低。

要验证,请运行 readelf -aW在有问题的共享库上。在我的仓库中,sh_info对于 .dynsym是 3,而至少有 11 个 LOCAL 符号。

关于android - 在 Android 上使用 Instrumentation 进行 Clang 分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50043650/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com