ЧАСТЬ |
ОПИСАНИЕ |
Обработчик фатальных ошибок
• много
полезной информации об ошибке
•
настраиваемое
имя файла и папка для хранения ошибок
•
защита
от перезаписи файлов с ошибками
|
Вся
возможная информация о фатальной ошибке (намного
больше чем в xppfatal.log)
хранится в файле с настраиваемым именем/путем.
Выводятся параметры для каждой функции в стеке вызовов!
Новое: Выводится
действительный блок кода (а не только место создания)
для вызовов блоков кода.
Новое: Выводится
BEGIN SEQUENCE в
стеке вызовов
Старый
файл с фатальной ошибкой больше не перезаписывается новым. Старый
файл переименовывается в уникальное имя (на основе даты ошибки). |
|
|
Расширенная
информация для стека вызовов
• получение
параметров для любой функции в стеке вызовов
• получение
действительного блока кода для вызовов блоков кода
• получение
действительного объекта для вызова методов
|
Это
ожидаемая со времен Клиппера возможность: получение параметров
для функции из стека вызовов. Да,
insider():ProcParam([deep][,parNo]) работает!
Новое: Другое
важное дополнение это получение блока кода или объекта для
соответствующего элемента в стеке вызовов.
|
|
|
Расширенная информация об использованной памяти
• полная
информация об использованной памяти
•
уникальная
возможность по определению общего количества использованных переменных
• статистика
по использованным переменным, сгруппированная по типам
• статистика
по использованным объектам
• получение
количества ссылок на массив или объект
|
Определение
количества использованных переменных это хороший инструмент для
поиска функций, использующих много памяти.
А
получение количества ссылок на массив или объект может помочь
найти ненужные ссылки на переменные.
|
|
|
Аспектно-ориентированное
расширение для Xbase++
• контроль
над вызовом любой функции
• контроль
над вызовом любого метода, даже скрытого (hidden) или защищенного
(protected)
|
Контролирование
вызова любой функции или метода дает новые возможности для отладки
и профилирования.
Полное
управление параметрами и возвратом контролируемого кода. Ваш
обрамляющий код может быть вызван до/после/вместо контролируемого
кода.
|