2008-11-13 23 views
17

La clase de Excepción en Delphi 2009 recibió una serie de características nuevas. Algunos de ellos están relacionados con la obtención de un StackTrace:Enlazando una Stacktrace en Delphi 2009

  • propiedad StackTrace: cadenaleer getStackTrace;
  • propiedad StackInfo: Puntero lea FStackInfo;
  • clase var GetExceptionStackInfoProc: función (P: PExceptionRecord): Puntero;
  • clase var GetStackInfoStringProc: función (Info: Puntero): cadena;
  • clase var CleanUpStackInfoProc: procedimiento (Info: Puntero);

¿Alguien ha usado esto para obtener un seguimiento de la pila? Sí, sé que hay otras formas de obtener un seguimiento de pila, pero si es compatible de forma nativa en la clase Excepción, preferiría aprovechar eso.

Actualización: Hay un interés blog post about this. Lo cubre en mucha profundidad.

Respuesta

8

Para mí, esto parece un marco donde puede conectar su propio seguimiento de pila. Supongo que esto podría usarse internamente en el IDE con JCLDebug. Quizás esté destinado a que los usuarios puedan proporcionar madExcept u otra implementación.

+1

Usted es 100% correcto. Estas nuevas funciones son para el marco de enganche de excepciones de terceros. Ahora, hay una forma documentada de hacer algo de trabajo en lugar de usar hacks y hooking. Además, el valioso campo FStackInfo permite asociar excepciones con otra información, que proviene del motor de rastreo de excepciones (¡por fin!). – Alex

2

No, aún no los he usado (actualmente usando madExcept para eso, y también hice algunos experimentos con JclDebug) - ¡pero gracias por la sugerencia!

2

TOndrej es correcto. Las nuevas características añadidas a la clase Exception son para terceros para enganchar su propio código de seguimiento de pila en el RTL. La implementación predeterminada de la clase Exception no produce sus propios rastreos de pila.

2

Se recomienda consultar MadExcept. No solo proporciona un manejo excelente de las excepciones no controladas (captura de pantalla, correo electrónico, etc.), sino que tiene un buen conjunto de rutinas invocables para devolverte el seguimiento de la pila que puedes utilizar en casi cualquier lugar. Bri

Cuestiones relacionadas