Игорь Рондарев
Модератор
Опытный пользователь
Сообщений: 282
Сотрудник СВД ВС
|
 |
« : 12 Декабрь, 2016, 16:09:47 » |
|
Valgrind для QNX и КПДАКомпания «СВД Встраиваемые Системы» предлагает разработчикам приложений для QNX и ЗОСРВ «Нейтрино» двоичную сборку отладочного инструментария Valgrind. Инструментарий Valgrind включает в себя широкий перечень средств отладки и профилирования, позволяющих анализировать разрабатываемые приложения в контексте их работы с динамической памятью, межпоточной синхронизацией, кэш-памятью и т.д. Поддерживаемые вычислительные архитектуры: x86 и ARMv7; также возможна адаптация под другие вычислительные архитектуры. Данная сборка основана на исходном коде инструментария Valgrind, размещённом на ресурсе community.qnx.com (версия продукта: 3.11, ревизия SVN: 25) УстановкаПредусмотрены два варианта установки: - Непосредственно на целевую машину
Необходимо распаковать архив, содержащий компоненты Valgrind, на целевую машину и установить соответствующее значение переменной окружения VALGRIND_LIB. (привязка к имени каталога отсутствует, т.е. распаковывать содержимое архива можно в любой подходящий каталог, или же, например, подключать по протоколу NFS с внешнего ресурса).
Пример: # mkdir -p /opt/valgrind # cd /opt/valgrind
(для x86) # tar xf /path/to/valgrind-3.11r25-qnx650-<дата>.tar.gz x86/ # export VALGRIND_LIB=/opt/valgrind/x86/usr/lib/valgrind # export PATH=$PATH:/opt/valgrind/x86/usr/bin
(для ARMv7) # tar xf /path/to/valgrind-3.11r25-qnx650-<дата>.tar.gz armle-v7/ # export VALGRIND_LIB=/opt/valgrind/armle-v7/usr/lib/valgrind # export PATH=$PATH:/opt/valgrind/armle-v7/usr/bin
Запуск: # valgrind --tool=memcheck /ваше/приложение
- С интеграцией в QNX SDP (предполагает использование QNX Momentics IDE версии 7.0)
- Для пользователей Linux
Пример: # cd $QNX_TARGET # tar xf /path/to/valgrind-3.11r25-qnx650-<дата>.tar.gz
- Для пользователей Windows
В ОС Windows для распаковки архивов *.tar.gz следует использовать утилиту tar.exe из комплекта разработчика QNX SDP. При этом путь к распаковываемому архиву необходимо указывать в том же формате, что и на *nix-системах (т. е. «/диск/путь/к/файлу.tar.gz» вместо стандартного для ОС семейства Windows синтаксиса «диск:\путь\к\файлу.tar.gz»)
Пример: C:\> chdir %QNX_TARGET% C:\QNX650\......> \path_to_QNX_HOST\usr\bin\tar.exe xf /path/to/valgrind-3.11r25-qnx650-<дата>.tar.gz
Запуск из QNX Momentics IDE 7.0: Приложение (проект QNX C/C++ Application) -> Run As -> C/C++ QNX Application Configuration.. -> Tools -> Valgrind Важно: при отладочном запуске приложения из среды QNX Momentics необходимо снять отметку "Strip debug information before uploading" в cоответствующей конфигурации запуска (Run Configuration->Upload), иначе информация о соответствии ошибок в приложении строкам кода будет недоступна.
Просмотр результатов анализа: Инструмент Valgrind (меню Window -> Show View -> Other.. -> Profiling -> Valgrind). Также в файлах исходных кодов приложения будут автоматически расставлены метки, соответствующие предупреждениям анализатора.
ДокументацияСкачать[Обновлено 22.04.2022]: поставка и техническое сопровождение инструментария Valgrind для платформ x86, ARMv7 и PowerPC ( экспериментальная версия) осуществляется в составе Комплекта разработчика для ЗОСРВ "Нейтрино". Поставка и техническое сопровождение сборок данного инструментария для ОСРВ QNX Neutrino 6.5.0 прекращено.
|
|
« Последнее редактирование: 22 Апрель, 2022, 13:51:55 от Игорь Рондарев »
|
Записан
|
|
|
|
Игорь Рондарев
Модератор
Опытный пользователь
Сообщений: 282
Сотрудник СВД ВС
|
 |
« Ответ #1 : 07 Апрель, 2017, 12:49:22 » |
|
- Обновлена сборка Valgrind (файл valgrind-3.11r25-qnx650-20170407.tar.gz; исправлены небольшие недочёты предыдущей сборки)
- Обновлена инструкция по использованию Valgrind в среде QNX Momentics IDE 7.0
|
|
« Последнее редактирование: 05 Май, 2017, 11:25:16 от Игорь Рондарев »
|
Записан
|
|
|
|
bap
Интересующийся
Сообщений: 2
|
 |
« Ответ #2 : 25 Июль, 2017, 13:09:59 » |
|
Здравствуйте!
Установил valgrind-3.11r25-qnx650-20170407.tar.gz на целевую машину: # mkdir -p /opt/valgrind cкопировал файл valgrind-3.11r25-qnx650-20170407.tar.gz в каталог /opt/valgrind # cd /opt/valgrind # tar xzvf valgrind-3.11r25-qnx650-20170407.tar.gz x86/ # export VALGRIND_LIB=/opt/valgrind/x86/usr/lib # export PATH=$PATH:/opt/valgrind/x86/usr/bin
Запустил: # valgrind --tool=memcheck /home/myprog valgrind: failed to start tool 'memcheck' for platform 'x86-nto': No such file or directory
Хотел просто посмотреть help: # valgrind --help valgrind: failed to start tool 'memcheck' for platform 'x86-nto': No such file or directory или просто узнать версию: # valgrind --version valgrind: failed to start tool 'memcheck' for platform 'x86-nto': No such file or directory
Файл memcheck-x86-nto в каталоге /opt/valgrind/x86/usr/lib/valgrind присутствует. Путь на /opt/valgrind/x86/usr/bin есть. Переменная VALGRIND_LIB есть. # uname -a QNX qnx6 6.5.0 2010/07/09-14:44:03EDT x86pc x86
Подскажите, в чем может быть проблема? Спасибо.
|
|
|
Записан
|
|
|
|
Игорь Рондарев
Модератор
Опытный пользователь
Сообщений: 282
Сотрудник СВД ВС
|
 |
« Ответ #3 : 26 Июль, 2017, 11:40:41 » |
|
Подскажите, в чем может быть проблема?
Добрый день! Да, в инструкцию вкралась опечатка. Вместо # export VALGRIND_LIB=/opt/valgrind/x86/usr/lib должно быть # export VALGRIND_LIB=/opt/valgrind/x86/usr/lib/valgrind Исправили. Спасибо за обратную связь!
|
|
|
Записан
|
|
|
|
dominion
Интересующийся
Сообщений: 4
|
 |
« Ответ #4 : 31 Октябрь, 2017, 11:34:26 » |
|
Добрый день. После установки valgrind для Momentics IDE 7.0 + QNX SDP 6.5 под Windows 7 после запуска появляется такая ошибка:  Подскажите пожалуйста, в чем может быть причина? P.S. /usr/lib/valgrind на целевой системе создалась, в ней присутствует указанный в сообщении файл. Права на запись есть. -rwxrwxrwx 1 root root 30208 Oct 31 12:12 lackey-x86-nto
|
|
« Последнее редактирование: 31 Октябрь, 2017, 11:39:31 от dominion »
|
Записан
|
|
|
|
dominion
Интересующийся
Сообщений: 4
|
 |
« Ответ #5 : 31 Октябрь, 2017, 14:29:16 » |
|
Оказалось, что просто места не хватало на жестком диске целевой системы.
|
|
|
Записан
|
|
|
|
Doctor
Интересующийся
Сообщений: 7
|
 |
« Ответ #6 : 15 Февраль, 2018, 11:37:02 » |
|
Здравствуйте, Насколько я понял, для работы с valgrind необходимо установить библиотеки с символами libc.so.3 Для этого я скачал архив trunk-debug-201206201352.tgz где находятся файлы в основном с расширениями *.sym и *.map. Отдельного файла libc.so.3 там нет. Из этого делаю вывод, что этот архив нужно как то "скомпилировать, собрать и скинуть" в целевое устройство. Но информации на эту тему не нашел.
|
|
|
Записан
|
|
|
|
Игорь Рондарев
Модератор
Опытный пользователь
Сообщений: 282
Сотрудник СВД ВС
|
 |
« Ответ #7 : 15 Февраль, 2018, 13:02:04 » |
|
В общем случае достаточно указать местоположение non-stripped-версии библиотеки (обычно она находится в каталоге /lib). Сделать это можно либо с помощью ключа --extra-debuginfo-path=/lib, указываемого при вызове Valgrind, либо создав временную ссылку на целевой системе: ln -sP /lib/libc.so.3 /proc/boot/libc.so.3. Что касается архива trunk-debug-201206201352.tgz, то .sym-файлы в нём представляют собой полные версии библиотек (с символами и отладочной информацией). Т.е. необходимо создать ссылки на нужные .sym-файлы и указать valgrind'у их местоположение (например, с помощью всё того же "--extra-debuginfo-path"). Пример: $ tar xf trunk-debug-201206201352.tgz; cd nto/x86/lib; ln -s libc.so.3-201206201352.sym libc.so.3 $ valgrind --extra-debuginfo-path=/путь/к/trunk-debug/nto/x86/lib /тестовое/приложение
Механизм подключение отладочной информации довольно подробно описан в документе "QNX Community's Valgrind Wiki", ссылка на него есть в первой записи в данной теме.
|
|
« Последнее редактирование: 10 Декабрь, 2018, 19:58:28 от Игорь Рондарев »
|
Записан
|
|
|
|
Андрей Бижинар
Интересующийся
Сообщений: 3
|
 |
« Ответ #8 : 26 Октябрь, 2018, 14:00:01 » |
|
Здравствуйте! Есть возможность добавить в сборку hellgrind? Библиотеки в сборке уже есть, заголовочные файлы также. Отсутствует только бинарный файл. Или описать процесс портирования.
Заранее благодарен. С уважением, Андрей Бижинар
|
|
|
Записан
|
|
|
|
Игорь Рондарев
Модератор
Опытный пользователь
Сообщений: 282
Сотрудник СВД ВС
|
 |
« Ответ #9 : 26 Октябрь, 2018, 14:22:13 » |
|
Добрый день! Компонент helgrind в данной сборке присутствует: $ tar tvf valgrind-3.11r25-qnx650-20170407.tar.gz |grep helg -rwxr-xr-x root/root 175749 2017-04-07 11:29 armle-v7/usr/lib/valgrind/vgpreload_helgrind-arm-nto.so -rwxr-xr-x root/root 7030961 2017-04-07 11:29 armle-v7/usr/lib/valgrind/helgrind-arm-nto -rw-r--r-- root/root 37040 2017-04-07 11:30 usr/include/valgrind/helgrind.h -rwxr-xr-x root/root 155175 2017-04-07 11:30 x86/usr/lib/valgrind/vgpreload_helgrind-x86-nto.so -rwxr-xr-x root/root 6265493 2017-04-07 11:30 x86/usr/lib/valgrind/helgrind-x86-nto
Вы производите запуск valgrind --tool=helgrind вручную на целевой машине, или через конфигурацию запуска проекта в Momentics IDE?
|
|
|
Записан
|
|
|
|
Андрей Бижинар
Интересующийся
Сообщений: 3
|
 |
« Ответ #10 : 26 Октябрь, 2018, 16:56:55 » |
|
В папке bin hellgrind отсутствует. В вашем выводе его также нет. Есть только .h в include и библиотеки в lib/valgrind. Запускаю на целевой машине... # cd /fs/rwdata/valgrind/armle-v7/usr/bin/ # ls -la total 917 drwxr-x--- 2 root root 1024 Jan 01 22:49 . drwxr-x--- 4 root root 1024 Jan 01 22:49 .. -rwxr-xr-x 1 root root 41112 Jan 01 22:49 callgrind_annotate -rwxr-xr-x 1 root root 12016 Jan 01 22:49 callgrind_control -rwxr-xr-x 1 root root 32170 Jan 01 22:49 cg_annotate -rwxr-xr-x 1 root root 10418 Jan 01 22:49 cg_diff -rwxr-xr-x 1 root root 66639 Jan 01 22:49 cg_merge -rwxr-xr-x 1 root root 24398 Jan 01 22:49 ms_print -rwxr-xr-x 1 root root 58710 Jan 01 22:49 valgrind -rwxr-xr-x 1 root root 93575 Jan 01 22:49 valgrind-di-server -rwxr-xr-x 1 root root 37146 Jan 01 22:49 valgrind-listener -rwxr-xr-x 1 root root 88922 Jan 01 22:49 vgdb
При запуске получаю следующий вывод: # valgrind --tool=hellgrind --extra-debuginfo-path=/fs/rwdata/valgrind/armle-v7/usr/lib/lib --trace-children=yes ./test_leak valgrind: failed to start tool 'hellgrind' for platform 'arm-nto': No such file or directory
Запуск memcheck рабоате отлично: # valgrind --extra-debuginfo-path=/fs/rwdata/valgrind/armle-v7/usr/lib/lib --allow-mismatched-debuginfo=yes --leak-check=full --show-leak-kinds=all ./test_leak ==2453577== Memcheck, a memory error detector ==2453577== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al. ==2453577== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info ==2453577== Command: ./test_leak ==2453577== Class a was allocated ==2453577== ==2453577== HEAP SUMMARY: ==2453577== in use at exit: 1 bytes in 1 blocks ==2453577== total heap usage: 1 allocs, 0 frees, 1 bytes allocated ==2453577== ==2453577== 1 bytes in 1 blocks are definitely lost in loss record 1 of 1 ==2453577== at 0x866A0: operator new(unsigned int) (vg_replace_malloc.c:362 in /fs/rwdata/valgrind/armle-v7/usr/lib/valgrind/vgpreload_memcheck-arm-nto.so) ==2453577== by 0x100A23: main (.\test_leak.cpp:10 in /fs/rwdata/test_leak)
Callgrind Также работает: # valgrind --tool=callgrind --extra-debuginfo-path=/fs/rwdata/valgrind/armle-v7/usr/lib/lib --allow-mismatched-debuginfo=yes ./test_leak ==2490441== Callgrind, a call-graph generating cache profiler ==2490441== Copyright (C) 2002-2015, and GNU GPL'd, by Josef Weidendorfer et al. ==2490441== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info ==2490441== Command: ./test_leak ==2490441== ==2490441== For interactive control, run 'callgrind_control -h'. Class a was allocated ==2490441== ==2490441== Events : Ir ==2490441== Collected : 5285015 ==2490441== ==2490441== I refs: 5,285,015
|
|
« Последнее редактирование: 26 Октябрь, 2018, 17:09:23 от Андрей Бижинар »
|
Записан
|
|
|
|
Игорь Рондарев
Модератор
Опытный пользователь
Сообщений: 282
Сотрудник СВД ВС
|
 |
« Ответ #11 : 26 Октябрь, 2018, 17:06:32 » |
|
Рекомендую обратить внимание на количество букв l("el") в названии инструмента.
|
|
|
Записан
|
|
|
|
Андрей Бижинар
Интересующийся
Сообщений: 3
|
 |
« Ответ #12 : 26 Октябрь, 2018, 17:11:20 » |
|
Рекомендую обратить внимание на количество букв l("el") в названии инструмента.
Спасибо огромное! )) Весь день промучался! Так банально...
|
|
|
Записан
|
|
|
|
Ju87g12
Интересующийся
Сообщений: 1
|
 |
« Ответ #13 : 22 Март, 2019, 06:25:47 » |
|
spasibo
|
|
|
Записан
|
|
|
|
Doctor
Интересующийся
Сообщений: 7
|
 |
« Ответ #14 : 04 Октябрь, 2019, 07:57:59 » |
|
Запустил valgrind, указал путь к символам valgrind --extra-debuginfo-path=/syms/ --allow-mismatched-debuginfo=yes --track-fds=yes ls При запуске получаю SIGSEGV. ==67481636== Process terminating with default action of signal 11 (SIGSEGV): dumping core ==67481636== Bad permissions for mapped region at address 0x4349B ==67481636== at 0x8F288: strncat (vg_replace_strmem.c:365 in /opt/valgrind/x86/usr/lib/valgrind/vgpreload_memcheck-x86-nto.so) ==67481636== by 0xBEFFC393: ??? (instruction address not mapped to any object file; run-time generated code?) ==67481636== by 0x4347F: _dl_free_handle (ldd.c:2413 in /proc/boot/libc.so.3) ==67481636== by 0x46EBA: dynvec (ldd.c:278 in /proc/boot/libc.so.3) ==67481636== by 0x46EBA: ldd (ldd.c:2117 in /proc/boot/libc.so.3) ==67481636== by 0x40BC5: xvsnprintf (xsupport.ci:231 in /proc/boot/libc.so.3)
|
|
|
Записан
|
|
|
|
|