Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Lazarus, FreePascal, Kylix, etc. (https://www.clubdelphi.com/foros/forumdisplay.php?f=14)
-   -   Numero de linea del programa en DELPHI (https://www.clubdelphi.com/foros/showthread.php?t=56622)

jSr 22-05-2008 08:43:19

Numero de linea del programa en DELPHI
 
Muy buenas:

Tengo algunos problemas muy raros con mis aplicaciones y quiero probar lo siguiente.

Mi aplicacion esta en Delphi 5 y se conecta por ODBC a MySql.

Muchas veces me da errores raros y quiero hacer un Try except y que en el except me diga en que linea del programa ha fallado.

Si alguien supiera como hacerlo me ahorraria un monton de tiempo de investigacion.

Muchas gracias

Neftali [Germán.Estévez] 22-05-2008 08:59:26

Recuerdo haber leído algun artículo que explicaba de una forma básica cómo hacerlo. Incluso creo recordar que alguna vez en el foro se ha hablado de ello.


Otra opción es mirar algun paquete comercial que te de el trabajo hecho tipo:
* MadExcep
* Exception Magic
* EurekaLog

jSr 22-05-2008 09:07:23

Hola:

vale, es que acabo de mirar cosas por ahi y hablan de lo que ya tenemos hecho, que es encerrar el codigo en un Try Except.

Seria mas preciso saber en que linea dio el error, supongo (no lo he investigado aun) que si se crea una TException Class o algo parecido, tendria que tener alguna propiedad que nos indiquen cosas.

Saludos

Neftali [Germán.Estévez] 22-05-2008 09:48:24

Cita:

Empezado por jSr (Mensaje 288490)
vale, es que acabo de mirar cosas por ahi y hablan de lo que ya tenemos hecho, que es encerrar el codigo en un Try Except.

Seria mas preciso saber en que linea dio el error

El problema es la segunda parte de lo que comentas.
Piensa que tu ejecutable, el programa, final no se organiza con líneas de código como el que programas en Delphi. Una vez compilado y linkado el ejecutable es otro programa diferente (por decirlo así) en un lenguaje diferente (código máquina).
Cuando una de esas líneas en código máquina falla, no tienes la correspondencia con el programa original, por lo tanto no es posible saber la línea que falló (a no ser qué...).

A no ser que en tu programa guardes información de Debug y en ejecución intentes utilizar esa información de Debug para conocer cual es la línea original del programa que corresponde a la que ha fallado.

Eso es algo que no es sencillo y que hacen estos paquetes, de ahí que cuando "salte" una excepción muestren información extendida como la que se ve en las imágenes que he adjuntado en el anterior post (entre esas informaciones está la pila de llamadas, el número de línea,...)

jSr 22-05-2008 10:28:16

Claro
 
Hola:

Es como lo dices, lo que se me ocurrio es numerar en una variable cada 10 lineas sumarle entonces sabes en todo momento en que trozo de codigo te ha fallado y al dar la excepcion despliegas el numero de linea ultimo.

Con esto sabras prefectamente que esta despues de esa linea y antes de la siguiente.

creo que hare eso, por ahora, total, tengo muy pocos procesos muy criticos y esa solucion me sirve.

Gracias

Neftali [Germán.Estévez] 22-05-2008 11:07:42

Cita:

Empezado por jSr (Mensaje 288499)
Es como lo dices, lo que se me ocurrio es numerar en una variable cada 10 lineas sumarle entonces sabes en todo momento en que trozo de codigo te ha fallado y al dar la excepcion despliegas el numero de linea ultimo.

Si tienes una cuantas líneas, con eso y el error/clase que te devuelve la excepción podría valer, pero si tienes muchas líneas me parece una solución costosa de mantener.

A medida que vayas modificando tu código no se cómo va a quedar.

jSr 22-05-2008 11:18:27

Naturlich
 
Claro, pero de cualquier manera, no tengo otra solucion, ademas esa solucion no sera eterna, el codigo de esa unidad casi no se toca.

Por otro lado si que es verdad que algun otro programador o yo mismo no recuerde lo que he hecho antes y lo enredemos mas de lo que esta.

bueno, muchas gracias por entreneterte con mis tonterias.

saludos

JoSeX

Neftali [Germán.Estévez] 22-05-2008 11:51:03

Échale un vistazo a esta página. Tal vez te pueda servir, Explica un poco pòr encima el funcionamiento de los MAP files. A partir de ahí puedes continuar buscando.
Esta también es interesante.

xEsk 22-05-2008 15:21:22

Yo uso el Eurekalog (mencionado en el segundo mensaje por Neftali) y me va muy bien. Al saltar una excepción te ofrece mucha mas información y el Call stack es muy completo y claro (numero de linea, instrucción llamada, ves los hilos... etc).

Estoy muy contento con el EurekaLog.

Saludos.


La franja horaria es GMT +2. Ahora son las 22:57:38.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi