Cтраница 2
Во-первых, неправильность применяемого метода показывается из общетеоретических соображений. Во-вторых, приводится пример, когда метод дает заведомо неправильный ответ. В-третьих, находится конкретная ошибка, допущенная авторами метода, которая приводит к неверным рекомендациям. [16]
Каждая операционная система и каждая разновидность управляющей программы распечатывают содержимое основной памяти не совсем так, как это делается в другой операционной системе или в той же операционной системе другим вариантом управляющей программы. Поэтому в этой книге невозможно ис черпывающе описать процесс истолкования дампа основной памяти и нахождения по нему ошибок в проблемной программе. Чтобы распознать признаки конкретных ошибок, программисту следует обратиться к пособиям по соответствующей операционной системе. В настоящей главе программист не получит такой детальной информации, но она может помочь ему при анализе полей данных, содержащихся в той части распечатки дампа основной памяти, которая относится к проблемной программе. [17]
Само собой разумеется, как и раньше, мы несем ответственность за любые фактические ошибки, недостатки в изложении материала, а также возможные недосмотры. Как и прежде, мы будем признательны за все замечания и предложения по тексту этой книги. Ваши замечания относительно содержания, а также по поводу конкретных ошибок также приветствуются. [18]
Для решения этих проблем были разработаны три программы: имитатор устройства, имитатор терминала или удаленной системы и монитор ввода-вывода. С помощью управляющих записей можно было заставить имитатор сгенерировать конкретную ошибку ввода-вывода в конкретном типе операции ввода-вывода и указать ему, должна ли быть ошибка постоянной или это нерегулярный сбой, какую временную задержку сделать для этой операции и какие данные выдавать в-качестве результата операции чтения. Отметим, что многие из этих условий было бы трудно проверить даже в случае, если бы аппаратное устройство имелось. [19]
Рассмотренная модель рассеивания ошибок Математически достаточно проста и позволяет получить статистически приемлемые результаты оценок. Нетрудно представить себе программу, которая производит рассеивание ошибок в произвольно выбранном модуле. При этом вставляются логические ошибки путем изменений конструкций или удаления операторов, а затем модуль заново компилируется. Естественно, что характер вставляемых ошибок держится от лиц, тестирующих программу, в секрете, но программа должна регистрировать вставленные ошибки с тем, чтобы при тестировании можно было определить любую конкретную ошибку либо как рассеянную, либо как исходную. [20]