Fórum FastMM, como fazer exibir a mensagem e gravar o arquivo? #331005

11/10/2006

0

Olá amigos, gostaria de saber como faço pra gravar um arquivo texto com o erro do FastMM, e que continua dando a mensagem pra mim, isto porque está dando erro e é muita coisa pra mim copiar...


Aproveito, alguém entende as mensagens dele!? É que não consegui entender muito bem, pra achar onde está o memory leak....


[]s


Titanius

Titanius

Responder

Posts

11/10/2006

Massuda

Dê uma olhada no arquivo FastMM4Options.inc. Esse arquivo tem vários $define´s, todos explicados (em inglês). Os que podem ser interessantes para você estão na parte ´Debugging Options´ e na parte ´Memory Leak Reporting´. Lembre de restaurar os defaults quando for gerar a versão que vai para os clientes (debug/leak report prejudica bastante o desempenho do programa).


Responder

Gostei + 0

11/10/2006

Titanius

Olá Massuda,
Consegui... valeu... o erro que está dando é este:

Essa aplicação teve vazamentos de memória. Os vazamentos dos blocos pequenos são (excluindo os vazamentos esperados registrados por ponteiro):

5 - 12 bytes: String x 12, Desconhecida x 1
13 - 20 bytes: String x 16, Desconhecida x 36
21 - 28 bytes: TJvBackgroundClientLink x 1, String x 25, Desconhecida x 6
29 - 36 bytes: String x 13, Desconhecida x 5
37 - 44 bytes: String x 1
45 - 60 bytes: TStringList x 1, String x 2
61 - 76 bytes: String x 2
77 - 92 bytes: String x 2
109 - 124 bytes: Desconhecida x 1

O tamanho dos vazamentos dos blocos médios e grandes são (excluindo os vazamentos esperados registrados por ponteiro): 3004

Nota: O detalhe do vazamento de memória está logado em um arquivo texto na mesma pasta que essa aplicação. Para desabilitar essa checagem de vazamento de memória, desabilite o DEFINE "EnableMemoryLeakReporting".


Como faço pra descobrir onde está o vazamento?


[]s


Responder

Gostei + 0

11/10/2006

Massuda

5 - 12 bytes: String x 12, Desconhecida x 1 .... 109 - 124 bytes: Desconhecida x 1
Esta parte te diz quantos leaks ´pequenos´ foram encontrados bem como qual o tamanho deles.

O tamanho dos vazamentos dos blocos médios e grandes são (excluindo os vazamentos esperados registrados por ponteiro): 3004
Esta parte te diz qual o tamanho dos leaks ´grandes´.

Nota: O detalhe do vazamento de memória está logado em um arquivo texto na mesma pasta que essa aplicação. Para desabilitar essa checagem de vazamento de memória, desabilite o DEFINE ´EnableMemoryLeakReporting´. Como faço pra descobrir onde está o vazamento?
Deve ter sido gerado um arquivo na mesma pasta do seu programa e com mesmo nome do seu programa mas extensão diferentes. Os dados para localizar o leak estão nesse arquivo.


Responder

Gostei + 0

11/10/2006

Titanius

Valeu massuda,

realmente gera o arquivo, mas um monte de código asm nele... pow.. o cara tem q saber asm pra ver os leaks?!

Só um exemplo do código:

Um bloco de memória vazou. O tamanho é: 36

Caminho da pilha quando esse bloco foi alocado (endereços de retorno):
40300E 
40574D 
405778 
942ABB 
77D2CCD1 [PostMessageA]
77D2CDAD [EnumWindows]
95D1D0 
40529B 
405303 

O bloco está sendo usado por um objeto da classe: Desconhecida

The allocation number is: 39473

Dump de memória atual de 256 bytes iniciando no endereço 160EE80:
01 00 00 00 15 00 00 00 44 69 72 65 63 74 44 42 4E 6F 74 69 66 79 57 6E 64 50 72 6F 63 00 E8 11
9F FE 80 80 80 80 80 80 00 00 00 00 10 BF 60 01 00 00 00 00 00 00 00 00 FF FF FF FF 00 00 00 00
4E 9A 00 00 0E 30 40 00 4D 57 40 00 78 57 40 00 BB 2A 94 00 D1 CC D2 77 AD CD D2 77 D0 D1 95 00
9B 52 40 00 03 53 40 00 2A 30 40 00 94 BB 43 00 EF BB 43 00 63 D1 43 00 E3 D1 43 00 27 76 8F 00
4D 75 8F 00 4D 82 42 00 C0 82 42 00 1E 00 00 00 68 D1 60 01 AF EE 60 01 01 00 00 00 15 00 00 00
44 69 72 65 63 74 44 42 4E 6F 74 69 66 79 57 6E 64 50 72 6F 63 00 50 11 9F FE 80 80 80 80 80 80
00 00 00 00 10 BF 60 01 00 00 00 00 00 00 00 00 FF FF FF FF 00 00 00 00 36 9A 00 00 0E 30 40 00
4D 57 40 00 78 57 40 00 BB 2A 94 00 D1 CC D2 77 AD CD D2 77 D0 D1 95 00 9B 52 40 00 03 53 40 00
.  .  .  .  .  .  .  .  D  i  r  e  c  t  D  B  N  o  t  i  f  y  W  n  d  P  r  o  c  .  è  .
Ÿ  þ  €  €  €  €  €  €  .  .  .  .  .  ¿  ´  .  .  .  .  .  .  .  .  .  ÿ  ÿ  ÿ  ÿ  .  .  .  .
N  š  .  .  .  0  @  .  M  W  @  .  x  W  @  .  »  *  ”  .  Ñ  Ì  Ò  w  ­  Í  Ò  w  Ð  Ñ  •  .
›  R  @  .  .  S  @  .  *  0  @  .  ”  »  C  .  ï  »  C  .  c  Ñ  C  .  ã  Ñ  C  .  ´  v    .
M  u    .  M  ‚  B  .  À  ‚  B  .  .  .  .  .  h  Ñ  ´  .  ¯  î  ´  .  .  .  .  .  .  .  .  .
D  i  r  e  c  t  D  B  N  o  t  i  f  y  W  n  d  P  r  o  c  .  P  .  Ÿ  þ  €  €  €  €  €  €
.  .  .  .  .  ¿  ´  .  .  .  .  .  .  .  .  .  ÿ  ÿ  ÿ  ÿ  .  .  .  .  6  š  .  .  .  0  @  .
M  W  @  .  x  W  @  .  »  *  ”  .  Ñ  Ì  Ò  w  ­  Í  Ò  w  Ð  Ñ  •  .  ›  R  @  .  .  S  @  .


TEm um monte disso no arquivo.. :oops:

Descobrir onde é, que é complicado.. rsrs..


[]s


Responder

Gostei + 0

11/10/2006

Massuda

Ainda bem que você postou um pedaço do arquivo, poqru eu não tinha nenhum que pudesse usar como exemplo.

Caminho da pilha quando esse bloco foi alocado...
Essa parte mostra onde o bloco ´leakado´ foi alocado. Para ter mais dados que os endereços de retorno, em Project|Options, na aba Compiler, habilite as opções relacionadas com Debugging e na aba Linker mude a opção Map File para Detailed.

Usando só endereços de retorno, você pode tentar localizar o problema usando Search|Find error.

O bloco está sendo usado por um objeto da classe: Desconhecida
Quando possivel, o FastMM tenta determinar qual TAlgumaCoisa que foi ´leakado´.

Dump de memória atual de 256 bytes iniciando no endereço 160EE80:
Isso mostra um dump de parte da área de memória que foi ´leakada´. Por exemplo, se fosse uma string que foi deixada para trás, provavelmente você veria o texto da string.


Responder

Gostei + 0

11/10/2006

Titanius

Valeu Massuda... agora deu pra ter uma idéia.. :D

[]s


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar