2009-11-16 28 views
9

Utilizando Delphi 7, ¿cómo puedo obtener una cadena que representa la pila de rastreo de un Exception?GetStackTrace en Delphi 7?

try 
    SomethingDodgy(); 
except 
    on E:Exception do begin 
    // print stack trace 
    Log.Write(/* ??? */); 
    end; 
end; 

He oído que hay una función getStackTrace en la última delphi, pero no puedo encontrar nada para Delphi 7. No, la actualización no es una opción :)

+3

Tenga en cuenta que el método 'GetStackTrace' en las versiones más nuevas de Delphi en realidad no devuelve un seguimiento de la pila. Sí necesita un marco de excepción externo de todos modos. – jpfollenius

+1

Puede configurar el JCL en minutos. Publiqué un ejemplo sobre esta pregunta SO: http://stackoverflow.com/questions/1259563/good-os-delphi-exception-handling-libraries/1260262#1260262 – Runner

Respuesta

-1

La pila-rastro en Win32 no es tan bueno como .NET o Java (y el último versoin de Delphi usa .NET stack trace).
De todos modos, encontré un enlace que proporciona más información sobre él here (Está en ExeEx, para permitir ver esa solución, haga clic en el primer enlace de la búsqueda).

Ver la parte inferior de la página allí.

+1

-1. Intercambio de expertos: "Todos los comentarios y soluciones están disponibles solo para los miembros del servicio Premium". –

+0

¡Te dije que leyeras al FONDO! Hay soluciones. ¡Lea correctamente antes de la votación a favor! –

+0

@Dmitriy: No, no hay soluciones. No en el fondo y en ningún otro lado. – jpfollenius

15

Puede intentar usar madExcept, un maravilloso marco de manejo de excepciones.

madshi tiene un montón de código de muestra allí; Estoy seguro de que he usado las cosas de la pila antes.

Como observó Dmitriy, el JCL también tiene código de seguimiento de pila; una muestra anterior es here.

+0

Sí, loco. Excepto que es increíble, pero este es el código comercial que estoy escribiendo, y no creo que pueda conseguir que la compañía lo compre. Excepto ahora mismo. JCL suena bien también, voy a echar un vistazo .. – Blorgbeard

+3

No es tan caro. ¿Cuántas horas de trabajo deberías dedicar a esto? –

+0

Sí, pero el seguimiento de la pila es bueno en este proyecto, por lo que no pasaré mucho tiempo tratando de evitarlo. – Blorgbeard

1

MemChk es bastante fácil de usar (especialmente para buscar/encontrar pérdidas de memoria) y sabe cómo representar un seguimiento de la pila desde una dirección de código.

Cuestiones relacionadas