Релиз CLion 2021.2: улучшения в отладчике, проверка времени жизни объектов, поддержка CMake Presets

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Привет, Хабр!

В конце июля в 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

Источник: https://habr.com/ru/company/JetBrains/blog/570322/


Интересные статьи

Интересные статьи

За время, прошедшее с начала пандемии Covid-19, почти все из нас так или иначе вспомнили о существовании отделений реанимации и интенсивной терапии, многие не раз всуе упоминали сатур...
Мы рады сообщить, что стал доступен релиз расширения Python для Visual Studio Code от февраля 2021 года. Вы можете загрузить расширение Python из Marketplace или установи...
Недавно на проекте интегрировал модуль CRM Битрикса c виртуальной АТС Ростелеком. Делал по стандартной инструкции, где пошагово показано, какие поля заполнять. Оказалось, следование ей не гаран...
Большинство людей следят за временем. Мы встаём вовремя, чтобы выполнить наши утренние ритуалы и отправиться на работу, сделать перерыв на обед, уложиться в сроки проекта, отметить ...
По правде сказать, история эта ни строчки не заслуживает, настолько гнусненькая эта история. Вспоминать противно. Да и не те времена сейчас, чтобы лишний раз вспоминать. Только память расходовать...