Динамический анализ кода

Valgrind Memcheck

Запуск приложения с Valgrind Memcheck

На платформах Linux и macOS поддерживается инструмент Valgrind Memcheck, который помогает обнаруживать проблемы в работе с памятью.

Вы можете запустить таргет с Valgrind Memcheck и просмотреть результаты анализа на специальной вкладке окна Run. С Memcheck можно запускать как обычные таргеты, так и таргеты юнит-тестов.

На Windows запускать приложения с Valgrind можно с помощью тулчейна WSL и в удаленном режиме.

Google Sanitizers

Запуск приложения с Google Sanitizers

Для обнаружения утечек памяти, состояний гонки по данным, использования неинициализированных переменных и ошибок доступа к памяти в Linux и macOS, в CLion есть интеграция с Google Sanitizers.

Если вы используете Clang версии не ранее 3.8.0 или GCC не ранее 5.0.0, при запуске/отладке вашего приложения или юнит-тестов нужно указать специальный ключ -fsanitize, и тогда, CLion автоматически обнаружит использование sanitizers и покажет результаты их работы в специальном окне. В нем можно не только просматривать список найденных ошибок, но и исходный код (и навигироваться на него), изучать информацию о фрейме, смотреть трассу ошибок.

Анализ производительности кода

Анализ производительности кода

CLion дает возможность анализировать производительность кода: на Linux предоставляется интеграция с Perf, на macOS — с DTrace. Профилирование возможно также в удаленном режиме и в WSL.

Запустить профилировщик можно прямо из IDE, а результаты профилирования кода доступны в специальном окне (View | Tool Windows | CPU Profiler).

Используйте диаграмму flame chart, дерево вызовов и списки методов, чтобы получить полное представление о возможных проблемах производительности в коде. Для более детального изучения проблемы вы можете перейти к ее исходному коду.

Подробнее

Покрытие кода

Покрытие кода

Если вам нужно узнать, выполнялся ли определенный оператор во время запуска конфигурации, воспользуйтесь анализом покрытия кода на уровне операторов. Он есть в CLion благодаря интеграции с инструментами llvm-cov/gcov.

Помимо покрытия строк, CLion позволяет проанализировать покрытие ветвей. Метод анализа учитывает все ветви каждой управляющей конструкции.

Анализ можно проводить при запуске юнит-тестов и при запуске обычной конфигурации. Результаты отображаются в окне Coverage и в виде цветовых индикаторов в левом поле редактора.

Подробнее