Захват Stacktrace в Delphi 2009
Класс Exception в Delphi 2009 получил ряд новых функций. Некоторые из них связаны с получением stacktrace:
- свойство StackTrace: строка читать GetStackTrace;
- свойство StackInfo: указатель читать FStackInfo;
- класс var GetExceptionStackInfoProc: функция (P: PExceptionRecord): указатель;
- класс var GetStackInfoStringProc: функция (информация: указатель): строка;
- класс var CleanUpStackInfoProc: процедура (информация: указатель);
Кто-нибудь использовал их для получения трассировки стека? Да, я знаю, что есть другие способы получить трассировку стека, но если она поддерживается в классе Exception, я бы предпочел использовать это.
Обновление. сообщение в блоге об этом. Охватывает его на большой глубине.
Ответы
Ответ 1
Для меня это выглядит как структура, в которой вы можете подключить собственную трассировку стека. Думаю, это можно было бы использовать внутри IDE с JCLDebug. Возможно, он предназначен для пользователей, чтобы иметь возможность поставлять madExcept или другую реализацию.
Ответ 2
Нет, я еще не использовал их (в настоящее время для этого используется madExcept, а также некоторые эксперименты с JclDebug), но спасибо за подсказку!
Ответ 3
Тондрей правильный. Новые функции, добавленные в класс Exception, предназначены для сторонних пользователей, чтобы привязать свой собственный трассировочный код стека к RTL. По умолчанию реализация класса Exception не создает собственные трассировки стека.
Ответ 4
Вам было бы хорошо посоветовать посмотреть на MadExcept. Он не только обеспечивает отличную обработку любых необработанных исключений (захват экрана, электронная почта и т.д.), Но у него есть хороший набор вызываемых подпрограмм, чтобы передать вам трассировку стека, которую вы можете использовать практически в любом месте.
Бри