home   contents  previous      next        up

Посмертная отладка

Этот режим отладки служит для анализа параллельных программ, выполнение которых было прервано по одной из следующих причин:

  1. при ошибке, если программа построена в режиме реакции на ошибки HALT;
  2. вызовом функций abort и assert, которым предшествует вызов вспомогательной функции set_abort_action, устанавливающей режим HALT;
  3. нажатием клавиши BREAK, прерывающим выполнение только загрузчика iserver, с последующим вызовом программы idebug, которая останавливает транспьютерную программу, рассылая по сети сигнал Анализ.

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

Если транспьютерная программа построена в режиме реакции на ошибки HALT (при загрузке выставлять флаг ОстановПоОшибке), то при возникновении ошибки (какой-то транспьютер выставил флаг Ошибка) выполнение программы "прекращается" - транспьютер, на котором находится процесс с ошибкой, остановится, а остальные транспьютеры, используемые программой, либо продолжат работу, либо остановятся, ожидая обмена по каналу с остановленным транспьютером.

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

При аварийной остановке программы процесс может находиться в одном из следующих состояний:

  1. Еще не начал выполняться.
  2. Остановился в точке останова или завершился.
  3. Выполнялся на момент останова.
  4. Ожидал выполнение.
  5. Ожидал таймер.
  6. Ожидал обмен по линии связи.
  7. Ожидал событие Event.
  8. Ожидал обмен по каналу.

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


home   contents  previous      next        up