Я собираю общую библиотеку для Android, которую кто-то еще загружает в свое приложение. Я хочу профилировать свою библиотеку, поскольку она работает на устройстве Android, используя профилирование Clang с инструментарием .
Я добавил опцию Clang -fprofile-instr-generate
для компиляции и компоновки, и хотя это дает необработанные данные профилирования, когда библиотека компилируется и загружается в Linux, в Android я получаю следующую ошибку:
04-26 20: 39: 37,559 3313 3313 D AndroidRuntime: выключение виртуальной машины
04-26 20: 39: 37,559 3313 3313 E AndroidRuntime: ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: main
04-26 20: 39: 37,559 3313 3313 E AndroidRuntime: процесс: com.my.process, PID: 3313
04-26 20: 39: 37,559 3313 3313 E AndroidRuntime:
java.lang.UnsatisfiedLinkError: сбой dlopen: невозможно найти символ "__start___llvm_prf_vnds", на который ссылается "/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?