На платформах Linux и macOS поддерживается инструмент Valgrind Memcheck, который помогает обнаруживать проблемы в работе с памятью.
Вы можете запустить таргет с Valgrind Memcheck и просмотреть результаты анализа на специальной вкладке окна Run. С Memcheck можно запускать как обычные таргеты, так и таргеты юнит-тестов.
На Windows запускать приложения с Valgrind можно с помощью тулчейна WSL и в удаленном режиме.
Для обнаружения утечек памяти, состояний гонки по данным, использования неинициализированных переменных и ошибок доступа к памяти в 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 и в виде цветовых индикаторов в левом поле редактора.
Подробнее