расширение информативности Heaptrc

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

расширение информативности Heaptrc

Сообщение RomanS » 17.02.2011 15:49:33

Здравствуйте!
Решил немного расширить информацию об утечках, которую выдает Heaptrc: дополнил вывод дампом памяти и проверкой типа/класса, где произошла утечка памяти:
Код: Выделить всё
C:\lazarus\components\VirtualTreeView-lazarus-nostd\demos\advanced\lib\i386-win32\Advanced.exe
Heap dump by heaptrc unit
6194 memory blocks allocated : 4737377/4751904
6176 memory blocks freed     : 4735816/4750296
18 unfreed memory blocks : 1561
True heap size : 1605632 (160 used in System startup)
True free heap : 1602496
Should be : 1602712
Call trace for block $01CEB598 size 52
  $0046880E  TCANVAS__CREATE,  line 1380 of ./include/canvas.inc
  $0047AFA0  TCONTROLCANVAS__CREATE,  line 53 of ./include/controlcanvas.inc
  $00494EE5  TGRAPHICCONTROL__CREATE,  line 31 of ./include/graphiccontrol.inc
  $0052AE90  TCUSTOMLABEL__CREATE,  line 208 of ./include/customlabel.inc
  $0042552C  TMAINFORM__BITBTN1CLICK,  line 112 of Main.pas
  $0048F767  TCONTROL__CLICK,  line 2288 of ./include/control.inc
  $0052C34F  TBUTTONCONTROL__CLICK,  line 62 of ./include/buttoncontrol.inc
  $0052C91F  TCUSTOMBUTTON__CLICK,  line 174 of ./include/buttons.inc
Dump block $01CEB598 size 52
The block is currently used for an object of class: TRegion
  $01CEB598: 48 64 5C 00 C0 85 46 00 | 90 06 0D 00 30 86 46 00  Hd\.А…F.ђ...0†F.
  $01CEB5A7: 90 06 0D 00 00 00 00 00 | 00 00 00 00 00 00 00 00  ђ...............
  $01CEB5B7: 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00  ................
  $01CEB5C7: 00 00 00 00                                        ....

Call trace for block $01CC0698 size 196
  $00466DDE  TCANVAS__DOCREATEDEFAULTBRUSH,  line 363 of ./include/canvas.inc
  $004AF3E8 line 300 of lazconfigstorage.pas
  $004AF069 line 300 of lazconfigstorage.pas
  $004686E5  TCANVAS__CREATE,  line 1367 of ./include/canvas.inc
  $0047AFA0  TCONTROLCANVAS__CREATE,  line 53 of ./include/controlcanvas.inc
  $00494EE5  TGRAPHICCONTROL__CREATE,  line 31 of ./include/graphiccontrol.inc
  $0052AE90  TCUSTOMLABEL__CREATE,  line 208 of ./include/customlabel.inc
  $0042552C  TMAINFORM__BITBTN1CLICK,  line 112 of Main.pas
Dump block $01CC0698 size 196
The block is currently used for an object of class: TBrush
  $01CC0698: 90 63 5C 00 01 00 00 00 | 00 00 00 00 00 00 00 00  ђc\.............
  $01CC06A7: 90 06 0D 00 00 00 00 00 | A0 84 46 00 90 06 0D 00  ђ....... „F.ђ...
  $01CC06B7: 80 85 46 00 90 06 0D 00 | 00 00 00 00 00 00 00 00  Ђ…F.ђ...........
  $01CC06C7: 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00  ................
  $01CC06D7: 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00  ................
  $01CC06E7: 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00  ................
  $01CC06F7: 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00  ................
  $01CC0707: 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00  ................
  $01CC0717: 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00  ................
  $01CC0727: 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00  ................
  $01CC0737: 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00  ................
  $01CC0747: 00 00 00 00 FF FF FF 00 | 00 00 00 00 00 00 00 00  ....яяя.........
  $01CC0757: FF FF FF FF                                        яяяя

Call trace for block $000C8078 size 84
  $00466DAE  TCANVAS__DOCREATEDEFAULTPEN,  line 358 of ./include/canvas.inc
  $004AF365 line 300 of lazconfigstorage.pas
  $004AF05B line 300 of lazconfigstorage.pas
  $004686E5  TCANVAS__CREATE,  line 1367 of ./include/canvas.inc
  $0047AFA0  TCONTROLCANVAS__CREATE,  line 53 of ./include/controlcanvas.inc
  $00494EE5  TGRAPHICCONTROL__CREATE,  line 31 of ./include/graphiccontrol.inc
  $0052AE90  TCUSTOMLABEL__CREATE,  line 208 of ./include/customlabel.inc
  $0042552C  TMAINFORM__BITBTN1CLICK,  line 112 of Main.pas
Dump block $000C8078 size 84
The block is currently used for an object of class: TPen
  $000C8078: 38 62 5C 00 01 00 00 00 | 00 00 00 00 FF FF 00 00  8b\.........яя..
  $000C8087: 90 06 0D 00 00 00 00 00 | 00 86 46 00 90 06 0D 00  ђ........†F.ђ...
  $000C8097: 00 85 46 00 90 06 0D 00 | 00 00 00 00 01 00 00 00  .…F.ђ...........
  $000C80A7: 04 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00  ................
  $000C80B7: 01 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00  ................
  $000C80C7: 00 00 00 00                                        ....

Call trace for block $01D0AB68 size 12
  $0040C793
  $0057A14F  TBASEVIRTUALTREE__DOINITNODE,  line 20310 of VirtualTrees.pas
  $005804C7  TBASEVIRTUALTREE__INITNODE,  line 22670 of VirtualTrees.pas
  $00588B9F  TBASEVIRTUALTREE__GETNEXTVISIBLE,  line 28024 of VirtualTrees.pas
  $0058BA26  TBASEVIRTUALTREE__PAINTTREE,  line 30131 of VirtualTrees.pas
  $005821AC  TBASEVIRTUALTREE__PAINT,  line 23712 of VirtualTrees.pas
  $004955C2  TCUSTOMCONTROL__PAINTWINDOW,  line 132 of ./include/customcontrol.inc
  $00484708  TWINCONTROL__PAINTHANDLER,  line 4686 of ./include/wincontrol.inc
Dump block $01D0AB68 size 12
The block is currently used for an object of class: String
  $01D0AB68: 01 00 00 00 03 00 00 00 | 44 6F 65 00              ........Doe.

Call trace for block $01D0AB08 size 13
  $0040C793
  $0057A14F  TBASEVIRTUALTREE__DOINITNODE,  line 20310 of VirtualTrees.pas
  $005804C7  TBASEVIRTUALTREE__INITNODE,  line 22670 of VirtualTrees.pas
  $00588B9F  TBASEVIRTUALTREE__GETNEXTVISIBLE,  line 28024 of VirtualTrees.pas
  $0058BA26  TBASEVIRTUALTREE__PAINTTREE,  line 30131 of VirtualTrees.pas
  $005821AC  TBASEVIRTUALTREE__PAINT,  line 23712 of VirtualTrees.pas
  $004955C2  TCUSTOMCONTROL__PAINTWINDOW,  line 132 of ./include/customcontrol.inc
  $00484708  TWINCONTROL__PAINTHANDLER,  line 4686 of ./include/wincontrol.inc
Dump block $01D0AB08 size 13
The block is currently used for an object of class: String
  $01D0AB08: 01 00 00 00 04 00 00 00 | 4A 6F 68 6E 00           ........John.

Call trace for block $01D0AAA8 size 12
  $0040C793
  $0057A14F  TBASEVIRTUALTREE__DOINITNODE,  line 20310 of VirtualTrees.pas
  $005804C7  TBASEVIRTUALTREE__INITNODE,  line 22670 of VirtualTrees.pas
  $00588B9F  TBASEVIRTUALTREE__GETNEXTVISIBLE,  line 28024 of VirtualTrees.pas
  $0058BA26  TBASEVIRTUALTREE__PAINTTREE,  line 30131 of VirtualTrees.pas
  $005821AC  TBASEVIRTUALTREE__PAINT,  line 23712 of VirtualTrees.pas
  $004955C2  TCUSTOMCONTROL__PAINTWINDOW,  line 132 of ./include/customcontrol.inc
  $00484708  TWINCONTROL__PAINTHANDLER,  line 4686 of ./include/wincontrol.inc
Dump block $01D0AAA8 size 12
The block is currently used for an object of class: String
  $01D0AAA8: 01 00 00 00 03 00 00 00 | 44 6F 65 00              ........Doe.

если есть пожелания/вопросы ...
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось RomanS 03.03.2011 13:24:10, всего редактировалось 1 раз.
RomanS
новенький
 
Сообщения: 33
Зарегистрирован: 10.12.2007 10:08:24

Re: расширение информативности Heaptrc

Сообщение hinst » 17.02.2011 23:01:43

Спасибо, может быть, пригодится, но... Глядя на этот самый вывод, так и не понял, где, собственно, утечка :shock:
можно пожалуйста вкратце пояснить?
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Re: расширение информативности Heaptrc

Сообщение RomanS » 18.02.2011 08:30:16

я в качестве примера привел не весь лог утечек :oops:

Код: Выделить всё
Call trace for block $01D0AAA8 size 12
  $0040C793
  $0057A14F  TBASEVIRTUALTREE__DOINITNODE,  line 20310 of VirtualTrees.pas
  $005804C7  TBASEVIRTUALTREE__INITNODE,  line 22670 of VirtualTrees.pas
  $00588B9F  TBASEVIRTUALTREE__GETNEXTVISIBLE,  line 28024 of VirtualTrees.pas
  $0058BA26  TBASEVIRTUALTREE__PAINTTREE,  line 30131 of VirtualTrees.pas
  $005821AC  TBASEVIRTUALTREE__PAINT,  line 23712 of VirtualTrees.pas
  $004955C2  TCUSTOMCONTROL__PAINTWINDOW,  line 132 of ./include/customcontrol.inc
  $00484708  TWINCONTROL__PAINTHANDLER,  line 4686 of ./include/wincontrol.inc
Dump block $01D0AAA8 size 12
The block is currently used for an object of class: String
  $01D0AAA8: 01 00 00 00 03 00 00 00 | 44 6F 65 00              ........Doe.

здесь в процедуре DOINITNODE при создании рекорда происходит присвоение значения переменной типа String, а освобождения не происходит.


Код: Выделить всё
C:\lazarus\components\VirtualTreeView-lazarus-nostd\demos\advanced\lib\i386-win32\Advanced.exe
Heap dump by heaptrc unit
7850 memory blocks allocated : 4884973/4904216
7832 memory blocks freed     : 4883412/4902608
18 unfreed memory blocks : 1561
True heap size : 1638400
True free heap : 1635264
Should be : 1635640
Call trace for block $01CE8178 size 52
  $0046880E  TCANVAS__CREATE,  line 1380 of ./include/canvas.inc
  $0047AFA0  TCONTROLCANVAS__CREATE,  line 53 of ./include/controlcanvas.inc
  $00494EE5  TGRAPHICCONTROL__CREATE,  line 31 of ./include/graphiccontrol.inc
  $0052AE90  TCUSTOMLABEL__CREATE,  line 208 of ./include/customlabel.inc
  $0042552C  TMAINFORM__BITBTN1CLICK,  line 112 of Main.pas
  $0048F767  TCONTROL__CLICK,  line 2288 of ./include/control.inc
  $0052C34F  TBUTTONCONTROL__CLICK,  line 62 of ./include/buttoncontrol.inc
  $0052C91F  TCUSTOMBUTTON__CLICK,  line 174 of ./include/buttons.inc
Dump block $01CE8178 size 52
The block is currently used for an object of class: TRegion
  $01CE8178: 48 64 5C 00 C0 85 46 00 | 50 13 0D 00 30 86 46 00  Hd\.А…F.P...0†F.
  $01CE8187: 50 13 0D 00 00 00 00 00 | 00 00 00 00 00 00 00 00  P...............
  $01CE8197: 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00  ................
  $01CE81A7: 00 00 00 00                                        ....

Call trace for block $01CBC4B0 size 196
  $00466DDE  TCANVAS__DOCREATEDEFAULTBRUSH,  line 363 of ./include/canvas.inc
  $004AF3E8 line 300 of lazconfigstorage.pas
  $004AF069 line 300 of lazconfigstorage.pas
  $004686E5  TCANVAS__CREATE,  line 1367 of ./include/canvas.inc
  $0047AFA0  TCONTROLCANVAS__CREATE,  line 53 of ./include/controlcanvas.inc
  $00494EE5  TGRAPHICCONTROL__CREATE,  line 31 of ./include/graphiccontrol.inc
  $0052AE90  TCUSTOMLABEL__CREATE,  line 208 of ./include/customlabel.inc
  $0042552C  TMAINFORM__BITBTN1CLICK,  line 112 of Main.pas
Dump block $01CBC4B0 size 196
The block is currently used for an object of class: TBrush
  $01CBC4B0: 90 63 5C 00 01 00 00 00 | 00 00 00 00 00 00 00 00  ђc\.............
  $01CBC4BF: 50 13 0D 00 00 00 00 00 | A0 84 46 00 50 13 0D 00  P....... „F.P...
  $01CBC4CF: 80 85 46 00 50 13 0D 00 | 00 00 00 00 00 00 00 00  Ђ…F.P...........
  $01CBC4DF: 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00  ................
  $01CBC4EF: 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00  ................
  $01CBC4FF: 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00  ................
  $01CBC50F: 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00  ................
  $01CBC51F: 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00  ................
  $01CBC52F: 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00  ................
  $01CBC53F: 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00  ................
  $01CBC54F: 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00  ................
  $01CBC55F: 00 00 00 00 FF FF FF 00 | 00 00 00 00 00 00 00 00  ....яяя.........
  $01CBC56F: FF FF FF FF                                        яяяя

Call trace for block $000C8D48 size 84
  $00466DAE  TCANVAS__DOCREATEDEFAULTPEN,  line 358 of ./include/canvas.inc
  $004AF365 line 300 of lazconfigstorage.pas
  $004AF05B line 300 of lazconfigstorage.pas
  $004686E5  TCANVAS__CREATE,  line 1367 of ./include/canvas.inc
  $0047AFA0  TCONTROLCANVAS__CREATE,  line 53 of ./include/controlcanvas.inc
  $00494EE5  TGRAPHICCONTROL__CREATE,  line 31 of ./include/graphiccontrol.inc
  $0052AE90  TCUSTOMLABEL__CREATE,  line 208 of ./include/customlabel.inc
  $0042552C  TMAINFORM__BITBTN1CLICK,  line 112 of Main.pas
Dump block $000C8D48 size 84
The block is currently used for an object of class: TPen
  $000C8D48: 38 62 5C 00 01 00 00 00 | 00 00 00 00 FF FF 00 00  8b\.........яя..
  $000C8D57: 50 13 0D 00 00 00 00 00 | 00 86 46 00 50 13 0D 00  P........†F.P...
  $000C8D67: 00 85 46 00 50 13 0D 00 | 00 00 00 00 01 00 00 00  .…F.P...........
  $000C8D77: 04 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00  ................
  $000C8D87: 01 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00  ................
  $000C8D97: 00 00 00 00                                        ....

Call trace for block $01CC5E68 size 16
  $0040DF98
  $004AF04D line 300 of lazconfigstorage.pas
  $004686E5  TCANVAS__CREATE,  line 1367 of ./include/canvas.inc
  $0047AFA0  TCONTROLCANVAS__CREATE,  line 53 of ./include/controlcanvas.inc
  $00494EE5  TGRAPHICCONTROL__CREATE,  line 31 of ./include/graphiccontrol.inc
  $0052AE90  TCUSTOMLABEL__CREATE,  line 208 of ./include/customlabel.inc
  $0042552C  TMAINFORM__BITBTN1CLICK,  line 112 of Main.pas
  $0048F767  TCONTROL__CLICK,  line 2288 of ./include/control.inc
Dump block $01CC5E68 size 16
The block is currently used for an object of class: Unknown
  $01CC5E68: 88 6A 08 00 48 8D 0C 00 | B0 C4 CB 01 FF FF FF FF  €j..HЌ..°ДЛ.яяяя

Call trace for block $01CC6B88 size 16
  $00466D7E  TCANVAS__DOCREATEDEFAULTFONT,  line 353 of ./include/canvas.inc
  $004AF2E5 line 300 of lazconfigstorage.pas
  $004AF04D line 300 of lazconfigstorage.pas
  $004686E5  TCANVAS__CREATE,  line 1367 of ./include/canvas.inc
  $0047AFA0  TCONTROLCANVAS__CREATE,  line 53 of ./include/controlcanvas.inc
  $00494EE5  TGRAPHICCONTROL__CREATE,  line 31 of ./include/graphiccontrol.inc
  $0052AE90  TCUSTOMLABEL__CREATE,  line 208 of ./include/customlabel.inc
  $0042552C  TMAINFORM__BITBTN1CLICK,  line 112 of Main.pas
Dump block $01CC6B88 size 16
The block is currently used for an object of class: String
  $01CC6B88: 01 00 00 00 07 00 00 00 | 64 65 66 61 75 6C 74 00  ........default.

Call trace for block $00086A88 size 96
  $00466D7E  TCANVAS__DOCREATEDEFAULTFONT,  line 353 of ./include/canvas.inc
  $004AF2E5 line 300 of lazconfigstorage.pas
  $004AF04D line 300 of lazconfigstorage.pas
  $004686E5  TCANVAS__CREATE,  line 1367 of ./include/canvas.inc
  $0047AFA0  TCONTROLCANVAS__CREATE,  line 53 of ./include/controlcanvas.inc
  $00494EE5  TGRAPHICCONTROL__CREATE,  line 31 of ./include/graphiccontrol.inc
  $0052AE90  TCUSTOMLABEL__CREATE,  line 208 of ./include/customlabel.inc
  $0042552C  TMAINFORM__BITBTN1CLICK,  line 112 of Main.pas
Dump block $00086A88 size 96
The block is currently used for an object of class: TFont
  $00086A88: 70 60 5C 00 01 00 00 00 | 00 00 00 00 FF FF 00 00  p`\.........яя..
  $00086A97: 50 13 0D 00 00 00 00 00 | D0 84 46 00 50 13 0D 00  P.......Р„F.P...
  $00086AA7: 40 85 46 00 50 13 0D 00 | 90 6B CC 01 00 00 00 00  @…F.P...ђkМ.....
  $00086AB7: 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00  ................
  $00086AC7: 00 00 00 00 01 00 00 00 | 60 00 00 00 00 00 00 00  ........`.......
  $00086AD7: 00 00 00 00 00 00 00 20 | 00 00 00 00 00 00 00 00  ....... ........

Call trace for block $01CDFE70 size 16
  $00429905
  $004AF03F line 300 of lazconfigstorage.pas
  $004686E5  TCANVAS__CREATE,  line 1367 of ./include/canvas.inc
  $0047AFA0  TCONTROLCANVAS__CREATE,  line 53 of ./include/controlcanvas.inc
  $00494EE5  TGRAPHICCONTROL__CREATE,  line 31 of ./include/graphiccontrol.inc
  $0052AE90  TCUSTOMLABEL__CREATE,  line 208 of ./include/customlabel.inc
  $0042552C  TMAINFORM__BITBTN1CLICK,  line 112 of Main.pas
  $0048F767  TCONTROL__CLICK,  line 2288 of ./include/control.inc
Dump block $01CDFE70 size 16
The block is currently used for an object of class: TFPList
  $01CDFE70: 94 AF 5B 00 68 5E CC 01 | 03 00 00 00 04 00 00 00  ”Ї[.h^М.........

Call trace for block $00068A50 size 8
  $004AF03F line 300 of lazconfigstorage.pas
  $004686E5  TCANVAS__CREATE,  line 1367 of ./include/canvas.inc
  $0047AFA0  TCONTROLCANVAS__CREATE,  line 53 of ./include/controlcanvas.inc
  $00494EE5  TGRAPHICCONTROL__CREATE,  line 31 of ./include/graphiccontrol.inc
  $0052AE90  TCUSTOMLABEL__CREATE,  line 208 of ./include/customlabel.inc
  $0042552C  TMAINFORM__BITBTN1CLICK,  line 112 of Main.pas
  $0048F767  TCONTROL__CLICK,  line 2288 of ./include/control.inc
  $0052C34F  TBUTTONCONTROL__CLICK,  line 62 of ./include/buttoncontrol.inc
Dump block $00068A50 size 8
The block is currently used for an object of class: TList
  $00068A50: 04 B0 5B 00 70 FE CD 01 |                          .°[.pюН.

Call trace for block $000D1350 size 172
  $00494EE5  TGRAPHICCONTROL__CREATE,  line 31 of ./include/graphiccontrol.inc
  $0052AE90  TCUSTOMLABEL__CREATE,  line 208 of ./include/customlabel.inc
  $0042552C  TMAINFORM__BITBTN1CLICK,  line 112 of Main.pas
  $0048F767  TCONTROL__CLICK,  line 2288 of ./include/control.inc
  $0052C34F  TBUTTONCONTROL__CLICK,  line 62 of ./include/buttoncontrol.inc
  $0052C91F  TCUSTOMBUTTON__CLICK,  line 174 of ./include/buttons.inc
  $00516C38  TCUSTOMBITBTN__CLICK,  line 57 of ./include/bitbtn.inc
  $0052C26A  TBUTTONCONTROL__WMDEFAULTCLICKED,  line 26 of ./include/buttoncontrol.inc
Dump block $000D1350 size 172
The block is currently used for an object of class: TControlCanvas
  $000D1350: 20 D7 5C 00 00 01 00 00 | 50 8A 06 00 00 00 00 00   Ч\.....PЉ......
  $000D135F: 00 00 00 00 88 6A 08 00 | 00 00 00 00 B0 C4 CB 01  ....€j......°ДЛ.
  $000D136F: 00 00 00 00 48 8D 0C 00 | 00 00 00 00 00 00 00 00  ....HЌ..........
  $000D137F: 00 00 00 00 FF FF FF FF | FF FF FF FF FF FF FF FF  ....яяяяяяяяяяяя
  $000D138F: FF FF FF FF 00 00 00 00 | 00 00 00 00 00 00 00 00  яяяя............
  $000D139F: 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00  ................
  $000D13AF: 20 00 CC 00 00 00 00 00 | 00 00 00 00 00 00 00 00   .М.............
  $000D13BF: 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00  ................
  $000D13CF: 01 01 00 00 01 00 00 00 | 00 00 00 00 78 81 CE 01  ............xЃО.
  $000D13DF: 48 8D 0C 00 88 6A 08 00 | B0 C4 CB 01 00 00 00 00  HЌ..€j..°ДЛ.....
  $000D13EF: B0 C6 E5 01 00 00 00 00 | 00 00 00 00              °Же.........

Call trace for block $01CE00B0 size 16
  $00493C53  TCONTROL__CREATE,  line 4295 of ./include/control.inc
  $00494ED6  TGRAPHICCONTROL__CREATE,  line 30 of ./include/graphiccontrol.inc
  $0052AE90  TCUSTOMLABEL__CREATE,  line 208 of ./include/customlabel.inc
  $0042552C  TMAINFORM__BITBTN1CLICK,  line 112 of Main.pas
  $0048F767  TCONTROL__CLICK,  line 2288 of ./include/control.inc
  $0052C34F  TBUTTONCONTROL__CLICK,  line 62 of ./include/buttoncontrol.inc
  $0052C91F  TCUSTOMBUTTON__CLICK,  line 174 of ./include/buttons.inc
  $00516C38  TCUSTOMBITBTN__CLICK,  line 57 of ./include/bitbtn.inc
Dump block $01CE00B0 size 16
The block is currently used for an object of class: String
  $01CE00B0: 01 00 00 00 07 00 00 00 | 64 65 66 61 75 6C 74 00  ........default.

Call trace for block $000869D8 size 96
  $00493C53  TCONTROL__CREATE,  line 4295 of ./include/control.inc
  $00494ED6  TGRAPHICCONTROL__CREATE,  line 30 of ./include/graphiccontrol.inc
  $0052AE90  TCUSTOMLABEL__CREATE,  line 208 of ./include/customlabel.inc
  $0042552C  TMAINFORM__BITBTN1CLICK,  line 112 of Main.pas
  $0048F767  TCONTROL__CLICK,  line 2288 of ./include/control.inc
  $0052C34F  TBUTTONCONTROL__CLICK,  line 62 of ./include/buttoncontrol.inc
  $0052C91F  TCUSTOMBUTTON__CLICK,  line 174 of ./include/buttons.inc
  $00516C38  TCUSTOMBITBTN__CLICK,  line 57 of ./include/bitbtn.inc
Dump block $000869D8 size 96
The block is currently used for an object of class: TFont
  $000869D8: 70 60 5C 00 01 00 00 00 | 00 00 00 00 FF FF 00 00  p`\.........яя..
  $000869E7: 00 00 00 00 00 00 00 00 | D0 A9 52 00 B0 C6 E5 01  ........Р©R.°Же.
  $000869F7: 00 00 00 00 00 00 00 00 | B8 00 CE 01 00 00 00 00  ........ё.О.....
  $00086A07: 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00  ................
  $00086A17: 00 00 00 00 01 00 00 00 | 60 00 00 00 00 00 00 00  ........`.......
  $00086A27: 00 00 00 00 00 00 00 20 | 00 00 00 00 00 00 00 00  ....... ........

Call trace for block $01CE02F0 size 20
  $00493B8C  TCONTROL__CREATE,  line 4281 of ./include/control.inc
  $00494ED6  TGRAPHICCONTROL__CREATE,  line 30 of ./include/graphiccontrol.inc
  $0052AE90  TCUSTOMLABEL__CREATE,  line 208 of ./include/customlabel.inc
  $0042552C  TMAINFORM__BITBTN1CLICK,  line 112 of Main.pas
  $0048F767  TCONTROL__CLICK,  line 2288 of ./include/control.inc
  $0052C34F  TBUTTONCONTROL__CLICK,  line 62 of ./include/buttoncontrol.inc
  $0052C91F  TCUSTOMBUTTON__CLICK,  line 174 of ./include/buttons.inc
  $00516C38  TCUSTOMBITBTN__CLICK,  line 57 of ./include/bitbtn.inc
Dump block $01CE02F0 size 20
The block is currently used for an object of class: TAnchorSide
  $01CE02F0: 60 DF 5C 00 03 00 00 00 | 00 00 00 00 B0 C6 E5 01  `Я\.........°Же.
  $01CE02FF: 00 00 00 00                                        ....

Call trace for block $01CE0530 size 20
  $00493B8C  TCONTROL__CREATE,  line 4281 of ./include/control.inc
  $00494ED6  TGRAPHICCONTROL__CREATE,  line 30 of ./include/graphiccontrol.inc
  $0052AE90  TCUSTOMLABEL__CREATE,  line 208 of ./include/customlabel.inc
  $0042552C  TMAINFORM__BITBTN1CLICK,  line 112 of Main.pas
  $0048F767  TCONTROL__CLICK,  line 2288 of ./include/control.inc
  $0052C34F  TBUTTONCONTROL__CLICK,  line 62 of ./include/buttoncontrol.inc
  $0052C91F  TCUSTOMBUTTON__CLICK,  line 174 of ./include/buttons.inc
  $00516C38  TCUSTOMBITBTN__CLICK,  line 57 of ./include/bitbtn.inc
Dump block $01CE0530 size 20
The block is currently used for an object of class: TAnchorSide
  $01CE0530: 60 DF 5C 00 02 00 00 00 | 00 00 00 00 B0 C6 E5 01  `Я\.........°Же.
  $01CE053F: 00 00 00 00                                        ....

Call trace for block $01CE0650 size 20
  $00493B8C  TCONTROL__CREATE,  line 4281 of ./include/control.inc
  $00494ED6  TGRAPHICCONTROL__CREATE,  line 30 of ./include/graphiccontrol.inc
  $0052AE90  TCUSTOMLABEL__CREATE,  line 208 of ./include/customlabel.inc
  $0042552C  TMAINFORM__BITBTN1CLICK,  line 112 of Main.pas
  $0048F767  TCONTROL__CLICK,  line 2288 of ./include/control.inc
  $0052C34F  TBUTTONCONTROL__CLICK,  line 62 of ./include/buttoncontrol.inc
  $0052C91F  TCUSTOMBUTTON__CLICK,  line 174 of ./include/buttons.inc
  $00516C38  TCUSTOMBITBTN__CLICK,  line 57 of ./include/bitbtn.inc
Dump block $01CE0650 size 20
The block is currently used for an object of class: TAnchorSide
  $01CE0650: 60 DF 5C 00 01 00 00 00 | 00 00 00 00 B0 C6 E5 01  `Я\.........°Же.
  $01CE065F: 00 00 00 00                                        ....

Call trace for block $01CE0890 size 20
  $00493B8C  TCONTROL__CREATE,  line 4281 of ./include/control.inc
  $00494ED6  TGRAPHICCONTROL__CREATE,  line 30 of ./include/graphiccontrol.inc
  $0052AE90  TCUSTOMLABEL__CREATE,  line 208 of ./include/customlabel.inc
  $0042552C  TMAINFORM__BITBTN1CLICK,  line 112 of Main.pas
  $0048F767  TCONTROL__CLICK,  line 2288 of ./include/control.inc
  $0052C34F  TBUTTONCONTROL__CLICK,  line 62 of ./include/buttoncontrol.inc
  $0052C91F  TCUSTOMBUTTON__CLICK,  line 174 of ./include/buttons.inc
  $00516C38  TCUSTOMBITBTN__CLICK,  line 57 of ./include/bitbtn.inc
Dump block $01CE0890 size 20
The block is currently used for an object of class: TAnchorSide
  $01CE0890: 60 DF 5C 00 00 00 00 00 | 00 00 00 00 B0 C6 E5 01  `Я\.........°Же.
  $01CE089F: 00 00 00 00                                        ....

Call trace for block $01CE80F8 size 52
  $00493DAD  TCONTROL__CREATECONTROLBORDERSPACING,  line 4318 of ./include/control.inc
  $00493B62  TCONTROL__CREATE,  line 4279 of ./include/control.inc
  $00494ED6  TGRAPHICCONTROL__CREATE,  line 30 of ./include/graphiccontrol.inc
  $0052AE90  TCUSTOMLABEL__CREATE,  line 208 of ./include/customlabel.inc
  $0042552C  TMAINFORM__BITBTN1CLICK,  line 112 of Main.pas
  $0048F767  TCONTROL__CLICK,  line 2288 of ./include/control.inc
  $0052C34F  TBUTTONCONTROL__CLICK,  line 62 of ./include/buttoncontrol.inc
  $0052C91F  TCUSTOMBUTTON__CLICK,  line 174 of ./include/buttons.inc
Dump block $01CE80F8 size 52
The block is currently used for an object of class: TControlBorderSpacing
  $01CE80F8: D4 DE 5C 00 00 00 00 00 | 00 00 00 00 00 00 00 00  ФЮ\.............
  $01CE8107: 00 00 00 00 B0 C6 E5 01 | 00 00 00 00 00 00 00 00  ....°Же.........
  $01CE8117: 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00  ................
  $01CE8127: 00 00 00 00                                        ....

Call trace for block $01CE8078 size 52
  $00493B4B  TCONTROL__CREATE,  line 4278 of ./include/control.inc
  $00494ED6  TGRAPHICCONTROL__CREATE,  line 30 of ./include/graphiccontrol.inc
  $0052AE90  TCUSTOMLABEL__CREATE,  line 208 of ./include/customlabel.inc
  $0042552C  TMAINFORM__BITBTN1CLICK,  line 112 of Main.pas
  $0048F767  TCONTROL__CLICK,  line 2288 of ./include/control.inc
  $0052C34F  TBUTTONCONTROL__CLICK,  line 62 of ./include/buttoncontrol.inc
  $0052C91F  TCUSTOMBUTTON__CLICK,  line 174 of ./include/buttons.inc
  $00516C38  TCUSTOMBITBTN__CLICK,  line 57 of ./include/bitbtn.inc
Dump block $01CE8078 size 52
The block is currently used for an object of class: TSizeConstraints
  $01CE8078: 10 DE 5C 00 B0 C6 E5 01 | 00 00 00 00 00 00 00 00  .Ю\.°Же.........
  $01CE8087: 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00  ................
  $01CE8097: 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00  ................
  $01CE80A7: 00 00 00 00                                        ....

Call trace for block $01E5C6B0 size 609
  $0052AE36  TCUSTOMLABEL__CREATE,  line 207 of ./include/customlabel.inc
  $0042552C  TMAINFORM__BITBTN1CLICK,  line 112 of Main.pas
  $0048F767  TCONTROL__CLICK,  line 2288 of ./include/control.inc
  $0052C34F  TBUTTONCONTROL__CLICK,  line 62 of ./include/buttoncontrol.inc
  $0052C91F  TCUSTOMBUTTON__CLICK,  line 174 of ./include/buttons.inc
  $00516C38  TCUSTOMBITBTN__CLICK,  line 57 of ./include/bitbtn.inc
  $0052C26A  TBUTTONCONTROL__WMDEFAULTCLICKED,  line 26 of ./include/buttoncontrol.inc
  $0040B8D6
Dump block $01E5C6B0 size 609
The block is currently used for an object of class: TLabel
Dump first 256 byte
  $01E5C6B0: 70 BB 5F 00 00 00 00 00 | 18 66 5A 00 00 00 00 00  p»_......fZ.....
  $01E5C6BF: 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00  ................
  $01E5C6CF: 00 00 00 00 01 00 00 00 | 20 AE 5B 00 90 6E CA 01  ........ ®[.ђnК.
  $01E5C6DF: 00 00 00 00 00 00 00 00 | 00 00 00 00 03 00 00 00  ................
  $01E5C6EF: 90 08 CE 01 50 06 CE 01 | 30 05 CE 01 F0 02 CE 01  ђ.О.P.О.0.О.р.О.
  $01E5C6FF: 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00  ................
  $01E5C70F: 41 00 00 00 11 00 00 00 | 00 00 00 00 00 00 00 00  A...............
  $01E5C71F: 00 00 00 00 00 00 00 00 | F8 80 CE 01 00 00 00 00  ........шЂО.....
  $01E5C72F: 00 00 00 00 00 00 00 00 | 00 00 00 00 18 66 5A 00  .............fZ.
  $01E5C73F: 01 00 00 00 FF FF FF 1F | 78 80 CE 01 02 02 00 00  ....яяя.xЂО.....
  $01E5C74F: 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00  ................
  $01E5C75F: 00 00 00 00 A8 20 00 00 | 00 00 00 00 F4 FF 00 00  ....Ё ......фя..
  $01E5C76F: 00 00 00 00 00 00 00 00 | A0 29 5A 00 D8 69 08 00  ........ )Z.Шi..
  $01E5C77F: 11 00 00 00 00 00 00 00 | 00 00 00 00 01 00 00 00  ................
  $01E5C78F: 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00  ................
  $01E5C79F: 41 00 00 00 11 00 00 00 | 41 00 00 00 11 00 00 00  A.......A.......

А в этом случае я проверял утечку памяти для TLabel - создал объект и не освободил его. Типы
TRegion, TBrush, TPen, String, TFont, TFPList, TList, TControlCanvas, TFont, TAnchorSide, TControlBorderSpacing и
TSizeConstraints создает сам TLabel...

вывод лога чем-то напоминает FastMM из Delphi
RomanS
новенький
 
Сообщения: 33
Зарегистрирован: 10.12.2007 10:08:24

Re: расширение информативности Heaptrc

Сообщение RomanS » 03.03.2011 13:25:06

обновил модуль. см. первое сообщение
RomanS
новенький
 
Сообщения: 33
Зарегистрирован: 10.12.2007 10:08:24

Re: расширение информативности Heaptrc

Сообщение Maxizar » 28.03.2011 19:09:35

А можно объяснить как это дело поставить... я так понял мы этим файлом должны были заменить вот это: heaptrc.pp так?..
после чего сделать что, нужно как то пересобрать FPC
я так понимаю make all...? а где?... у меня Win.
я что то игрался после чего получаю вот это:
Код: Выделить всё
Microsoft Windows XP [Версия 5.1.2600]
(С) Корпорация Майкрософт, 1985-2001.

c:\lazarus\fpc\2.4.2\source\rtl>make all
make -C win32 all
make[1]: Entering directory `c:/lazarus/fpc/2.4.2/source/rtl/win32'
make[1]: Leaving directory `c:/lazarus/fpc/2.4.2/source/rtl/win32'

c:\lazarus\fpc\2.4.2\source\rtl>


че делать то?
Maxizar
постоялец
 
Сообщения: 385
Зарегистрирован: 20.03.2010 19:48:14

Re: расширение информативности Heaptrc

Сообщение Sergei I. Gorelkin » 28.03.2011 20:49:12

make clean all
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1406
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: расширение информативности Heaptrc

Сообщение Maxizar » 28.03.2011 21:06:10

Sergei I. Gorelkin писал(а):make clean all

Да спасибо... все я ни как не могу привыкнуть к make :oops:
Но он выдал такую вот ошибку:
Код: Выделить всё
бла бла
Compiling buildrtl.pp
Compiling sysinitpas.pp
Compiling sysinitcyg.pp
Compiling sysinitgprof.pp
Compiling c:\lazarus\fpc\2.4.2\source\rtl\inc\ctypes.pp
Compiling c:\lazarus\fpc\2.4.2\source\rtl\inc\strings.pp
Compiling c:\lazarus\fpc\2.4.2\source\rtl\inc\heaptrc.pp
heaptrc.pp(365,5) Error: Identifier not found "try"
heaptrc.pp(365,5) Fatal: Syntax error, ";" expected but "IF" found
Fatal: Compilation aborted
make[1]: *** [buildrtl.ppu] Error 1
make[1]: Leaving directory `c:/lazarus/fpc/2.4.2/source/rtl/win32'
make: *** [win32_all] Error 2

c:\lazarus\fpc\2.4.2\source\rtl>

смотрим на строку 365:
Код: Выделить всё
if Not ValidPointer(p) then

или на всю процедуру:
Код: Выделить всё
  Function GetType(Const p: Pointer): String;
  Begin
    try
    if Not ValidPointer(p) then
      Result := 'Unknown'
    else
    // Sheck string
    if (pp^.size > 8)
       and (PDword(p)^ < $7fffffff)
       and (PDword(p)^ > 0)
       and (PDword(p + 4)^ = (pp^.size - 9))
       and (PByte(p + pp^.size - 1)^ = 0) then
      Result := 'String'
    // check PChar
//    else if
    // check TObject
    else if (pp^.size >= SizeOf(Pointer))
//       and (PDword(p)^ >= $10000)
       and (ValidPointer(Pointer(p^)))
       and (PVmt(p^)^.vInstanceSize = pp^.size)
       and (PVmt(p^)^.vInstanceSize = - PVmt(p^)^.vInstanceSize2)
       and (pByte(PVmt(p^)^.vClassName)^ > 0) then
        Result := PVmt(p^)^.vClassName^
    else
      Result := 'Unknown';
    Except
      Result := 'Unknown';
    end;
  end;

вроде все корректно...
Почему он не знает что есть идентификатор try ?

компиляция со старым файлом проходит на 100%..
Maxizar
постоялец
 
Сообщения: 385
Зарегистрирован: 20.03.2010 19:48:14

Re: расширение информативности Heaptrc

Сообщение Sergei I. Gorelkin » 28.03.2011 22:29:16

О try и иже с ним компилятор знает только в режиме $mode objfpc/delphi. Кроме того, обработка исключений завязана на модуль sysutils.
Модуль heaptrc является базовым и не должен ни от чего зависеть, поэтому в составе rtl он компилируется в режиме $mode fpc.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1406
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: расширение информативности Heaptrc

Сообщение RomanS » 29.03.2011 08:37:25

Maxizar писал(а):А можно объяснить как это дело поставить... я так понял мы этим файлом должны были заменить вот это: heaptrc.pp так?..
...
че делать то?

Я просто данный модуль кидал в каталог проекта и в программе писал так:
Код: Выделить всё
program AutoExchange;

{$mode objfpc}{$H+}
uses
    HeaptrcEx,
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Interfaces, // this includes the LCL widgetset
  Forms, uMain
  { you can add units after this };

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.


Добавлено спустя 2 минуты 7 секунд:
Sergei I. Gorelkin писал(а):О try и иже с ним компилятор знает только в режиме $mode objfpc/delphi. Кроме того, обработка исключений завязана на модуль sysutils.
Модуль heaptrc является базовым и не должен ни от чего зависеть, поэтому в составе rtl он компилируется в режиме $mode fpc.

Спасибо за информацию, буду переделывать :!:
RomanS
новенький
 
Сообщения: 33
Зарегистрирован: 10.12.2007 10:08:24

Re: расширение информативности Heaptrc

Сообщение Sergei I. Gorelkin » 29.03.2011 09:48:18

Там по идее вообще ничего трогать не нужно. Есть процедура SetHeapExtraInfo, с помощью которой назначаются процедуры заполнения и печати блоков, потом модуль сам вызывает эти процедуры, когда нужно.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1406
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: расширение информативности Heaptrc

Сообщение RomanS » 29.03.2011 10:38:03

Sergei I. Gorelkin писал(а):Там по идее вообще ничего трогать не нужно. Есть процедура SetHeapExtraInfo, с помощью которой назначаются процедуры заполнения и печати блоков, потом модуль сам вызывает эти процедуры, когда нужно.

но процедура fillproc (из SetHeapExtraInfo) никакой информации о распределении памяти не передает :(
поэтому и приходится править модуль...
RomanS
новенький
 
Сообщения: 33
Зарегистрирован: 10.12.2007 10:08:24

Re: расширение информативности Heaptrc

Сообщение Sergei I. Gorelkin » 29.03.2011 11:07:19

fillproc и не должна ничего передавать. Она вызывается при выделении блока и позволяет что-то записать в только что выделенный блок.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1406
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: расширение информативности Heaptrc

Сообщение RomanS » 29.03.2011 11:16:53

мне для дампа памяти нужен адрес, а получить его в fillproc нельзя...
RomanS
новенький
 
Сообщения: 33
Зарегистрирован: 10.12.2007 10:08:24


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9

Рейтинг@Mail.ru