Clang Profiling с инструментами на Android - PullRequest
0 голосов
/ 26 апреля 2018

Я собираю общую библиотеку для 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?

...