Раздел отладки
В версии 4.9 задачника Programming Taskbook появились средства, позволяющие выводить отладочную информацию непосредственно в окно задачника (в специальный раздел отладки). Необходимость в подобных дополнительных средствах возникает, прежде всего, при работе с комплексом Programming Taskbook for MPI при отладке параллельных программ, поскольку для них нельзя использовать такие стандартные средства отладки, как точки останова, пошаговое выполнение программы и окна просмотра значений переменных. Следует также отметить, что возможность вывода информации в раздел отладки позволяет использовать задачник для написания и отладки параллельных программ, не связанных с выполнением конкретных учебных заданий.
Отладочные средства задачника могут оказаться полезными и для обычных, непараллельных программ. В этом случае их можно применять в качестве дополнения к средствам встроенного отладчика.
Раздел отладки представляет собой одну или несколько многострочных текстовых областей вывода. Он располагается под основными разделами задачника и выводится на экран только в случае, если в нем содержится какой-либо текст:
При демонстрационном запуске программы все процедуры, связанные с разделом отладки, игнорируются, поэтому раздел отладки на экране не отображается.
Имеется возможность скрыть в окне задачника все его разделы, кроме раздела отладки; для этого достаточно нажать клавишу пробела. Повторное нажатие пробела восстанавливает в окне задачника ранее скрытые разделы. Для скрытия/отображения основных разделов окна задачника можно также использовать соответствующую команду контекстного меню, связанного с разделом отладки. Скрыть все разделы окна задачника, кроме раздела отладки, можно также программным способом, вызвав процедуру HideTask.
Прокрутка содержимого раздела отладки может осуществляться с помощью вертикальной полосы прокрутки, расположенной у его правой границы. Можно также использовать колесико мыши и клавиатурные комбинации Alt+Up, Alt+Down (прокрутка на одну экранную строку), Alt+PgUp, Alt+PgDn (прокрутка на 10 экранных строк), Alt+Home, Alt+End (прокрутка к первой или последней строке области вывода).
Предусмотрена возможность изменения размера шрифта, используемого в разделе отладки. Шрифт может изменяться от 7 до 14 пунктов с шагом 1. Для увеличения шрифта предназначена клавиатурная комбинация Alt+[+], для уменьшения — комбинация Alt+[–]. Соответствующие команды имеются также в контекстном меню раздела отладки. Информация о текущем размере шрифта сохраняется в файле результатов и учитывается при последующих запусках программы.
Для «непараллельных» заданий раздел отладки содержит единственную область вывода. Для заданий по параллельному программированию число областей вывода равно числу параллельных процессов плюс 1; при этом в каждый момент времени в разделе отладки отображается одна из областей. Если областей вывода больше одной, то в нижней части раздела отладки выводится набор ярлычков, позволяющих переключиться на любую из имеющихся областей вывода:
Ярлычки с номерами (от 0 до N–1, где N — количество процессов) позволяют просмотреть содержимое области вывода, связанной с процессом соответствующего ранга; ярлычок с символом «*» позволяет просмотреть область вывода, содержащую объединенный текст всех других областей:
Для переключения на нужную область вывода достаточно щелкнуть мышью на соответствующем ярлычке. Кроме того, для последовательного перебора ярлычков слева направо или справа налево можно использовать комбинации Alt+Right и Alt+Left соответственно (перебор осуществляется циклически). Можно также сразу перейти к нужной области вывода, нажав соответствующую клавишу: для области «*» — клавишу [*], для областей «0»–«9» — цифровые клавиши 0–9, а для областей «10»–«35» — буквенные клавиши от A до Z (при выполнении заданий по параллельному программированию максимально возможное число процессов равно 36).
Если в основных разделах окна задачника отсутствуют прокручиваемые элементы или основные разделы являются скрытыми, то дополнительную клавишу Alt в перечисленных выше клавиатурных Alt-комбинациях можно не использовать.
Отладочная информация, получаемая из подчиненных процессов параллельной программы, предварительно сохраняется в специальных временных файлах в каталоге учащегося, поэтому она будет доступна для просмотра, даже если на каком-либо этапе выполнения программы произойдет зависание некоторых ее подчиненных процессов. Отладочная информация, получаемая из главного процесса, выводится непосредственно в раздел отладки.
Количество отладочных строк для каждого процесса не должно превышать 999; если некоторый процесс пытается вывести данные в строку с номером, превышающим 999, то в связанной с этим процессом области отладки выводится сообщение об ошибке, и последующий вывод отладочных данных для этого процесса блокируется. Указанное ограничение позволяет, в частности, избежать проблем, возникающих при «бесконечном» выводе отладочной информации из какого-либо зациклившегося подчиненного процесса во временный файл.
Каждая экранная строка, отображаемая в разделе отладки, состоит из служебной области и области данных. Ширина служебной области равна 6 экранным позициям для «непараллельных» заданий и 9 позициям для заданий по параллельному программированию. Ширина области данных равна 80 позициям.
Служебная область состоит из следующих частей (см. рисунки, приведенные выше):
- область нумерации процессов (только для заданий по параллельному программированию): 2 экранные позиции, отводимые для ранга процесса, и символ «|»;
- область нумерации строк: 3 экранные позиции, отводимые для номера строки данных, после которых следует символ «>» и символ пробела;
- область признака сообщения об ошибке: одна экранная позиция, в которой может содержаться либо пробел (признак обычного отладочного текста), либо символ «!» (признак сообщения об ошибке).
Если в разделе отладки выводится текст, связанный со всеми процессами параллельного приложения (этот текст связан с ярлычком «*»), то нумерация строк для каждого процесса производится независимо.
При переключении между областями вывода, связанными с различными процессами параллельного приложения, сохраняется номер первой отображаемой строки (за исключением ситуации, когда в новой области вывода отсутствует строка с требуемым номером; в этом случае в новой области вывод осуществляется, начиная с первой строки данных). Отмеченная особенность позволяет быстро просмотреть (и сравнить) один и тот же фрагмент отладочных данных для различных процессов.
Содержимое области вывода, отображаемой в разделе отладки, можно копировать в буфер Windows; для этого предназначена стандартная клавиатурная комбинация Ctrl+C и соответствующая команда контекстного меню раздела отладки.
Для вывода данных в раздел отладки предназначены процедуры Show и ShowLine. Описания этих процедур приводятся в разделе, посвященном типам и процедурам модуля PT4.
Возможность использования раздела отладки сохранена и в появившемся в версии 4.11 режиме окна с динамической компоновкой. Как и в окне с фиксированной компоновкой, раздел отладки отображается ниже разделов с заданием, однако в данном случае для всех разделов окна используется общая полоса прокрутки. В окне с динамической компоновкой доступны почти все описанные выше действия по управлению разделом отладки, в частности, настройка размера шрифта в разделе отладки, копирование содержимого раздела отладки в буфер Windows, скрытие разделов окна с заданием.
В режиме с динамической компоновкой отсутствует возможность просмотра областей вывода, связанных с отдельными процессами параллельной программы: раздел отладки всегда содержит объединенный текст, полученный из всех областей. Для просмотра содержимого отдельных областей вывода следует переключиться в режим окна с фиксированной компоновкой, нажав клавишу F4.