Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   ¿Error de memoria? (https://www.clubdelphi.com/foros/showthread.php?t=92654)

strelok 20-12-2017 13:07:03

Respondo a tus preguntas:

- Nos sucede a todos
- Si tiene .dpr y .dproj ¿influye esto?

Casimiro Notevi 20-12-2017 13:09:37

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.

duilioisola 21-12-2017 09:32:41

¿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).

Código Delphi [-]
program MiAplicacion;

uses
  {$IFDEF Debug}
  // Si agrego Memcheck, debo inicializarlo despues del begin en este .DPR
  // Si quiero un informe detallado de posibles fugas de memoria (Memory Leak)
  // es convieniente marcar la opción:
  // Project --> Options --> Linker --> Include TD32 Debug Info
  // En Project --> Options --> Compiler --> Debugging --> Marcar todo
  // Esto creará EXEs mucho más grandes
  MemCheck in '..\Utilidades\MemCheck.pas',
  // ExceptLog requiere MemCheck
  ExceptLog in '..\Utilidades\ExceptLog.pas',
  {$ENDIF}
  ...
begin
  {$IFDEF Debug}
  MemChk;
  {$ENDIF}
   ...
end.

Ñuño Martínez 21-12-2017 13:18:22

Cita:

Empezado por strelok (Mensaje 523638)
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

Esto no es verdad, y da igual cuántas líneas de código sean. Yo encontré un problema con Allegro, que tiene también cantidades ingentes de código repartido por varias DLL, y fue bastante rápido.

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.

Casimiro Notevi 21-12-2017 13:33:01

Cita:

Empezado por Ñuño Martínez (Mensaje 523677)
..

+1 ^\||/

Neftali [Germán.Estévez] 21-12-2017 15:21:54

Cita:

Empezado por duilioisola (Mensaje 523668)
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.

Supongo que debe ser algo parecido a si se escribe al principio del DPR lo siguiente:

Código Delphi [-]
    ReportMemoryLeaksOnShutdown := True;


Más info aquí:
http://docwiki.embarcadero.com/Libra...eaksOnShutdown

Al acabar el programa saca un pequeño reporte de MemoryLeaks.

strelok 21-12-2017 16:20:36

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 523682)
Supongo que debe ser algo parecido a si se escribe al principio del DPR lo siguiente:

Código Delphi [-]
    ReportMemoryLeaksOnShutdown := True;


Más info aquí:
http://docwiki.embarcadero.com/Libra...eaksOnShutdown

Al acabar el programa saca un pequeño reporte de MemoryLeaks.

Pero el error de memoria me sale cuando estoy compilando, según leí en internet, específicamente en el "enlazado", eso que tu me cuentas me da a entender que es para problemas de memoria en tiempo de ejecución :eek:

Casimiro Notevi 21-12-2017 16:31:00

Cita:

Empezado por strelok (Mensaje 523692)
Pero el error de memoria me sale cuando estoy compilando, según leí en internet, específicamente en el "enlazado", eso que tu me cuentas me da a entender que es para problemas de memoria en tiempo de ejecución :eek:

¿Has probado algo de lo que te he comentado antes?

ecfisa 22-12-2017 13:49:46

Hola.
Cita:

Empezado por strelok (Mensaje 523640)
[dcc32 Error] E2161 Error: RLINK32: Out of memory!

Revisa si algo de lo tratado en estos enlaces, se pudiera corresponder a tu situación:
Saludos :)

strelok 04-01-2018 12:53:02

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 01:39:48.

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