Подтвердить что ты не робот

Захват Stacktrace в Delphi 2009

Класс Exception в Delphi 2009 получил ряд новых функций. Некоторые из них связаны с получением stacktrace:

  • свойство StackTrace: строка читать GetStackTrace;
  • свойство StackInfo: указатель читать FStackInfo;
  • класс var GetExceptionStackInfoProc: функция (P: PExceptionRecord): указатель;
  • класс var GetStackInfoStringProc: функция (информация: указатель): строка;
  • класс var CleanUpStackInfoProc: процедура (информация: указатель);

Кто-нибудь использовал их для получения трассировки стека? Да, я знаю, что есть другие способы получить трассировку стека, но если она поддерживается в классе Exception, я бы предпочел использовать это.

Обновление. сообщение в блоге об этом. Охватывает его на большой глубине.

4b9b3361

Ответ 1

Для меня это выглядит как структура, в которой вы можете подключить собственную трассировку стека. Думаю, это можно было бы использовать внутри IDE с JCLDebug. Возможно, он предназначен для пользователей, чтобы иметь возможность поставлять madExcept или другую реализацию.

Ответ 2

Нет, я еще не использовал их (в настоящее время для этого используется madExcept, а также некоторые эксперименты с JclDebug), но спасибо за подсказку!

Ответ 3

Тондрей правильный. Новые функции, добавленные в класс Exception, предназначены для сторонних пользователей, чтобы привязать свой собственный трассировочный код стека к RTL. По умолчанию реализация класса Exception не создает собственные трассировки стека.

Ответ 4

Вам было бы хорошо посоветовать посмотреть на MadExcept. Он не только обеспечивает отличную обработку любых необработанных исключений (захват экрана, электронная почта и т.д.), Но у него есть хороший набор вызываемых подпрограмм, чтобы передать вам трассировку стека, которую вы можете использовать практически в любом месте. Бри