2008-11-13 4 views
17

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

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

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

Обновление: Есть интерес blog post about this. Охватывает его на большой глубине.

ответ

8

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

+1

Вы на 100% верны. Эти новые функции предназначены для сторонних разработчиков. Теперь есть документированный способ выполнения какой-либо работы вместо использования хаков и подключения. Плюс, очень ценное поле FStackInfo позволяет связать исключение с другой информацией, которая исходит из механизма отслеживания исключений (наконец!). – Alex 2009-04-25 11:26:25

2

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

2

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

2

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