Подтвердить что ты не робот

Инструмент для отслеживания и визуализации поведения pthread в Linux

Я очень хочу найти инструмент, который позволяет мне отслеживать поведение pthreads в программе, над которой я работаю. Я знаю, что там, где раньше задавались подобные вопросы, см. здесь и здесь.

Как оказалось, рекомендуемые инструменты не то, что мне нужно, или кажется невозможным заставить их работать на моей машине. Это Debian 6, 32-бит на всем протяжении архитектуры x86.

EZtrace в сочетании с ViTE похоже, то, что я ищу. Но, к сожалению, я не могу заставить его работать. (Инструменты не компилируются в некоторых версиях, а в других версиях сбой, никогда не видел, чтобы это работало. В другом компьютере (Ubuntu 10.04 x64) отображаются другие ошибки)

Есть ли трассировочное решение, способное визуализировать поведение программы pthreaded в Linux, которая, как известно, работает?

4b9b3361

Ответ 1

Набор инструментов Valgrind [Linux и OS/X]

Я использовал Memcheck, и он работает как рекламируемый. Однако я не использовал инструменты визуализации. Не уверен, что выход Helgrind может быть адаптирован для просмотра с помощью kCachegrind.

В дистрибутив Valgrind входят четыре [sic] полезные инструменты для отладки и профилирования:

  • Memcheck обнаруживает проблемы управления памятью и ориентирован прежде всего на программы на C и С++. Когда программа запускается под наблюдением Memcheck, все чтения и записи памяти проверяются, а вызовы malloc/new/free/delete перехватываются. В результате Memcheck может обнаружить, если ваша программа:

    Доступ к памяти не должен... Использует неинициализированные значения опасным образом. Утечка памяти. Делает плохое освобождение блоков кучи (двойное освобождение, несоответствие освобождает). Пропускает перекрывающиеся блоки источника и назначения памяти с memcpy() и связанными с ними функциями. Memcheck сообщает об этих ошибках, как только они появляются, указывая номер исходной строки, с которой она произошла...

  • Cachegrind - это профилировщик кеша. Он выполняет детальное моделирование кэшей I1, D1 и L2 в вашем CPU и поэтому может точно определить источники промахов в вашем коде...

  • Callgrind, Josef Weidendorfer, является продолжением Cachegrind. Он предоставляет всю информацию, которую делает Cachegrind, а также дополнительную информацию о callgraphs. Он был сложен в основное распределение Valgrind в версии 3.2.0. Доступно отдельно - это удивительный инструмент визуализации, KCachegrind, который дает гораздо лучший обзор данных, которые собирает Callgrind; его также можно использовать для визуализации вывода Cachegrind.

  • Massif - это профилировщик кучи. Он выполняет подробное профилирование кучи, выполняя регулярные снимки кучи программ. Он создает график, показывающий использование кучи с течением времени, включая информацию о том, какие части программы отвечают за большинство распределений памяти...

  • Helgrind - это отладчик потоков, который находит расы данных в многопоточных программах. Он ищет ячейки памяти, к которым обращаются более одного (POSIX p-) потока, но для которых не существует постоянной блокировки (pthread_mutex_). Такие местоположения указывают на отсутствие синхронизации между потоками и могут вызвать труднодоступные проблемы, зависящие от времени. Это полезно для любой программы, использующей pthreads. Это несколько экспериментальный инструмент, поэтому ваши отзывы особенно приветствуются здесь.

Ответ 2

проверьте это

http://lttng.org/ (набор инструментов для отслеживания Linux)

НТН

Ответ 3

DIVINE может нарисовать график пространства состояний и проверить нарушенные утверждения.