Site icon Embarcadero RAD Studio, Delphi, & C++Builder Blogs

Новый плагин IDE: параллельный отладчик Parnassus

Расширенная разметка редактора кода, пользовательский интерфейс стека вызовов и инструменты многопоточной отладки — в новом подключаемом модуле для RAD Studio теперь доступны бесплатно.

Мы очень рады объявить о доступном сегодня новом расширении IDE для RAD Studio 10.4.1, созданном тем же автором, что и популярные плагины для закладок и навигатора, Parnassus. Если вы читаете это, он уже доступен в GetIt для всех, у кого есть подписка на обновления: просто откройте GetIt, перейдите в раздел «Плагины IDE» и установите «Параллельный отладчик». Для этого требуется Delphi или C ++ Builder 10.4.1 или новее.

Что это такое?

Что-то для каждого. Читайте дальше!

Некоторая новая разметка редактора, полезная для вас, даже если вы не используете несколько потоков в своем приложении!

Проблема

Если в вашем приложении более одного потока, вы, вероятно, захотите отладить взаимодействие потоков. Традиционное представление отлаженного приложения в среде IDE, хотя в нем может быть указано несколько потоков в представлении потоков, заключается в том, чтобы рассматривать приложение так, как будто оно имеет только один поток: вы увидите только один стек вызовов и элементы управления запуском / паузой / шагом предназначены для всего процесса. Это оставляет вас, разработчика, который должен отлаживать ваше приложение, с такими вопросами, как:

И, возможно, другие вопросы или пожелания, даже отладка только в одном потоке, например:

На каждый из этих вопросов отвечает этот новый плагин.

Давайте пробежимся по его особенностям. В следующем разделе вы прочитаете о представлении Parallel Threads и стеках параллельных вызовов; поточный запуск и пошаговое выполнение; вид процесса; новая разметка редактора, включая потоки и стеки вызовов в редакторе; установка сродства потока точки останова; перемещение текущего исполнения; новое главное меню темы; и больше…

Представление «Параллельные потоки»

Просмотр> Окна отладки> Параллельные потоки

В этом окне перечислены все потоки в процессе, перечисленные по горизонтали. Когда ваше приложение работает, если оно в Windows, у каждого потока есть диаграмма, отображающая использование ЦП.

Когда приложение приостановлено, каждый поток отображает свой стек вызовов.

При приостановке процесса отладчик всегда будет показывать верхнюю запись стека отлаживаемых вызовов. То есть он может не отображать верхнюю запись в стеке вызовов, как это обычно делает IDE, но он будет отображать ваш исходный код, который вызывает его. Идея здесь в том, чтобы отлаживать то, что вы контролируете, — всегда показывать источник.

Крайняя левая кнопка на каждой панели инструментов потока приостанавливает весь процесс, делая этот поток текущим потоком. Это «приостановить процесс в этом потоке». Крайняя правая кнопка позволяет вам изменять порядок отображения потоков, закрепляя потоки слева или рядом с другим закрепленным потоком. Это полезно, когда в вашем приложении много потоков, и вы хотите, чтобы те, которые вам интересны, были сгруппированы вместе. Если закрепленный поток имеет имя, закрепление сохраняется при перезапуске процесса: когда вы завершаете и перезапускаете приложение, те же потоки будут закреплены.

Запуск или переход по одному потоку

Остальные кнопки панели инструментов предназначены для управления ходом резьбы.

Стандартные средства управления запуском, переходом, переходом и т. Д. В среде IDE являются уровнями процесса; то есть они будут запускать весь процесс, пробуждая все потоки, и вы просто надеетесь, что больше ничего не произойдет, пока операция перехода не будет завершена в потоке, который вы просматриваете. На практике может многое — исключения, точки останова и т. Д. — плюс, конечно, иногда вы просто хотите убедиться, что другие потоки не запускаются при отладке одного потока.

Эти кнопки панели инструментов позволяют запускать и переходить на уровень потока. Вы можете:

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

У каждого из них есть сочетание клавиш, то есть вы можете выполнять действия (и т. Д.) С помощью клавиатуры, а не просто нажимая кнопку с помощью мыши. Ярлыки отображаются в меню «Тема», в котором есть пункты меню для текущей цепочки (см. Ниже).

Управление запуском потока — одна из самых мощных функций Parallel Debugger.

Интеграция редактора

Одна из важных задач при понимании того, что происходит в многопоточном приложении, — это знать, когда несколько потоков выполняются в одной и той же области кода. Parallel Debugger делает это понятным, добавляя разметку в редакторе для полного стека вызовов каждого потока. Они отображаются с помощью «тегов», небольших цветных маркеров в правой части редактора.

Верхняя запись стека вызовов — то есть там, где поток выполняется «сейчас» — помечена сплошным тегом с использованием цвета потока. Другие записи стека вызовов для того же потока имеют бледную версию цвета потока (отмечая, что поток все еще отмечен сплошным кружком в теге).

Это позволяет вам быстро читать код и знать, что «поток X выполняется где-то внутри этой строки кода» и «поток Y и поток Z сейчас находятся в одном методе». Вы даже увидите, где именно находятся нити. На этом снимке экрана текущий поток — синий, а второй поток (светло-красный) выполняется со своей текущей точкой выполнения внутри IsPrime (), но вызов IsPrime выделил строку над точкой выполнения текущего потока.

Перемещение исполнения

Перед установкой плагина в среде IDE точка выполнения текущего потока отображалась маленькой синей стрелкой. Теперь он заменен большим шевроном в левой части редактора кода.

Вы можете изменить положение точки выполнения — где поток начнет выполняться в следующий раз, когда вы нажмете «Выполнить» или «Шаг» — просто щелкнув и перетащив этот маркер.

Сходство потока точки останова

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

Чтобы точка останова применялась только к определенному потоку, щелкните точку останова правой кнопкой мыши. Новое меню точки останова позволяет вам выбрать поток, к которому будет применяться точка останова.

Здесь эта точка останова применяется только к зеленому потоку.

Обзор процесса

Просмотр> Отладка Windows> Процесс

В этом окне отображается информация о процессе в целом. Он отображает использование ЦП на уровне процесса (снова разделенное на ядро ​​и пользовательский режим), тип процесса (например, Wow64), а также кнопки запуска / паузы / сброса и т. Д. Это уровень процесса, то есть они обеспечивают ту же функциональность, что и собственная панель инструментов запуска среды IDE.

Вы также можете просмотреть список потоков, нажав кнопку внизу, как быстрый способ выбрать текущий поток (поскольку горизонтальная прокрутка в представлении потоков может занять больше времени, если у вас много потоков).

Главное меню темы

В среде IDE теперь есть меню «Поток», расположенное справа от меню «Выполнить». Это предоставляет меню для большинства прямых операций, которые вы можете выполнять с потоком. Он позволяет вам установить интересующий поток (то есть текущий поток, если процесс приостановлен, или поток, который вы хотите стать текущим потоком в следующий раз, когда вы приостановите), а для текущего потока есть пункты меню для управления запуском потока. Вы можете видеть ярлыки в этих пунктах меню.

Он также перечисляет каждый поток в приложении, и для каждого из них показано, что вы выполняете управление плюс закрепление, фактически те же функции, что и в представлении Parallel Threads.

Уровень функций

Наконец, самый верхний пункт меню контролирует уровень функций Parallel Debugger: что он делает, когда ваше приложение работает. Самый низкий уровень предназначен только для отслеживания использования ЦП: используйте его, если вы хотите, чтобы параллельный отладчик был установлен, но в настоящее время вы не хотите активно использовать его для этого приложения. Следующие два уровня контролируют, насколько глубоко отладчик отслеживает стеки вызовов потоков.

Используйте это, если у вас есть десятки или сотни потоков. В этой ситуации вас, вероятно, интересует только подмножество потоков. Установите уровень функции на «Только выбранные стеки вызовов», и параллельный отладчик будет отслеживать стеки вызовов для основного потока, закрепленных потоков и текущего потока только по умолчанию. Вы всегда можете получить стек вызовов для любого потока, нажав кнопку, отображаемую над областью стека вызовов в представлении потоков.

Поддерживаемые платформы

Параллельный отладчик имеет полную функциональность при локальной отладке приложений в Windows.

На других платформах или при удаленной отладке функциональность зависит от того, что поддерживает отладчик. Использование ЦП поддерживается только для локальных (без удаленной отладки) приложений Windows. Пошаговое выполнение или выполнение отдельных потоков будет работать только на платформах, поддерживающих замораживание потоков. Существует известная проблема для C ++ Win64, когда стеки вызовов не могут быть оценены: это будет исправлено в следующей версии C ++ Builder.

Следуя традиции Парнаса, начатой ​​с закладок, параллельный отладчик действительно решает ошибку! ( RSP-29768 .)

В общем: если вы используете Windows, отладчик имеет полную функциональность.

Плагин поддерживает RAD Studio 10.4.1 (и новее, когда выйдет 10.4.2.)

Получение параллельного отладчика

Параллельный отладчик теперь в GetIt!

Благодаря Embarcadero Parnassus делает отладчик бесплатным для всех клиентов RAD Studio с активной подпиской на обновления. Откройте GetIt, перейдите в категорию подключаемых модулей IDE и нажмите «Установить».

И Parnassus, и Embarcadero надеются, что вы найдете это расширение отличным дополнением к вашей IDE.

От себя лично я хотел бы поблагодарить Embarcadero за интерес к плагину и желание добавить его в GetIt, а также всех моих бета-тестеров, которые с августа использовали различные версии этого плагина, качество которых постепенно улучшалось. Всем большое спасибо!

Exit mobile version