2015-03-01 3 views
0

Я использую Android NDK для создания собственного C/C++ двоичного кода через include $(BUILD_EXECUTABLE). Я добавил модуль android-ndk-profiler в свой Android.mk в соответствии с их инструкциями и добавил вызовы для monstartup и moncleanup.Андроид NDK для собственного исполняемого файла не производит данных

Запуск двоичного файла на корневом устройстве создает gmon.out, и все работает правильно. Но при запуске $ ANDROID_NDK/toolchains /.../ arm-linux-androideabi-gprof отображаются заголовки и описания, но нет фактических данных.

Я знаю, что профилировщик предназначен для использования в собственных общих библиотеках, а не в исполняемых файлах, но можно ли это сделать?

ответ

0

Можно профилировать исполняемые файлы, обманывая профилировщик, думая, что ваш исполняемый файл фактически является общей библиотекой. Профайлер требует, чтобы вы передали имя вашей библиотеки в monstartup, чтобы он мог искать информацию о карте памяти. Если вы передадите его «your_lib.so», он будет искать сопоставления с именем «libyour_lib.so».

Так что в вашем коде запуска, говоря:

monstartup("myexecutable.so"); 

Нажмите бинарного на устройство и переименовать его в Lib myexecutable.so. Затем запустите его и получите данные профилирования.

Примечание: это было протестировано с использованием NDK r10d и android-ndk-profiler 3.3.

Смежные вопросы