Ошибки управления потоком

В этот раздел относится все то, что связано с последовательностью и обстоятельствами выполнения операторов программы.

Выделяются подпункты:

очевидно неверное поведение программы;

переход по GOTO;

логика, основанная на определении вызывающей подпрограммы;

использование таблиц переходов;

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

переход к подпрограмме, которая отсутствует в памяти. Ошибки связаны с ошибками в организации оверлейных программ;

реентерабельность. Реентерабельная программа может вызывать сама себя или быть вызвана несколькими параллельными процессами одновременно. Такая возможность может не поддерживаться языком программирования. Если она поддерживается, то нужно обеспечить защиту данных, используемых одним процессом, от их модификации другим;

путаница имен переменных и команд;

неверное предположение о состоянии программы или данных после вызова;

обработка ошибок выполнения процедур (имеются в виду ошибки, когда программист не предусмотрел такую обработку);

возврат не в ту точку кода (сюда включены несколько видов ошибок: испорченный стек, переполнение и выход за нижнюю границу стека, выход из подпрограммы по GOTO вместо RETURN);

прерывания (сюда включены несколько видов ошибок: неверная таблица прерываний, ошибки, связанные с модификацией программами таблицы прерываний, ошибки, связанные с блокированием прерываний, неудачное возобновление работы программы после прерывания);

завершение работы программы;

«зависание» компьютера;

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

ожидание невозможных условий или комбинаций условий (примерами таких ошибок являются: проблемы ввода/вывода, взаимная блокировка, простая логическая ошибка в условиях);

неверный приоритет пользователя или процесса;

циклы (сюда включены несколько видов ошибок: бесконечный цикл, неверное начальное значение переменной управления циклом, случайное изменение переменной управления циклом, ошибочный критерий выхода из цикла, команды, которые должны или не должны выполняться внутри цикла, ошибка вложенности циклов);

условные операторы (Сюда включены несколько видов ошибок: неправильное сравнение, неверные результаты сравнений, условный оператор не учитывает модификации программы, ошибки сравнения значений переменных с плавающей точкой из-за округлений, спутаны логические операторы, присваивание вместо сравнения, ошибки в использовании конструкции THRN/ELSE, команды, которые не входят ни в одно из предложений, не проверен флаг, не сброшен флаг. Кроме этого в этом же подразделе рассматривается сложный условный оператор, содержащий многочисленные варианты ветвления. В этом случае возможны следующие ошибки: пропущен блок, выполняемый во всех остальных случаях, неверно определены действия для всех остальных случаев, пропущенные варианты, требуется подразделение одного варианта на несколько, пересекающиеся условия, неверные условия и невозможные случаи).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: