¿Error de memoria?
Desde que empecé con Delphi es impresionante la cantidad de veces que me salió error de memoria (uso la versión XE7), normalmente debo cerrar y abrir nuevamente para dar solución ¿existe alguna actualización/parche/configuración para dar solución total/parcial a este problema?:cool:
|
Cita:
|
Hola.
Por fafor, publica exáctamente el mensaje de error (copia/pega) para orientarnos mas acerca del problema. Saludos :) |
Iba a hacer un chiste, pero mejor no :)
|
Cita:
|
Cita:
Cita:
|
Yo suelo usar XE7 y jamás he tenido un problema de esos
¿Qué versión estás usando? Saludos |
Cita:
¿Algo especial en tu proyecto? |
Pues parece ser común en proyectos grandes: miren https://forums.embarcadero.com/messa...ssageID=704148
|
No, no es común, es un caso aislado. Casos aislados.
No te lo tomes como algo personal lo que voy a decir, pero yo revisaría bien a qué se deben esos errores y descubrirás que no son problemas de delphi. He trabajado en proyectos bastante más grandes que el que comenta esa persona y te puedo asegurar que no existen esos problemas. Es más, también puedo asegurarte que esos problemas están provocados normalmente por dos motivos:
En el último proyecto delphi que trabajé me encontré con un sistema similar al que describe ese enlace que has puesto, tenían problemas que ni te puedes imaginar. Después de investigar un poco se podía deducir que el problema era provocado por una mezcla de los 2 puntos que he indicado antes. ¿Sabes cuál fue la solución? pues creo que han comprado un visual studio c# y unos componentes devexpress para cambiarle la apariencia externa. Y lo único que repetían es: "la culpa es de delphi, la culpa es de delphi, ..." Y todo por no reconocer que el problema estaba provocado por ellos mismos. |
Cita:
Ambos puntos parecen ser lo mismo, a diferencia que uno fue programado por externos y el otro por nosotros, sin embargo, ¿qué es exactamente lo que provoca eso? ¿objetos no destruidos? ¿variables no inicializadas? ¿que cosa especifica?. Por otro lado, el equipo de programación me comentó que en Delphi 2007 nunca sucedió el error, pasaba algo similar, cuando el proceso superaba 1GB, pero no es el mismo error, aquí no sucede cuando intentamos compilar, curiosamente con reiniciar delphi xe7 se soluciona |
Para encontrar el motivo del problema debes:
1. Centrarte en un caso en particular y poner "breakpoints" para seguir el código paso a paso, armarte de muchísima paciencia, no desesperar, poco a poco, hasta encontrarlo. 2. Una vez resuelto ese problema, goto 1 :D No hay otra forma de hacerlo, es necesario decidirse y mentalizarse: "Ahora toca resolver estos problemas, no otras cosas, solamente resolver estos problemas." |
No me sirve lo que me dices jajaja, son mas de 2 millones de líneas, es inviable. Si me dijieras la razón de porque sucede o tiene más probabilidad de suceder, yo podría centrarme en una parte especifica del código:D:D:D:D
|
Cita:
Cita:
|
Cita:
|
Cita:
|
Cita:
|
Cita:
Como decías esto: Cita:
|
Encontré algo, pero todos dicen soluciones diferentes, no entiendo nada
¿Me ayudarían? https://www.clubdelphi.com/foros/showthread.php?t=49799 http://www.clubdelphi.com/foros/showthread.php?t=45406 |
Es que tendríamos que ver el proyecto. De otra forma es dar palos de ciego, a ver si acertamos.
¿Ocurre en un solo equipo o en todos? ¿Tienes algo 'especial' en los ficheros de recursos?, elimínalos (renómbralos, por si acaso tienes que recuperarlo). Si tienes un .dpr y un .dproj elimina el .dproj (o cámbiale la extensión) y abre el .dpr Rebuild todo. |
Respondo a tus preguntas:
- Nos sucede a todos - Si tiene .dpr y .dproj ¿influye esto? |
Algunas veces, si el .dproj está mal, es necesrio abrir el .dpr, pero si abre el .dpr y existe el .dproj, se abrirá este último, aunque tú hayas abierto el .dpr
Así que renombra el .dproj por .dproj.original (por ejemplo) y abre el .dpr Ya te digo, esto es dar palos de ciego. Pero lo más probable es que sea el fichero de recursos. |
¿Ocurre en la primera compilación o después de unas cuantas?
Puede ser que la aplicación o algún componente esté generando Memory Leaks y esté poco a poco consumiendo la memoria del ordenador. Yo utilizo en mi proyecto la unidad MemCheck.pas que me deja un log al salir de la aplicación si hubo este tipo de errores. No se si funcionará en XE7. Yo lo utilizo con Delphi 6. Adicionalmente utilizo ExceptLog.pas para obtener un log de las excepciones que fueron saltando en la aplicación (capturadas o no).
|
Cita:
Primero, tienes que compilar quitando las optimizaciones, añadiendo la información de depuración y (si es posible) enlazando con las versiones de depuración de las bibliotecas que uses. Después ejecuta y cuando falle te dirá exactamente en qué unidad, archivo y línea de código ha fallado, así como el estado de la pila. Ahí descubrirás qué objeto es el que falla y de dónde viene, por lo que podrás establecer los puntos de ruptura (breack points) en los puntos clave (llamadas, constructores, destructores...), volver a ejecutar y encontrar el origen. Como digo, da igual los miles de millones de líneas de código y de archivos que tengas: es fácil y rápido. Sólo hay que saber manejar las herramientas. |
Cita:
|
Cita:
Más info aquí: http://docwiki.embarcadero.com/Libra...eaksOnShutdown Al acabar el programa saca un pequeño reporte de MemoryLeaks. |
Cita:
|
Cita:
|
Hola.
Cita:
Saludos :) |
Traigo información:
Encontré una forma de "solucionarlo" fácil cada vez que suceda, cambiar de pestaña "Code" a "Design" o vicersa Al intentar compilar luego de hacer ese cambio, funciona perfecto. |
La franja horaria es GMT +2. Ahora son las 08:21:10. |
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