Подключение стопки в Delphi 2009

17

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

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

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

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

    
задан Jim McKeeth 13.11.2008 в 10:30
источник

4 ответа

8

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

    
ответ дан Ondrej Kelle 14.11.2008 в 14:21
  • Вы на 100% правильны. Эти новые функции предназначены для сторонних разработчиков. Теперь есть документированный способ выполнения какой-либо работы вместо использования хаков и подключения. Кроме того, очень ценное поле FStackInfo позволяет связать исключение с другой информацией, которая исходит из механизма отслеживания исключений (наконец!). –  Alex 25.04.2009 в 13:26
2

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

    
ответ дан PatrickvL 13.11.2008 в 11:27
2

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

    
ответ дан Remy Lebeau 13.02.2009 в 03:27
2

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

    
ответ дан Brian Frost 13.02.2009 в 11:27