Привет, Хабр!
В конце июля в JetBrains стартует очередной релизный «паровоз». На этой неделе обновились многие IDE на платформе IntelliJ, на следующей запланированы обновления наших продуктов для .NET. И сегодня мы хотим поговорить о CLion 2021.2 — новейшей версии нашей кроссплатформенной IDE для разработки на C и C++.
Коротко о главном. CLion 2021.2 защитит ваш код от типичных проблем доступа к памяти в C++, автоматически загрузит настройки сборки приложения из CMake Build Presets, откроет проект с использованием GNU Autotools, поможет с профилированием на удаленном хосте и на WSL. Кроме того, значительно улучшен отладчик (самые крупные обновления ждут наших пользователей на Windows). А для тех, кто пока только изучает C++ или прототипирует новое приложение или библиотеку, мы добавили интеграцию с Cling — интерпретатором С++.
Новую версию можно скачать с нашего сайта и попробовать бесплатно в течение 30 дней. Если у вас есть активная подписка на CLion или All Products Pack, просто обновите версию на 2021.2. Напоминаем, что при покупке годовой подписки на любой продукт предоставляется резервная бессрочная лицензия.
А теперь поговорим о нововведениях и улучшениях в версии 2021.2 подробнее.
Отладчик
Что касается отладчика, то мы всегда ведем работу в нескольких направлениях сразу: исправления на бэкенде самих отладчиков, улучшения UI на стороне CLion, поддержка новых возможностей.
Отладка на Windows
Для тех, кто разрабатывает на Windows с использованием тулчейна MSVC, мы написали собственный отладчик на базе LLDB (отладчик из Visual Studio мы не можем использовать по лицензионным соображениям). Этот же отладчик используется в раннем превью Rider for Unreal Engine (версии IDE JetBrains Rider для разработки игр под Unreal Engine), поэтому мы уделили особое внимание поддержке Natvis — формата для описания визуализации данных в отладчике. В новой версии CLion мы переписали поддержку Natvis, и теперь:
Доступны такие возможности настройки Natvis, как Inheritable attribute, спецификаторы формата и CustomListItems.
Встроенные визуализаторы получили однострочные цветные описания для всех структур, не покрытых Natvis.
Появилось представление [Raw View] для значений, сгенерированных Natvis.
Сортировка переменных в окне просмотра значений переменных не влияет на порядок членов класса — сортируются только сами переменные.
Исправлены проблемы с копированием переменных в окне отладчика.
Исправлено некорректное отображение std::tuple.
Отладка дампов памяти теперь также доступна пользователям Windows. О том, как собрать дамп памяти упавшего пользовательского процесса на Windows, можно узнать здесь. В CLion же все предельно просто: запускаете действие Run | Open Core Dump, заполняете настройки новой конфигурации и вперед!
И еще одно важное улучшение для пользователей Windows — теперь для запуска и отладки приложений вместо внутренней консоли CLion можно использовать консоль cmd.exe.
Режим просмотра потоков FreeRTOS
При отладке приложений FreeRTOS в CLion теперь можно использовать режим просмотра со списками задач. Используйте окно отладчика, чтобы выбрать нужный поток и просматривать его переменные:
Общие улучшения в отладчике
Когда проект хранится локально (на той же машине, на которой запущен CLion), конфигурация для отладки проста и обычно не требует дополнительных настроек. Однако если вы будете отлаживать приложение, собранное на другой машине (например, на CI), CLion потребует указать соответствия путей в проекте, чтобы правильно определить точки останова в вашем коде. По умолчанию отладчик использует полные пути к файлам, но CLion 2021.2 позволяет использовать только имя файла:
В большинстве случаев этого достаточно. Если же в проекте найдутся два файла с одинаковым именем, точка останова сработает в каждом из них.
Если при пошаговой отладке CLion не найдет файл с исходным кодом, для дальнейших шагов он перейдет к коду на ассемблере. Теперь же в таком случае можно будет явно указать, где искать исходный код, и перейти туда:
Кстати, раз уж мы заговорили про отладку ассемблерного кода, CLion 2021.2 позволяет при пошаговой отладке добавлять и удалять точки останова прямо на строках инструкций. Как и с обычными точками останова, вы можете, например, указать, чтобы отладчик не останавливал исполнение, а лишь записал в лог какое-то значение или сообщение. Так же можно задать и другие настройки.
Если вы предпочитаете отладчик LLDB, то эта новость для вас: CLion теперь поставляется с версией LLDB 12. К тому же, LLDB теперь можно использовать для удаленной отладки произвольного исполняемого файла (раньше это работало только с GDB). Новая конфигурация для настройки такой отладки называется Remote Debug:
Подробнее о настройках отладчика для удаленной отладки можно прочесть в нашем блоге.
Чтобы при пошаговой отладке не открывать в редакторе слишком много вкладок, можно пользоваться вкладкой предварительного просмотра. В CLion 2021.2 она доступна во время сеансов отладки и позволяет просматривать файлы в одной вкладке друг за другом (раньше каждый файл открывался в новой вкладке).
Тут самое время припомнить нам назойливую проблему с полными (fully qualified) именами. После подстановки всех шаблонных параметров и пространств имен они порой оказываются такими длинными, что значение переменной, расположенное после типа, уже попросту не помещается в окно. Мы занимаемся реализацией логики сворачивания таких имен на стороне CLion. Надеемся, что эти изменения попадут в следующий релиз — 2021.3. Также мы планируем научить CLion показывать переменные типа указатель как массивы, улучшить шестнадцатеричное представление числовых переменных и многое другое. Кстати, если вас интересуют задачи по поддержке отладчиков в CLion, мы с радостью обсудим это с вами :) Вот тут есть актуальная вакансия.
Обновления для проектов CMake, Makefile и GNU Autotools
Мы включили в CLion 2021.2 одну из самых свежих версий CMake — 3.20. Главное ее нововведение — предустановки CMake Presets. Они позволяют сохранить настройки сборки проекта в универсальном формате и делиться ими, например, через систему контроля версий. И теперь CLion тоже поддерживает CMake Presets! Это значит, что вы можете загружать эти настройки и использовать их при работе с проектом.
Если в корневом каталоге вашего проекта лежит файл CMakePresets.json или CMakeUserPresets.json, CLion загрузит все указанные там предустановки для сборки Build Presets. Работает это пока только со второй версией CMake Presets. Предустановки появятся в CLion в виде выключенных по умолчанию профилей CMake в Settings/Preferences | Build, Execution, Deployment | CMake. Пока что редактировать их можно только в редакторе (как json-файлы).
Мы сняли небольшое видео (на английском) о том, как это работает:
Шаблоны новых проектов CMake теперь можно редактировать. То есть вы можете изменить содержимое корневого файла CMakeLists.txt, который автоматически генерируется мастером создания новых проектов:
Мы расширяем список проектов Makefile, поддерживаемых CLion. Теперь CLion умеет запускать шаг преконфигурации для создания файла Makefile и загружать с его помощью проект. Мы обновили список проектов, на котором мы тестируем нашу поддержку, добавив новые данные. Благодаря поддержке шага преконфигурации теперь CLion умеет загружать проекты GNU Autotools. Вот, к примеру, проект make v4.3, открытый в CLion:
Анализ времени жизни объекта
Опросы сообщества показывают, что больше всего неприятностей разработчикам на C++ причиняют проблемы безопасной работы с памятью. Не обошел их своим вниманием и комитет по стандартизации. Герб Саттер работает над предложением Lifetime safety, которое предполагает анализ времени жизни объектов на стадии компиляции. Когда именно это появится во всех основных компиляторах для C++, сказать сложно. А пока мы научили CLion 2021.2 выполнять такой анализ на этапе написания кода в редакторе. Встроенный статический анализатор в CLion умеет находить самые разные проблемы:
Также вы можете разметить свой код аннотациями GSL (подробное описание — в предложении Герба Саттера), и CLion будет использовать их при анализе:
Интерпретатор Cling
А вы знали, что для языка C++ есть интерактивный интерпретатор — Cling? Это такая своеобразная песочница, где можно прототипировать библиотеки или новые приложения либо просто изучать язык C++. Cling теперь интегрирован в CLion. Для пользователей это значит, что:
Сессия Cling запускается из IDE через вызов действия Tools | Cling | Start New Cling Session… и открывается в окне в CLion.
Можно работать дальше с самой сессией, а можно отправлять код в интерпретатор прямо из редактора, используя контекстные действия Отправить выделенный код в сессию, Отправить текущую строку в сессию, Отправить включенные заголовочные файлы в сессию.
Поддержка систем контроля версий и локальная история
Как и другие IDE на платформе IntelliJ, CLion 2021.2 предоставляет улучшенную поддержку систем контроля версий. Так в список действий, которые могут выполняться перед коммитом, мы добавили выполнение тестов. А для запуска действия Analyze code перед коммитом можно указать профиль анализатора кода.
Если ваш проект не хранится в системе контроля версий, за историей изменений присмотрит локальная история. В релизе 2021.2 появилась возможность текстового поиска по локальной истории. Например, вы можете найти текст, который был по ошибке удален или изменен.
Разные полезные мелочи
И еще немного важных, хоть и некрупных, улучшений:
Профилирование теперь работает для удаленных проектов и для проектов на WSL. В обоих случаях требуется задать путь к исполняемому файлу Perf в настройках Settings/Preferences | Build, Execution, Deployment | Dynamic Analysis Tools | Perf.
При удаленной разработке в Docker теперь можно не синхронизировать исходный код между локальной машиной и контейнером, если вы включили в Docker сопоставление томов (mapped volumes). Для этого достаточно в настройках Deployment выбрать тип соединения Local or mounted folder.
Постфиксное автодополнение теперь работает и для литералов.
Для работы с WSL больше не требуется SSH, ведь теперь CLion использует для работы с подсистемой специальный API WSL.
В CLion теперь видны все дистрибутивы WSL, которые выдает команда wsl -l -v — независимо от способа установки (из Microsoft Store или пользовательского дистрибутива).
На этом у нас все. Если вы дочитали до конца, напишите в комментариях ваше любимое сочетание клавиш в CLion :)
Оставляйте ваши вопросы, мысли и предложения в комментариях — нам интересно, что вы думаете, и мы всегда рады помочь!
Команда CLion
The Drive to Develop