logo
Диалоговая оболочка отладчика MPI-программ

5.6 Общая схема визуализации

После запуска программы открывается главное окно. Главное окно содержит меню, и панель инструментов. Кнопки на панели инструментов позволяют открыть трассу для чтения и закрыть программу. Меню содержит следующие пункты:

· Меню файла (File)

· Меню событий (Events)

· Меню состояния задачи (Task state)

· Меню справки (Help)

В меню файла можно открыть файл трассы для чтения и закрыть программу. Меню событий позволяет открыть окна трассы (Event line) и окно конкретных ошибок и предупреждений (Errors list). Через меню состояния задачи можно вызвать окно состояния задачи (Task state) и окно обобщенных ошибок (Error location).

5.7 Окно состояния задачи (Task state)

Основное окно Task state представляет в виде текстовой таблицы итоговое состояние задачи, определяемое итоговыми параметрами (Рис. 1):

- число завершенных процессов с неизвестным статусом (unknown status),

- число снятых процессов (aborted),

- число аварийно завершенных процессов (abend),

- число нормально завершенных (normal termination) процессов,

- общее число обнаруженных ошибок (error number)

- общее число обнаруженных предупреждений (warning number)

- общее число зависших операций посылки (pending send number),

- общее число зависших операций приема (pending receive number),

- общее число выполненных операций посылки (send number),

- общее число выполненных операций приема (receive number),

- общее число выполненных коллективных операций (GOP number).

Рис 1. Окно Task state.

Окно Task state содержит управляющие кнопки:

- Show topology - открытие окна детальной визуализации итогового состояния задачи по процессорам,

Нажатие кнопки Show topology приводит к показу в виде матрицы процессоров распределения помеченных итоговых параметров (Topology control). Сначала выводится диалоговое окно задание размера матрицы для визуализации (matrix) (Рис 2.). Это сделано в связи тем, что информации о конкретной топологии процессоров в трассе не хранится, поэтому для отображения выбирается топология решетки, где число столбцов задает сам пользователь. Подробнее окно Topology control описано ниже.

Рис 2. Окно Matrix.

5.8 Окно обобщенных ошибок (Error location)

Информация об ошибках представляется в виде текстовой таблицы, содержащей для каждой ошибки строку:

<название типа ошибки> <список различающихся ссылок на исходные коды для ошибок данного типа>

В каждой строке представляются обобщенные ошибки данного типа (Рис 3.).

Рис 3. Окно Error location.

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

В списке ссылок на исходные коды могут быть помечены один или несколько элементов и осуществлен, при нажатии кнопки Show source, переход к окну (окнам) стека вызовов и исходного текста (Text control) программы. В окне (окнах) исходного текста показывается строка исходной программы, соответствующая помеченной ссылке в исходный код. Таким образом, пользователь может просмотреть для каждого типа ошибки все места в программе, где такие ошибки были обнаружены. При этом не требуется доступ к трассам.

5.9 Окно топологии процессоров (Topology control)

Окно топологии отображает топологию процессоров. Процессоры раскрашиваются в соответствии с итоговым состоянием задачи. Справа располагается легенда, где объясняется значение цветов и указываются значения параметров, соответствующих данному цвету (Рис 4).

Рис 4. Окно Topology control.

По двойному щелчку мыши на изображении процессора вызывается окно просмотра стека и исходных текстов (Text control) для последней ссылки в исходные тексты для данного процессора.

5.10 Окно конкретных ошибок (Errors list)

Информация об ошибках представляется в виде текстовой таблицы, содержащей для каждой ошибки строку (Рис 5):

<название типа ошибки> <список ссылок (времен) ошибочных событий в трассе >

Рис 5. Окно Errors list.

В строке таблицы с конкретными ошибками содержится упорядоченный по времени (в рамках строки) список ошибок данного типа. Значение элемента списка - время возникновения ошибки. Все строки упорядочены по временам их первых (самых ранних) ошибок.

В списке ссылок (времен) могут быть помечены один или несколько элементов и осуществлен переход к другим окнам, представляющим дополнительную информацию о конкретной ошибке. Для этой цели используются кнопки Show Errors, Show Event Line, Show Comments.

При нажатии кнопки Show Comments открывается дополнительное окно Comments (Рис 6), в котором приводится текст комментария об ошибке. Комментарий формируется отладчиком и предоставляется визуализатору при помощи интерфейса.

Рис 6. Окно Comments.

При нажатии кнопки Show Event Line осуществляется открытие окна событий Event line. Окно Event line должно открываться со сдвигом к первому отмеченному в списке конкретных ошибок событию (первому по времени событию, если указано несколько).

При нажатии кнопки Show Event Line визуализатору требуется доступ к трассам.

При нажатии кнопки Show Errors осуществляется открытие окна (окон) трасс (Trace control) и показывается соответствующее событие (строка) трассы, а также для каждого события трассы открывается окно (окна) стека и исходного текста (Text control) программы. Для ошибочного события каждой трассы показывается соответствующее окно с ошибочной строкой программы. Для одной отмеченной в окне Errors list ошибки могут показываться трассы нескольких процессоров, если ошибочная ситуация связана с несколькими процессорами.

При нажатии кнопки Show Errors визуализатору требуется доступ к трассам.

5.11 Окно событий (Event line)

Другая форма визуализации ошибок - окно Event line, в котором графически представлены события программы по процессорам с выделением ошибочных событий.

В этом окне для каждого процессора представлены в виде линеек окрашенных простейших геометрических фигур события трассы, упорядоченные по времени. Для каждого процессора изображается своя линейка. Таким образом, информация в этом окне - двумерный графический объект с координатами (номер процессора, время события).

Изображения событий “синхронизируются” (выравниваются слева) по коллективным операциям - у этих событий в линейках разных процессоров одинаковые координаты “время события”. Ошибочные события окрашиваются в различные оттенки красного, с учетом типа зафиксированной ошибки. Остальные события окрашиваются цветами, отличными от красного, чтобы упростить понимание типа операции (Рис 7).

Рис 7. Окно Event line.

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

Масштабирование осуществляется при помощи панели инструментов, возможно масштабирование сразу по двум измерениям и по каждому в отдельности, с заданием коэффициента растяжения (сжатия).

Навигация между окнами: при двойном “нажатии” кнопкой мыши на изображенное событие -переход к окну Trace control, причем в списке событий трассы текущим выделено событие, соответствующее нажатому изображению.

5.12 Окно просмотра стека и исходных текстов (Text control)

Окно показа стека и текстов разделяется на две части: просмотр стека (Stack view) и просмотр текса (Source view). В окне Stack view представлен стек вызовов в виде списка строк формата <номер> <имя файла> <стока кода> <наличие файла> (Рис 8), где <имя файла> - имя исходного файла, <строка кода> - номер строки в исходном тексте, помогающий локализовать ошибку, <наличие файла> - указание существования файла (файл может не существовать). Последний вызов расположен под первым номером, первый вызов стоит последним в списке.

Рис 8. Окно Text control.

Второе окно Source view отображает исходные тексты программы, и представляет собой набор закладок (Tab pane), где каждому файлу соответствует одна закладка.

Управление:

При выборе строки в окне стека, в окне Source view отображается исходный текст соответствующий данному вызову.

Возможен выбор режимов просмотра, через меню Actions:

· Показать/спрятать стек

· Показать/спрятать исходный код

· Показать строку кода (прокрутить окно исходного текста к выделенной строке)

5.13 Окно просмотра трасс (Trace control)

Окно Trace control состоит из двух частей (окон): окно трассы Trace view и окно Text control (Рис 9).

В окне Trace view представляются в текстовом виде события трассы, упорядоченные по времени. События, определенные отладчиком как ошибочные, имеют соответствующие пометки в поле признака ошибки, а также снабжаются текстовыми сообщениями об ошибках.

Каждому событию соответствует срока формата

<номер события> <вызов/возврат> <имя функции> <время события> <имя файла> <ссылка на исходные коды> <признак ошибки> <название ошибки> <текст ошибки>

Где <вызов/возврата>- признак вызова или возврата из функции

<ссылка на исходные коды> - ссылка на текст программы, где происходит обращение к функции или возврат из нее

<признак ошибки> - может отсутствовать, либо указывать на наличие ошибки или предупреждения

Каждому событию соответствует ссылка на исходные коды или неопределенная ссылка. При смене строки в окне Trace view обновляется содержимое окна Text control, в нем выводится стек и исходные тексты, соответствующие ссылке в текущем событии из окна Trace view.

Рис 9. Окно Trace control.

Управление:

В окне Trace control через меню Actions возможны следующие действия:

· Полный/сокращенный просмотр стека. Установка (снятие) данного режима позволяет показывать (прятать) окно Stack view в окне Text control. При отключении стека показывается последнее событие в стеке вызовов, а точнее исходный текст, соответствующий этому событию.

· Показать/спрятать окно Stack control. Позволяет показать (спрятать) окно Stack control. При отключении показа окна Stack control ускоряется навигация по списку событий, пользователь может включить показ исходных кодов только для интересующего его события.

· Показать/спрятать окно Trace view. Позволяет пользователю подробнее рассмотреть интересующие его исходные коды.

· Найти первую ошибку. Находит в списке событий первое событие с признаком ошибки и делает его текущим.

· Найти первую ошибку или предупреждение. Находит в списке событий первое событие с признаком ошибки или предупреждения и делает его текущим.

· Найти следующую ошибку. Находит следующее событие с признаком ошибки и делает его текущим.

· Найти следующую ошибку или предупреждение. Находит следующее событие с признаком ошибки или предупреждения и делает его текущим.

Некоторым событиям может соответствовать ссылка на другое событие (например, последовательность событий, приводящая к ошибке типа deadlock). При двойном щелчке мышью на этом событии, вызывается окно Trace control, в котором отображаются события на процессоре, на котором произошло следующее событие. Причем, текущим становится событие, следующее в последовательности.

Заключение

В ходе работы были изучены модели параллельного программирования, методики и средства отладки параллельных программ, методики создания пользовательского интерфейса. Изучена графическая библиотека Qt [13], которая была выбрана как база для реализации из-за того, что она обеспечивает работу приложения в двух операционных средах - UNIX и Windows. Изучено программное средство Qt Designer. Проанализированы вопросы визуализации отладочной информации, способов точной локализации и представления ошибок.