Подключение Stacktrace в Delphi 2009

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

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

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

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

4 ответов


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


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


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


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