Работа с дампами

Как уже было сказано выше, пользователь может запросить дамп вычисления. Дампы - это обычные текстовые файлы, имеющие расширение ".dmp". Чтобы запросить формирование дампа, есть два основных способа:

вызов встроенной функции DUMP*;

нажатие десятой кнопки тулбара.

Следует отметить, что использование функции DUMP* является более гибким, поскольку позволяет задать два уровня дампирования: с включением в дамп снимков ассоциативного списка и без включения. Включение дампирования нажатием кнопки (или выбором пункта меню) позволяет задать только дампирование без включения снимков ассоциативного списка.

При нажатии кнопки (или вызове функции DUMP* без параметров) появляется диалоговое окно выбора файла. Пользователь должен задать имя нового или существующего файла. Новый файл будет создан, а если задано имя существующего файла, то новая информация будет дописываться в конец файла. Имя заданного файла будет отображаться в статус-баре.

Чтобы задать включение снимков ассоциативного списка в дамп, следует вызвать функцию DUMP* со вторым параметром T.

Проиллюстрируем все сказанное примером. В стандартную поставку входит рекурсивная функция fact, которая вычисляет факториал целого числа. Если запустить интерпретатор, включить режим дампирования, задать имя файла 444.dmp и вычислить S-выражение (fact 5), то в dump-файл попадет вся служебная информация о работе функции.

Обратите внимание, что на вычисление ушло 0.17 сек, тогда как без дампирования это же S-выражение вычисляется менее чем за 0,01 сек (т.е. более чем в 17 раз быстрее). Теперь можно посмотреть, какая информация попала дамп. Для просмотра дампа выполнения следует нажать 14-ю кнопку тулбара. Пользователю будет предложено выбрать дамп для просмотра. Если выбрать файл 444.dmp, то пользователь увидит:

По дампу легко прослеживаются все этапы вычисления. Точками показывается уровень рекурсии. При дампировнии алгоритмов с глубокой рекурсией более удобным может оказаться режим отображения глубины вложенности при помощи числа в квадратных скобках. Режимом отображения вложенности рекурсии управляет конфигурационный параметр NEST. Этот параметр может принимать значения 0, 1 или 2. Если значение NEST равно 0, то вложенность не отображается. Значение 1 вызывает отображение вложенности числом в квадратных скобках, а значение 2 вызывает отображение вложенности точками. Это выглядит так:

Если вызвать функцию DUMP* явно, задав вторым параметром атом T, и вычислить 5!, как показано ниже:

а затем просмотреть dum-файл, то можно увидеть, как меняется ассоциативный список:

Для возврата к вводу S-выражений следует повторно нажать 14-ю кнопку тулбара. Для выключения режима дампирования следует повторно нажать 10-ю кнопку тулбара (или явно вызвать встроенную функцию UNDUMP*).

Режим дампирования доступен и в скриптовых движках CONLISP и WLISP, но, естественно, включать дампирование здесь придется вызовом функции DUMP*, а просматривать дампы - с помощью каких-либо подручных средств.

Сайт создан в системе uCoz