Я использую Google Perf инструменты для анализа моей программы. Запустите программу на рычаге устройства Cortex A9.
LD_PRELOAD="/usr/lib/libprofiler.so.0" CPUPROFILE=./prof.out CPUPROFILE_REALTIME=1 CPUPROFILE_FREQUENCY=1000 TCMALLOC_STACKTRACE_METHOD=arm bin/driver -c etc/driver/config.json
Следующий результат профилирования загрузки на хосте linux-mint. И запустить Google-Pprof
google-pprof --text projects/build/ARM_VARISCITE/bin/driver prof.out
Но я испортил результаты
Using local file projects/OrionWebModules/build/ARM_VARISCITE/bin/driver.
Using local file prof.out.
/usr/bin/objdump: '/usr/lib/libPocoXML.so.46': No such file
/usr/bin/objdump: '/lib/librt-2.19.so': No such file
/usr/bin/objdump: '/lib/libdl-2.19.so': No such file
/usr/bin/objdump: '/lib/libpthread-2.19.so': No such file
/usr/bin/objdump: '/lib/libm-2.19.so': No such file
/usr/bin/objdump: '/usr/lib/libunwind.so.8.0.1': No such file
/usr/bin/objdump: '/lib/libc-2.19.so':No such file
/usr/bin/objdump: '/lib/libgcc_s.so.1': No such file
/usr/bin/objdump: '/usr/lib/libstdc++.so.6.0.18': No such file
/usr/bin/objdump: '/usr/lib/libPocoFoundation.so.46': No such file
/usr/bin/objdump: '/usr/lib/libPocoJSON.so.46': No such file
/usr/bin/objdump: '/usr/lib/libPocoUtil.so.46': No such file
/usr/bin/objdump: '/usr/lib/libPocoNet.so.46': No such file
/usr/bin/objdump: '/usr/lib/libprofiler.so.0.4.8': No such file
/usr/bin/objdump: '/lib/ld-2.19.so': No such file
/usr/bin/addr2line: '/lib/ld-2.19.so': No such file
/usr/bin/addr2line: '/usr/lib/libPocoFoundation.so.46':No such file
/usr/bin/addr2line: '/usr/lib/libstdc++.so.6.0.18': No such file
/usr/bin/addr2line: '/lib/libc-2.19.so': No such file
/usr/bin/addr2line: '/lib/libpthread-2.19.so': No such file
Total: 202934 samples
202672 99.9% 99.9% 202672 99.9% 76a0d1a4
212 0.1% 100.0% 212 0.1% 76921c98
17 0.0% 100.0% 17 0.0% 76a7b774
6 0.0% 100.0% 6 0.0% 76a9f2fc
3 0.0% 100.0% 3 0.0% 76aaf474
1 0.0% 100.0% 1 0.0% 76921c9c
1 0.0% 100.0% 1 0.0% 76a0d18c
1 0.0% 100.0% 1 0.0% 76a0d1b8
1 0.0% 100.0% 1 0.0% 76a4ff3c
1 0.0% 100.0% 1 0.0% 76a51280
1 0.0% 100.0% 1 0.0% 76a539fc
1 0.0% 100.0% 1 0.0% 76a57c70
1 0.0% 100.0% 1 0.0% 76a9f324
1 0.0% 100.0% 1 0.0% 76a9fba4
1 0.0% 100.0% 1 0.0% 76abd378
1 0.0% 100.0% 1 0.0% 76bc0f20
1 0.0% 100.0% 1 0.0% 76be3308
1 0.0% 100.0% 1 0.0% 76c6fff0
1 0.0% 100.0% 1 0.0% 76d158fc
1 0.0% 100.0% 1 0.0% 76d41a3c
1 0.0% 100.0% 1 0.0% 76f776e8
1 0.0% 100.0% 1 0.0% 76f77ca8
1 0.0% 100.0% 1 0.0% 76f77cb8
1 0.0% 100.0% 1 0.0% 76f7ccd8
1 0.0% 100.0% 1 0.0% 76f86ff0
1 0.0% 100.0% 1 0.0% 76f881c0
1 0.0% 100.0% 1 0.0% Poco::AtomicCounter::operator--
1 0.0% 100.0% 1 0.0% Poco::SharedPtr::release
1 0.0% 100.0% 1 0.0% __destroy
Все библиотеки устанавливаются в библиотеку инструментов. Как я могу настроить путь sysroot? И показывать имена методов вместо адресов?
нужно использовать два флага
первый:
--tools= /opt/i686-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-
полный путь к инструментам компилятора с префиксом toolchain. Вы можете использовать также переменную PPROF_TOOLS.
второй:
--lib_prefix=<path_to_usr_lib>,<path_toolchain_lib>
также необходимо отключить флаг gcc -fomit-frame-pointer
Других решений пока нет …