208 lines
15 KiB
HTML
208 lines
15 KiB
HTML
<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>
|
||
<h1>Раздел отладки</h1>
|
||
<hr>
|
||
|
||
<p>В версии 4.9 задачника Programming Taskbook появились средства,
|
||
позволяющие выводить отладочную информацию непосредственно в окно
|
||
задачника (в специальный <i>раздел отладки</i>). Необходимость в
|
||
подобных дополнительных средствах возникает, прежде всего,
|
||
при работе с комплексом Programming Taskbook for MPI
|
||
при отладке
|
||
<i>параллельных программ</i>, поскольку для них нельзя использовать такие
|
||
стандартные средства отладки, как точки останова, пошаговое выполнение
|
||
программы и окна просмотра значений переменных. Следует также
|
||
отметить, что возможность вывода информации в раздел отладки
|
||
позволяет использовать задачник для написания и отладки параллельных
|
||
программ, не связанных с выполнением конкретных учебных заданий.
|
||
</p>
|
||
<p>Отладочные средства задачника могут оказаться полезными и для
|
||
обычных, непараллельных программ. В этом случае их можно применять в
|
||
качестве дополнения к средствам встроенного отладчика.
|
||
</p>
|
||
|
||
<p>Раздел отладки представляет собой одну или несколько
|
||
многострочных текстовых областей вывода. Он располагается под
|
||
основными разделами задачника и выводится на экран только в случае,
|
||
если в нем содержится какой-либо текст:
|
||
</p>
|
||
|
||
<blockquote>
|
||
<img border="0" src="gif\debug_1.png">
|
||
</blockquote>
|
||
|
||
<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; при этом в каждый момент времени в разделе отладки
|
||
отображается одна из областей. Если областей вывода больше одной, то в
|
||
нижней части раздела отладки выводится набор ярлычков, позволяющих
|
||
переключиться на любую из имеющихся областей вывода:
|
||
</p>
|
||
|
||
<blockquote>
|
||
<img border="0" src="gif\debug_2.png">
|
||
</blockquote>
|
||
|
||
<p>Ярлычки с номерами (от 0 до N–1, где N — количество
|
||
процессов) позволяют просмотреть содержимое области вывода, связанной
|
||
с процессом соответствующего ранга; ярлычок с символом
|
||
«*» позволяет просмотреть область вывода, содержащую
|
||
объединенный текст всех других областей:
|
||
</p>
|
||
|
||
<blockquote>
|
||
<img border="0" src="gif\debug_3.png">
|
||
</blockquote>
|
||
|
||
<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>: одна экранная
|
||
позиция, в которой может содержаться либо пробел (признак
|
||
обычного отладочного текста), либо символ «!»
|
||
(признак сообщения об ошибке).
|
||
</ul>
|
||
<p>Если в разделе отладки выводится текст, связанный со всеми
|
||
процессами параллельного приложения (этот текст связан с ярлычком
|
||
«*»), то нумерация строк для каждого процесса производится
|
||
независимо.
|
||
</p>
|
||
<p>При переключении между областями вывода, связанными с
|
||
различными процессами параллельного приложения, сохраняется номер
|
||
первой отображаемой строки (за исключением ситуации, когда в новой
|
||
области вывода отсутствует строка с требуемым номером; в этом случае в
|
||
новой области вывод осуществляется, начиная с первой строки данных).
|
||
Отмеченная особенность позволяет быстро просмотреть (и сравнить) один
|
||
и тот же фрагмент отладочных данных для различных процессов.
|
||
</p>
|
||
|
||
<p>Содержимое области вывода, отображаемой в разделе отладки, можно
|
||
копировать в буфер Windows; для этого предназначена стандартная
|
||
клавиатурная комбинация <b>Ctrl+C</b> и соответствующая команда
|
||
контекстного меню раздела отладки.
|
||
</p>
|
||
|
||
<p>Для вывода данных в раздел отладки предназначены процедуры Show и ShowLine.
|
||
Описания этих процедур приводятся
|
||
в разделе, посвященном <a href="IO.html#debug">типам и процедурам модуля PT4</a>.
|
||
</p>
|
||
|
||
<p>Возможность использования раздела отладки сохранена и в появившемся в версии 4.11
|
||
<a href="window.html#dynmode">режиме окна с динамической компоновкой</a>. Как и в окне с фиксированной компоновкой,
|
||
раздел отладки отображается ниже разделов с заданием, однако в данном случае
|
||
для всех разделов окна используется общая полоса прокрутки. В окне с динамической
|
||
компоновкой доступны почти все описанные выше действия по управлению разделом отладки,
|
||
в частности, настройка размера шрифта в разделе отладки, копирование содержимого раздела отладки
|
||
в буфер Windows, скрытие разделов окна с заданием.
|
||
</p>
|
||
|
||
<blockquote>
|
||
<img border="0" src="gif\debug_4.png">
|
||
</blockquote>
|
||
|
||
|
||
<p>В режиме с динамической компоновкой отсутствует возможность
|
||
просмотра областей вывода, связанных с отдельными процессами параллельной программы:
|
||
раздел отладки всегда содержит объединенный текст, полученный
|
||
из всех областей. Для просмотра содержимого отдельных областей вывода
|
||
следует переключиться в режим окна с фиксированной компоновкой, нажав
|
||
клавишу <b>F4</b>.
|
||
</p>
|
||
|
||
|
||
|
||
|
||
</body>
|
||
|
||
</html>
|