2018-08-02 22:04:49 +03:00
|
|
|
|
<html>
|
|
|
|
|
|
|
|
|
|
|
|
<head>
|
|
|
|
|
|
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
|
|
|
|
|
|
<title></title>
|
|
|
|
|
|
<link rel="StyleSheet" href="../../default.css">
|
|
|
|
|
|
</head>
|
|
|
|
|
|
|
|
|
|
|
|
<body>
|
|
|
|
|
|
<a name="main"></a>
|
2025-11-07 16:12:31 +03:00
|
|
|
|
<h1>Раздел отладки</h1>
|
2018-08-02 22:04:49 +03:00
|
|
|
|
<hr>
|
|
|
|
|
|
|
2025-11-07 16:12:31 +03:00
|
|
|
|
<p>В версии 4.9 задачника Programming Taskbook появились средства,
|
|
|
|
|
|
позволяющие выводить отладочную информацию непосредственно в окно
|
|
|
|
|
|
задачника (в специальный <i>раздел отладки</i>). Необходимость в
|
|
|
|
|
|
подобных дополнительных средствах возникает, прежде всего,
|
|
|
|
|
|
при работе с комплексом Programming Taskbook for MPI
|
|
|
|
|
|
при отладке
|
|
|
|
|
|
<i>параллельных программ</i>, поскольку для них нельзя использовать такие
|
|
|
|
|
|
стандартные средства отладки, как точки останова, пошаговое выполнение
|
|
|
|
|
|
программы и окна просмотра значений переменных. Следует также
|
|
|
|
|
|
отметить, что возможность вывода информации в раздел отладки
|
|
|
|
|
|
позволяет использовать задачник для написания и отладки параллельных
|
|
|
|
|
|
программ, не связанных с выполнением конкретных учебных заданий.
|
2018-08-02 22:04:49 +03:00
|
|
|
|
</p>
|
2025-11-07 16:12:31 +03:00
|
|
|
|
<p>Отладочные средства задачника могут оказаться полезными и для
|
|
|
|
|
|
обычных, непараллельных программ. В этом случае их можно применять в
|
|
|
|
|
|
качестве дополнения к средствам встроенного отладчика.
|
2018-08-02 22:04:49 +03:00
|
|
|
|
</p>
|
|
|
|
|
|
|
2025-11-07 16:12:31 +03:00
|
|
|
|
<p>Раздел отладки представляет собой одну или несколько
|
|
|
|
|
|
многострочных текстовых областей вывода. Он располагается под
|
|
|
|
|
|
основными разделами задачника и выводится на экран только в случае,
|
|
|
|
|
|
если в нем содержится какой-либо текст:
|
2018-08-02 22:04:49 +03:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
<blockquote>
|
|
|
|
|
|
<img border="0" src="gif\debug_1.png">
|
|
|
|
|
|
</blockquote>
|
|
|
|
|
|
|
2025-11-07 16:12:31 +03:00
|
|
|
|
<p>При демонстрационном запуске программы все процедуры, связанные
|
|
|
|
|
|
с разделом отладки, игнорируются, поэтому раздел отладки на экране не
|
|
|
|
|
|
отображается.
|
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
<p>Имеется возможность скрыть в окне задачника все его разделы, кроме
|
|
|
|
|
|
раздела отладки; для этого достаточно нажать клавишу пробела.
|
|
|
|
|
|
Повторное нажатие пробела восстанавливает в окне задачника ранее
|
|
|
|
|
|
скрытые разделы. Для скрытия/отображения основных разделов окна
|
|
|
|
|
|
задачника можно также использовать соответствующую команду
|
|
|
|
|
|
контекстного меню, связанного с разделом отладки. Скрыть все разделы
|
|
|
|
|
|
окна задачника, кроме раздела отладки, можно также программным
|
|
|
|
|
|
способом, вызвав процедуру HideTask.
|
|
|
|
|
|
</p>
|
|
|
|
|
|
<p>Прокрутка содержимого раздела отладки может осуществляться с
|
|
|
|
|
|
помощью вертикальной полосы прокрутки, расположенной у его правой
|
|
|
|
|
|
границы. Можно также использовать колесико мыши и клавиатурные
|
|
|
|
|
|
комбинации <b>Alt+Up</b>, <b>Alt+Down</b> (прокрутка на одну экранную строку),
|
|
|
|
|
|
<b>Alt+PgUp</b>, <b>Alt+PgDn</b> (прокрутка на 10 экранных строк),
|
|
|
|
|
|
<b>Alt+Home</b>, <b>Alt+End</b> (прокрутка к первой или последней строке
|
|
|
|
|
|
области вывода).
|
|
|
|
|
|
</p>
|
|
|
|
|
|
<p>Предусмотрена возможность изменения размера шрифта,
|
|
|
|
|
|
используемого в разделе отладки. Шрифт может изменяться от 7 до 14
|
|
|
|
|
|
пунктов с шагом 1. Для увеличения шрифта предназначена клавиатурная
|
|
|
|
|
|
комбинация <b>Alt+[+]</b>, для уменьшения — комбинация <b>Alt+[–]</b>.
|
|
|
|
|
|
Соответствующие команды имеются также в контекстном меню раздела
|
|
|
|
|
|
отладки. Информация о текущем размере шрифта сохраняется в файле
|
|
|
|
|
|
результатов и учитывается при последующих запусках программы.
|
|
|
|
|
|
</p>
|
|
|
|
|
|
<p>Для «непараллельных» заданий раздел отладки содержит
|
|
|
|
|
|
единственную область вывода. Для заданий по параллельному
|
|
|
|
|
|
программированию число областей вывода равно числу параллельных
|
|
|
|
|
|
процессов плюс 1; при этом в каждый момент времени в разделе отладки
|
|
|
|
|
|
отображается одна из областей. Если областей вывода больше одной, то в
|
|
|
|
|
|
нижней части раздела отладки выводится набор ярлычков, позволяющих
|
|
|
|
|
|
переключиться на любую из имеющихся областей вывода:
|
2018-08-02 22:04:49 +03:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
<blockquote>
|
|
|
|
|
|
<img border="0" src="gif\debug_2.png">
|
|
|
|
|
|
</blockquote>
|
|
|
|
|
|
|
2025-11-07 16:12:31 +03:00
|
|
|
|
<p>Ярлычки с номерами (от 0 до N–1, где N — количество
|
|
|
|
|
|
процессов) позволяют просмотреть содержимое области вывода, связанной
|
|
|
|
|
|
с процессом соответствующего ранга; ярлычок с символом
|
|
|
|
|
|
«*» позволяет просмотреть область вывода, содержащую
|
|
|
|
|
|
объединенный текст всех других областей:
|
2018-08-02 22:04:49 +03:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
<blockquote>
|
|
|
|
|
|
<img border="0" src="gif\debug_3.png">
|
|
|
|
|
|
</blockquote>
|
|
|
|
|
|
|
2025-11-07 16:12:31 +03:00
|
|
|
|
<p>Для переключения на нужную область вывода достаточно щелкнуть
|
|
|
|
|
|
мышью на соответствующем ярлычке. Кроме того, для последовательного
|
|
|
|
|
|
перебора ярлычков слева направо или справа налево можно использовать
|
|
|
|
|
|
комбинации <b>Alt+Right</b> и <b>Alt+Left</b> соответственно (перебор
|
|
|
|
|
|
осуществляется циклически). Можно также сразу перейти к нужной
|
|
|
|
|
|
области вывода, нажав соответствующую клавишу: для области
|
|
|
|
|
|
«*» — клавишу <b>[*]</b>, для областей
|
|
|
|
|
|
«0»–«9» — цифровые клавиши
|
|
|
|
|
|
<b>0</b>–<b>9</b>, а для областей «10»–«35»
|
|
|
|
|
|
— буквенные клавиши от <b>A</b> до <b>Z</b> (при выполнении
|
|
|
|
|
|
заданий по параллельному программированию максимально возможное
|
|
|
|
|
|
число процессов равно 36).
|
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
<p>Если в основных разделах окна задачника отсутствуют
|
|
|
|
|
|
прокручиваемые элементы или основные разделы являются скрытыми, то
|
|
|
|
|
|
дополнительную клавишу <b>Alt</b> в перечисленных выше клавиатурных
|
|
|
|
|
|
<b>Alt</b>-комбинациях можно не использовать.
|
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
<p>Отладочная информация, получаемая из
|
|
|
|
|
|
подчиненных процессов параллельной программы, предварительно
|
|
|
|
|
|
сохраняется в специальных
|
|
|
|
|
|
временных файлах в каталоге учащегося, поэтому она будет доступна для
|
|
|
|
|
|
просмотра, даже если на каком-либо этапе выполнения
|
|
|
|
|
|
программы произойдет зависание некоторых ее подчиненных процессов.
|
|
|
|
|
|
Отладочная информация, получаемая из главного процесса, выводится
|
|
|
|
|
|
непосредственно в раздел отладки.
|
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
<p>Количество отладочных строк для каждого процесса не должно
|
|
|
|
|
|
превышать 999; если некоторый процесс пытается вывести данные в
|
|
|
|
|
|
строку с номером, превышающим 999, то в связанной с этим процессом
|
|
|
|
|
|
области отладки выводится сообщение об ошибке, и последующий вывод
|
|
|
|
|
|
отладочных данных для этого процесса блокируется. Указанное
|
|
|
|
|
|
ограничение позволяет, в частности, избежать проблем, возникающих при
|
|
|
|
|
|
«бесконечном» выводе отладочной информации из какого-либо
|
|
|
|
|
|
зациклившегося подчиненного процесса во временный файл.
|
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
<p>Каждая экранная строка, отображаемая в разделе отладки, состоит из
|
|
|
|
|
|
служебной области и области данных. Ширина служебной области равна 6 экранным позициям
|
|
|
|
|
|
для «непараллельных» заданий и 9 позициям для заданий по параллельному программированию. Ширина
|
|
|
|
|
|
области данных равна 80 позициям.
|
|
|
|
|
|
</p>
|
|
|
|
|
|
<p>Служебная область состоит из следующих частей (см. рисунки,
|
|
|
|
|
|
приведенные выше):
|
|
|
|
|
|
</p>
|
|
|
|
|
|
<ul><li> <i>область нумерации процессов</i> (только для заданий по
|
|
|
|
|
|
параллельному программированию): 2 экранные позиции,
|
|
|
|
|
|
отводимые для ранга процесса, и символ «|»;
|
|
|
|
|
|
<li> <i>область нумерации строк</i>: 3 экранные позиции, отводимые
|
|
|
|
|
|
для номера строки данных, после которых следует символ
|
|
|
|
|
|
«>» и символ пробела;
|
|
|
|
|
|
<li> <i>область признака сообщения об ошибке</i>: одна экранная
|
|
|
|
|
|
позиция, в которой может содержаться либо пробел (признак
|
|
|
|
|
|
обычного отладочного текста), либо символ «!»
|
|
|
|
|
|
(признак сообщения об ошибке).
|
2018-08-02 22:04:49 +03:00
|
|
|
|
</ul>
|
2025-11-07 16:12:31 +03:00
|
|
|
|
<p>Если в разделе отладки выводится текст, связанный со всеми
|
|
|
|
|
|
процессами параллельного приложения (этот текст связан с ярлычком
|
|
|
|
|
|
«*»), то нумерация строк для каждого процесса производится
|
|
|
|
|
|
независимо.
|
2018-08-02 22:04:49 +03:00
|
|
|
|
</p>
|
2025-11-07 16:12:31 +03:00
|
|
|
|
<p>При переключении между областями вывода, связанными с
|
|
|
|
|
|
различными процессами параллельного приложения, сохраняется номер
|
|
|
|
|
|
первой отображаемой строки (за исключением ситуации, когда в новой
|
|
|
|
|
|
области вывода отсутствует строка с требуемым номером; в этом случае в
|
|
|
|
|
|
новой области вывод осуществляется, начиная с первой строки данных).
|
|
|
|
|
|
Отмеченная особенность позволяет быстро просмотреть (и сравнить) один
|
|
|
|
|
|
и тот же фрагмент отладочных данных для различных процессов.
|
2018-08-02 22:04:49 +03:00
|
|
|
|
</p>
|
|
|
|
|
|
|
2025-11-07 16:12:31 +03:00
|
|
|
|
<p>Содержимое области вывода, отображаемой в разделе отладки, можно
|
|
|
|
|
|
копировать в буфер Windows; для этого предназначена стандартная
|
|
|
|
|
|
клавиатурная комбинация <b>Ctrl+C</b> и соответствующая команда
|
|
|
|
|
|
контекстного меню раздела отладки.
|
2018-08-02 22:04:49 +03:00
|
|
|
|
</p>
|
|
|
|
|
|
|
2025-11-07 16:12:31 +03:00
|
|
|
|
<p>Для вывода данных в раздел отладки предназначены процедуры Show и ShowLine.
|
|
|
|
|
|
Описания этих процедур приводятся
|
|
|
|
|
|
в разделе, посвященном <a href="IO.html#debug">типам и процедурам модуля PT4</a>.
|
2018-08-02 22:04:49 +03:00
|
|
|
|
</p>
|
|
|
|
|
|
|
2025-11-07 16:12:31 +03:00
|
|
|
|
<p>Возможность использования раздела отладки сохранена и в появившемся в версии 4.11
|
|
|
|
|
|
<a href="window.html#dynmode">режиме окна с динамической компоновкой</a>. Как и в окне с фиксированной компоновкой,
|
|
|
|
|
|
раздел отладки отображается ниже разделов с заданием, однако в данном случае
|
|
|
|
|
|
для всех разделов окна используется общая полоса прокрутки. В окне с динамической
|
|
|
|
|
|
компоновкой доступны почти все описанные выше действия по управлению разделом отладки,
|
|
|
|
|
|
в частности, настройка размера шрифта в разделе отладки, копирование содержимого раздела отладки
|
|
|
|
|
|
в буфер Windows, скрытие разделов окна с заданием.
|
2018-08-02 22:04:49 +03:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
<blockquote>
|
|
|
|
|
|
<img border="0" src="gif\debug_4.png">
|
|
|
|
|
|
</blockquote>
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-11-07 16:12:31 +03:00
|
|
|
|
<p>В режиме с динамической компоновкой отсутствует возможность
|
|
|
|
|
|
просмотра областей вывода, связанных с отдельными процессами параллельной программы:
|
|
|
|
|
|
раздел отладки всегда содержит объединенный текст, полученный
|
|
|
|
|
|
из всех областей. Для просмотра содержимого отдельных областей вывода
|
|
|
|
|
|
следует переключиться в режим окна с фиксированной компоновкой, нажав
|
|
|
|
|
|
клавишу <b>F4</b>.
|
2018-08-02 22:04:49 +03:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</body>
|
|
|
|
|
|
|
|
|
|
|
|
</html>
|