Прикрепление Stacktrace в Delphi 2009 - PullRequest
17 голосов
/ 13 ноября 2008

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

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

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

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

Ответы [ 4 ]

8 голосов
/ 14 ноября 2008

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

2 голосов
/ 13 февраля 2009

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

2 голосов
/ 13 февраля 2009

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

2 голосов
/ 13 ноября 2008

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

...