Cтраница 1
Аварийная печать осуществляется один раз при работе отлаживаемой программы, в момент возникновения аварийной ситуации в программе, препятствующей нормальному ее выполнению. Тем самым, конкретное место включения в работу аварийной печати определяется автоматически без использования информации от программиста, который должен только определить список выдаваемых на печать переменных. [1]
Аварийная печать также не может быть использована в качестве основного средства локализации ошибок, так как отсутствие аварии в программе еще не говорит с том, что в ней нет ошибок. [2]
Аварийная печать может быть произведена в форме системного дампа. Кроме того, выдается и некоторая системная информация, которая помогает выявить причину аварии в программе для наиболее сложных случаев ошибок. После осуществления дампа выполнение программы прекращается. [3]
Подлинную аварийную печать в программах, написанных на фортране, можно выполнить только используя средства ОС ( см. ниже), но сервисные подпрограммы OVERFL и DVCHK позволяют осуществить печать, подобную аварийной. [4]
Под аварийной печатью понимается печать значений переменных в программе в тот момент ее выполнения, когда в ней возникает ошибка, препятствующая дальнейшему нормальному ее выполнению - авария; обычно после осуществления такой печати выполнение программы прекращается. [5]
Но во время осуществления аварийной печати могут выдаваться значения и тех переменных, которым еще ничего не было присвоено; в этом случае на печать выводятся случайные значения из ячеен памяти, отведенных под такие переменные. Для того, чтобы предотвратить возникновение ошибок печати при выводе таких значений и для облегчения разбора аварийной выдачи, всем переменным, используемым в программе, следует при их описании или в самом начале блока присваивать какие-либо специфические значения. [6]
![]() |
Общая схема отладки программ. [7] |
Для получения дополнительных промежуточных результатов работы используются аварийная печать, печать в контрольных точках и слежение за значениями переменных. При аварийной печати выдаются значения переменных в программе в тот момент, когда в ней возникают ошибки. Изучение и сопоставление этих значений позволяют достаточно точно определить место ошибки в программе. [8]
Для того чтобы можно было легко включать и выключать аварийную печать, ее следует задавать по условию, например, следующим образом. [9]
Па принципам работы средства локализации были разделены на 4 типа: аварийная печать, печать в узлах, слежение, прокрутка. Характер задаваемой программистом информации при обращении к какому-либо из средств зависит от его типа. [10]
Если при вводе D1 присвоить исходное значение соответствующее истине, то аварийная печать будет включена. [11]
Ситуации SIZE, SUBSCRIPTRANQE, STRINGRANGE по умолчанию выключены, и поэтому для выполнения аварийной печати при возникновении этих ситуаций их необходимо включить с помощью соответствующих префиксов. В противном случае трудно будет найти ошибки, связанные с выходом значения переменной за установленный диапазон, значения индекса - за его объявленные границы, подстроки - за строку, из которой она выделяется. [12]
Если выполнение программы не доходит до печати результатов из-за ошибок в ней, то на этот случай и предусматривается аварийная печать. Но для некоторых ошибок ( например, для зацикливания) аварийной - печати может и не быть, и все равно придется прибегать к другим способам локализации ошибок. [13]
Если предположить, что ON-операторы выполняются в указанном порядке, то в случае, если ошибка произойдет до выполнения оператора ON с меткой S1, никакой аварийной печати не происходит, и выполнение программы заканчивается с выдачей диагностического сообщения от системы. Для ошибки, возникшей в операторах, выполняемых между ON-операторами и метками S1 и S2, производится печать значения величины А. При ошибке в операторах от метки S2 до S4, принадлежащих блоку Q и не входящих в тело процедуры Т, происходит печать В, а после оператора с меткой S4 - печать С. [14]
Помимо печати, управляемой данными ( PUT DATA), могут быть использованы, конечно, и другие виды печати, но приведенный способ обычно удобнее при отладке, так как облегчает разбор печати, хотя для экономии бумаги можно иногда воспользоваться и PUT EDIT. Аварийная печать может определяться и группой операторов, задаваемых внутри блока, входящего в ОМ-оператор. [15]