77358

О реальности автоматизации отладки счетных программ

Научная статья

Информатика, кибернетика и программирование

Современные отладчики позволяя осуществлять мониторинг по ходу исполнения программы помогают в локализации ошибок. Для таких систем нужна эталонная программа или эталонный запуск сохраняющий информацию о ходе выполнения программы. В частности о неправильности может сигнализировать сбой программы типа деления на ноль некорректного обращения к памяти или срабатывания ssertусловия. В случае плавающей ошибки анализируя выдачи программы при разных запусках можно попытаться обнаружить отличающиеся значения.

Русский

2015-02-02

26.5 KB

0 чел.

О реальности автоматизации отладки счетных программ

Елена Викторовна Рубилова, Сергей Владимирович Шарф

УрГУ, ИММ УрО РАН, г. Екатеринбург

Отладка — это локализация и исправление ошибок в программе. Современные отладчики, позволяя осуществлять мониторинг по ходу исполнения программы, помогают в локализации ошибок. При этом почти всё управление мониторингом и весь анализ выдаваемой информации возложены на программиста. Представляется, что для многих типов ошибок часть анализа можно делать автоматически. Существуют инструменты, которые берут часть анализа на себя для ошибок определенного типа, например, утечек памяти и использования неопределенных указателей. Автоматический анализ широко применяется в системах, поддерживающих сравнительную отладку. Для таких систем нужна эталонная программа или эталонный запуск, сохраняющий информацию о ходе выполнения программы.

Можно заметить, что отладка — всегда сравнительная. Только в обычном случае эталон имеется лишь в голове человека. При этом для начала поиска ошибки важно знать лишь о неправильности данных, выдаваемых программой. В частности, о неправильности может сигнализировать сбой программы типа деления на ноль, некорректного обращения к памяти или срабатывания assert-условия. В случае плавающей ошибки, анализируя выдачи программы при разных запусках, можно попытаться обнаружить отличающиеся значения. В других случаях можно опираться на указание программиста.

Построение зависимостей конкретного значения от других переменных — это задача довольно формальная. Её решают при компиляции, но результаты почему-то не используют в отладчиках.

Основная идея — выявление зависимостей для переменной, содержащей некорректные данные, и нахождение по ним места ошибки в программе. Для оценки сложности различных подходов к реализации идеи был разработан и частично реализован прототип сравнительного отладчика и добавлена новая команда в отладчик GDB.

Архитектурно прототип сравнительного отладчика состоит из функциональных блоков, каждый из которых можно реализовывать отдельно. Написан каркас в виде набора классов и интерфейсов Java с конкретизацией для отладки с помощью GDB программ на языке Си. Осуществляется сравнение вывода программ, нахождение несовпадения по контрольным точкам и локализация начального несовпадения. Обнаружились следующие проблемы.

При изменении программ имеются трудности с автоматическим сопоставлением участков кодов одного и другого вариантов программы. Но когда речь идет об обычном отладчике в случае плавающей ошибки, то изменений в программе нет. Один из путей сокращения трудностей — реализация эффективного взаимодействия программиста и отладчика. Эффективность может достигаться хорошо спроектированным интерфейсом и увеличением арсенала средств отладки.

Для счетных программ время до ошибки велико, что приводит к увеличению времени отладки, основанной на повторных запусках программы. Предполагается, что это время будет сокращено путём применения точек сохранения состояния. Кроме того, число повторных запусков может быть сокращено за счёт более глубокого мониторинга и анализа его результатов.

Добавление новой команды в отладчик GDB продемонстрировало, что этот путь также реален. Возможность установки точки слежения с сохранением места модификации значения переменной позволяет анализировать историю изменения переменной при выборе контрольных точек при следующем запуске. Полученные результаты позволяют сделать вывод о возможности дальнейшей автоматизации процесса отладки. При этом речь идёт, прежде всего, об упрощении поиска для сложных случаев плавающих ошибок в счетных программах, в частности, параллельных.


 

А также другие работы, которые могут Вас заинтересовать

20431. Концепции программных решений 33 KB
  Распределенные системы очень похожи на традиционные операционные системы. Чтобы понять природу распределенной системы рассмотрим сначала операционные системы с точки зрения распределенности. Операционные системы для распределенных компьютеров можно вчерне разделить на две категории сильно связанные и слабо связанные системы. Слабо связанные системы могут представляться несведущему человеку набором операционных систем каждая из которых работает на собственном компьютере.
20432. Распределенные операционные системы 79 KB
  Распределенные операционные системы Существует два типа распределенных операционных систем. Поэтому давайте кратко обсудим операционные системы предназначенные для обыкновенных компьютеров с одним процессором. Операционные системы для однопроцессорных компьютеров Операционные системы традиционно строились для управления компьютерами с одним процессором. На время выполнения кода операционной системы процессор переключается в режим ядра.
20433. Сетевые операционные системы, файловые серверы 174 KB
  Сетевые операционные системы В противоположность распределенным операционным системам сетевые операционные системы не нуждаются в том чтобы аппаратное обеспечение на котором они функционируют было гомогенно и управлялось как единая система. Машины и их операционные системы могут быть разными но все они соединены в сеть. Сетевые операционные системы также имеют в своем составе команду удаленного копирования для копирования файлов с одной машины на другую...
20434. Программное обеспечение промежуточного уровня 110.5 KB
  Программное обеспечение промежуточного уровня Ни распределенные ни сетевые операционные системы не соответствуют нашему определению распределенных систем данному в разделе 1. На ум приходит вопрос: а возможно ли вообще разработать распределенную систему которая объединяла бы в себе преимущества двух миров масштабируемость и открытость сетевых операционных систем и прозрачность и относительную простоту в использовании распределенных операционных систем Решение было найдено в виде дополнительного уровня программного обеспечения который...
20435. Систе́ма управле́ния ба́зами да́нных 159 KB
  Основные функции СУБД управление данными во внешней памяти на дисках; управление данными в оперативной памяти с использованием дискового кэша; журнализация изменений резервное копирование и восстановление базы данных после сбоев; поддержка языков БД язык определения данных язык манипулирования данными. Обычно современная СУБД содержит следующие компоненты: ядро которое отвечает за управление данными во внешней и оперативной памяти и журнализацию процессор языка базы данных обеспечивающий оптимизацию запросов на извлечение и...
20436. Модель клиент-сервер 39 KB
  Модель клиентсервер До этого момента мы вряд ли сказали чтото о действительной организации распределенных систем более интересуясь тем как в этих системах организованы процессы. Они пришли к выводу о том что мышление в понятиях клиентов запрашивающих службы с серверов помогает понять сложность распределенных систем и управляться с ней. В этом разделе мы кратко рассмотрим модель клиентсервер. Клиенты и серверы В базовой модели клиентсервер все процессы в распределенных системах делятся на две возможно перекрывающиеся группы.
20437. Разделение приложений по уровням 76 KB
  Например сервер распределенной базы данных может постоянно выступать клиентом передающим запросы на различные файловые серверы отвечающие за реализацию таблиц этой базы данных. В этом случае сервер баз данных сам по себе не делает ничего кроме обработки запросов. Однако рассматривая множество приложений типа клиентсервер предназначенных для организации доступа пользователей к базам данных многие рекомендовали разделять их на три уровня: уровень пользовательского интерфейса; уровень обработки; уровень данных. Уровень обработки обычно...
20438. CASE-средства 1.81 MB
  В предыдущей лекции было рассказано о видах диаграмм UML и даны некоторые рекомендации относительно последовательности их построения. Мы уже знаем что нотация UML специально разрабатывалась в расчете на то чтобы диаграммы можно было легко рисовать от руки. В этой лекции мы познакомимся с некоторыми подобными пакетами а именно: IBM Rational Rose; Borland Together; Microsoft Visio; Sparx Systems Enterprise Architect; Gentleware Poseidon; SmartDraw; Dia; Telelogic TAU G2; StarUML; другие программы UML отличное средство моделирования но как...
20439. Rational Rose DataModeler 29.5 KB
  Унифицированный язык объектноориентированного моделирования Unified Modeling Language UML явился средством достижения компромисса между этими подходами. Существует достаточное количество инструментальных средств поддерживающих с помощью UML жизненный цикл информационных систем и одновременно UML является достаточно гибким для настройки и поддержки специфики деятельности различных команд разработчиков. Таким языком оказался UML. Создание UML началось в октябре 1994 г.