En una aplicación delphi 2007, hemos utilizado madExcept para manejar las excepciones para nosotros. Usamos el diálogo estándar, permitiendo que el usuario nos envíe un informe con el correo si así lo desea.madExcept, obteniendo la parte superior de la pila actual
Queremos agregar un poco a esta funcionalidad. Si el usuario elige no enviar un informe completo, aún queremos registrar la excepción en un archivo, pero no un informe completo. Queremos la clase y el mensaje de excepción, y el archivo fuente y el número de línea.
Los dos primeros son fáciles, pero no puedo encontrar una manera directa de encontrar el último.
Tengo el informe de excepción completo en la forma de una interfaz IMEException
. Por lo que puedo ver, la pila de llamadas está disponible solo a través de la propiedad BugReportSections
, que me da la pila en texto sin formato.
En madStackTrace.pas, hay una función StackTrace()
que debería darme lo que quiero. Se necesita una gran cantidad de parámetros, y la documentación es un poco corto en la información ..
Pregunta: ¿Alguien sabe los parámetros adecuados para alimentar StackTrace()
, de modo que sólo la vuelta el artículo superior de la pila de el hilo donde se lanzó la excepción?
Todavía devolviendo una cadena, pero esta me lleva a GetMapFileInfos() de madMapFile.pas, que puede darme lo que quiero. – Vegar
Creo que puedo haber encontrado lo que necesito para StackTrace, aunque: 'StackTrace (verdadero, falso, falso, @stack, excepción.ExceptoAddr, verdadero, falso);' – Vegar
@ Veg si está funcionando, esta respuesta debe ser aceptada – mjn