|
Параллельная программа для мультикомпьютера представляется системой последовательных асинхронно взаимодействующих процессов. Следовательно, разработку параллельной программы следует проводить в 2 этапа. Сначала производится разработка и отладка последовательных блоков программы. Затем программа собирается из этих блоков и выполняется отладка операций коммуникации. Существует 2 различных типа инструментов отладки: системы интерактивной отладки программ и системы мониторинга. Первые позволяют пошаговое исполнение программы, отслеживание изменения всех переменных. Однако при этом вносятся существенные искажения в поведение приложения. Системы мониторинга применяются там, где не возможно использовать интерактивные отладчики, или тогда, когда временная диаграмма приложения не должна быть искажена. В этом случае информация в процессе исполнения программы сохраняется для последующего анализа. Можно выделить два подхода к сбору отладочной информации: исполнение программы из под внешнего отладчика, и использовать вставку инструкций в код программы (программа сама о себе собирает информацию). Первый подход плох тем, что из-за переключений контекста на каждой инструкции очень сильно замедляет исполнение программы, а это не приемлемо если происходит отладка коммуникаций. Второй подход в этом плане более мягкий, так как влияние оказывается только вставленными инструкциями. С целью дальнейшей минимизации влияния отладчика не программу необходимо производить накопление отладочной информации с тем, чтобы сохранять ее только в моменты менимальной активности (дисковой/сетевой). Также необходимо избавить счетный процесс от этих обязанностей. Кажется разумным связать каждый процесс параллельной программы с неким системным процессом, который бы производил накопление, хранение и сохранение отладочной информации и, возможно, занимался частично ее анализом. Для получения информации об операциях взаимодействия процессов параллельной программы требуется вставка довольно большого числа однообразных инструкций. Все это приводит к изменению кода до неузнаваемости. Кроме того, появляются инструкции для сбора дополнительной информации. Решить эту проблему позволяет использование функций-оберток, которыми подменяются все функции, отвечающие за взаимодействие процессов. Для удобства пользователя процесс замены одних операторов другими должен быть автоматизирован. Для этого перед компиляцией программы ее исходный код должен быть пропущен через препроцессор. Желательно, чтобы дополнительные инструкции по управлению сбором отладочной информации никоим образом не влияли на программу, если отладка не выполняется (не приходилось их удалять перед сборкой окончательной версии программы). Это возможно если инструкции являются комментариями языка программирования. Результатом исполнения отлаживаемой программы является файл отчета (набор файлов), информация из которых может извлекаться системой анализа и визуализуции и производится ее анализ. |