PDA

Ver la Versión Completa : Debug mode y Access violation at address


fonx
01-08-2007, 17:03:24
Hola resulta que tengo un error del tipo "Access violation at address XXXX" yen muchas páginas hallé un modo de encontrar la línea de código que produce ese acceso a memoria erroneo mediante el "search\find error" con la dirección de memoria que aparece en el mensaje de error. Hecho esto me sale la ventana de la CPU y el código q aparece es ensamblador, que no me ayuda mucho.

Buscando más sobre esto encuentro que quizás sea porque no estoy compilando en "modo debug" aunque no se si por defecto este es el modo de compilación de delphi. Por H o por B no acabo de encontrar como ver si estoy en modo debug y/o como cambiar a modo debug.

¿Como puedo poner el modo debug?
¿Como puedo llegar a la línea de código que accede a memoria no permitida?

Uso Delphi5.

Gracias por adelantado.

fonx
01-08-2007, 18:04:15
Me queda media hora de jornada laboral así que a ver si alguien me puede decir por lo menos como saber si estoy en debug mode y/o como activarlo y a ver si puedo continuar por ahi, que sino o tengo que quedarme un rato más o tengo que dejarlo para mañana...

Por más que paso páginas y páginas que dicen que hay que compilar en debug mode no encuentro ni una que diga como mirar esa funcionalidad, ni en la ayuda de delphi.

Enan0
02-08-2007, 03:02:59
Mira por mi experiencia Tendrias que comentarnos Exactamente el MEnsaje!!
dependiendo del mensaje puede ser, Un objeto no creado.
o algo por el estilo!

saludos
y sino debugear por donde da el error y fijarte en que lineas se da

fonx
02-08-2007, 08:56:37
Te comento Enan0:

Por un lado no puedo ser muy descriptivo con el problema por varios motivos.


Es un programa que no escribi yo y que funciona bien hasta q despues de un tiempo, y este tiempo no es siempre el mismo.
Es un programa que controla que otros programas se ejecuten bien. A pesar de ser un programa sencillo en relacion con los programas que controla, pues serán algo más de mil lineas (aunq medir la complejidad del codigo por número de lineas no es objetivo), con temporizadores, conexiones a bases de datos, y todo tipo de pijadas.
No puedo reproducir el error en mi ordenador porque no se dan las condiciones de conexiones TCP y demás que hay en el/los programa/s. Puedo compilarlo en el entorno de ejecución en el que da el problema pero...es el servidor de verdad donde esta corriendo y tengo que ir con cuidado para no interferir con nada.Bueno en esta web y en otras cuantas:

http://delphi.about.com/od/objectpascalide/l/aa052201b.htm

Explica como hacer lo que pregunto. Como se puede buscar la posicion de memoria asociada con el error y que delphi se recompilará para mostrarte la línea de codigo asociada a esa posición de memoria. La teoría bien pero en la practica no sucede nada, me sale la ventana de la CPU apuntando a una dirección de memoria y no hace nada más, ni recompila ni nada. También se comentaba que había que tener el modo debug de compilación activado, por eso mi interes en saber como se pone el modo debug.

Bueno si alguien me puede ayudar se lo agradezco.

Y bueno, si quieres saber exactamente el mensaje...

"Access violation at address 00442A54 in module xxxx. Read of address 00000004"

Es el tipico de cuando accedes a algo que no existe ya o que no fue inicializado.

fonx
02-08-2007, 17:58:43
Bueno al final, como la prisa apremia, en lugar de resolver el problema lo rodee, the show must go on.