Post Reply  Post Thread 
How to get it on the road
Author Message
Hans Heintz
Junior Member
**


Posts: 4
Group: Registered
Joined: Nov 2007
Status: Offline
Reputation: 0
Post: #1
How to get it on the road

Hi,

I'm a relatively casual programmer (beside being a vet) so i might be asking things that are obvious to most. I work in DTP 2006 and I'm really interested in getting mem leakage info on partial program actions.

I don't understand quite how to get things going. What I did was add denomo.pas to the project, manually move it to the top of the uses list in my project file and start compiling. Every subsequent file reported missing when compiling I added manually:
DenomoMemHooker ,
DisAsm32,
Win32Hook,
DenomoUtils,
DenomoHost
until I came to jcldebug which doesn't seem to exists anywhere.

11-14-2007 07:39 PM
Find all posts by this user Quote this message in a reply
Hans Heintz
Junior Member
**


Posts: 4
Group: Registered
Joined: Nov 2007
Status: Offline
Reputation: 0
Post: #2
RE: How to get it on the road

I already found out you have to
disable UseJclDebug in denomo.inc like this:
{.$define UseJclDebug}

11-14-2007 08:06 PM
Find all posts by this user Quote this message in a reply
Qi
Administrator
*******


Posts: 46
Group: Administrators
Joined: Oct 2007
Status: Offline
Reputation: 0
Post: #3
RE: How to get it on the road

Hello,

Maybe I should add instructions on setting the paths. :-)

You need to add paths where Denomo sits in.
In Delphi IDE, click menu Project, then Options, in the pop up dialog, select the tab Directories/Conditions, then in the field "Search path", add the path where Denomo is in, and also add the path where Denomo\Disasm32 is in.
You can temporarily disable JCLDebug by disable the option "UseJclDebug" in Denomo.inc by adding a dot before "$define".
That line should look like
{.$define UseJclDebug}

Then your project can be compiled.

However, there has been some user report bugs on D2006 and D2007 in the Borland newsgroup, I will check and fix the bugs as soon as possible. So if you get errors when running, be patient, bug fix will come soon.

11-14-2007 08:10 PM
Visit this users website Find all posts by this user Quote this message in a reply
Hans Heintz
Junior Member
**


Posts: 4
Group: Registered
Joined: Nov 2007
Status: Offline
Reputation: 0
Post: #4
RE: How to get it on the road

continuing my monologue:

I get the next error in my program after inc session leak end
(Delphi Turbi Professional 2006)

exception class : ERangeError
exception message : Range check error.
//========================================
main thread ($11ec):
00437490 Pveterin.exe DenomoUtils 390 TSimpleStringBufferWriter.Write
77803c6f USER32.dll PeekMessageA
00460694 Pveterin.exe madExcept PeekMessageCallbackA
004c763d Pveterin.exe Forms 7649 TApplication.ProcessMessage
004c779b Pveterin.exe Forms 7689 TApplication.HandleMessage
004c7a36 Pveterin.exe Forms 7773 TApplication.Run
007ec5df Pveterin.exe Pveterin 358 initialization
770a3831 kernel32.dll BaseThreadInitThunk
7768a9bb ntdll.dll LdrInitializeThunk
//==================================

The denomo inspector meanwhile shows this text, which I'm not sure how to interpret:

//======================================
Begin incremental session leak dectection at group 1
Filters: MemTyps: [Memory blocks], [Objects] GroupID: 0
01E7F8E0 BlockSize: 116 Class: TBitmapImage
ST: 0046F0CF
ST: 0054894B
ST: 005489A1
ST: 00549017
ST: 00549679
ST: 004AD902
ST: 004A39A0
ST: 004A354D
ST: 004A8C33
ST: 004A253D
01E7F990 BlockSize: 116 Class: TBitmapImage
ST: 0046F0CF
ST: 0054894B
ST: 005489A1
ST: 00549017
ST: 00549679
ST: 004AD902
ST: 004A39A0
ST: 004A354D
ST: 004A8C33
ST: 004A253D
06479D90 BlockSize: 308 GETMEM
ST: 00536E60
ST: 004FD88E
ST: 00535C32
ST: 005359F1
ST: 007A9122
ST: 007B490F
ST: 00489BB2
ST: 00489A20
ST: 00430A5A
ST: 77811A10
06479F10 BlockSize: 300 GETMEM
ST: 00536E60
ST: 004FD88E
ST: 00535C32
ST: 005359F1
ST: 007B2A01
ST: 0073C14C
ST: 007C11A0
ST: 007BE2F9
ST: 007A912A
ST: 007B490F
0647A090 BlockSize: 300 GETMEM
ST: 00536E60
ST: 004FD88E
ST: 00535C32
ST: 005359F1
ST: 007B2A01
ST: 0073C14C
ST: 007C11A0
ST: 007BE2F9
ST: 007A912A
ST: 007B490F
0647A510 BlockSize: 308 GETMEM
ST: 00536E60
ST: 004FD88E
ST: 00535C32
ST: 005359F1
ST: 007A9122
ST: 007B490F
ST: 00489BB2
ST: 00489A20
ST: 00430A5A
ST: 77811A10
156DCA70 BlockSize: 620 GETMEM
ST: 00536E60
ST: 004FD88E
ST: 00535C32
ST: 005359F1
ST: 007B2A01
ST: 0072FEB6
ST: 00735A74
ST: 004BD2C3
ST: 004C1F7D
ST: 004A39A0
156DCD50 BlockSize: 620 GETMEM
ST: 00536E60
ST: 004FD88E
ST: 00535C32
ST: 005359F1
ST: 007B2A01
ST: 0072FEB6
ST: 00735A74
ST: 004BD2C3
ST: 004C1F7D
ST: 004A39A0
18072840 BlockSize: 4152 GETMEM
ST: 00402E8B
ST: 0042831F
ST: 0042835D
ST: 00427A51
ST: 004279F9
ST: 0046F086
ST: 0054894B
ST: 005489A1
ST: 00549017
ST: 00549679
2CF0C0F0 BlockSize: 16 GETMEM
ST: 007B29C4
ST: 0073C14C
ST: 007C11A0
ST: 007BE2F9
ST: 007A912A
ST: 007B490F
ST: 00489BB2
ST: 00489A20
ST: 00430A5A
ST: 77811A10
2CF0C230 BlockSize: 16 GETMEM
ST: 0040728A
ST: 00535C32
ST: 005359F1
ST: 007B2A01
ST: 0073C14C
ST: 007C11A0
ST: 007BE2F9
ST: 007A912A
ST: 007B490F
ST: 00489BB2
2CF215B0 BlockSize: 20 Class: TMemoryStream
ST: 0054894B
ST: 005489A1
ST: 00549017
ST: 00549679
ST: 004AD902
ST: 004A39A0
ST: 004A354D
ST: 004A8C33
ST: 004A253D
ST: 0054A2ED
2CF216A0 BlockSize: 16 GETMEM
ST: 007A9122
ST: 007B490F
ST: 00489BB2
ST: 00489A20
ST: 00430A5A
ST: 77811A10
ST: 77811AE8
ST: 77812A47
ST: 77803C8A
ST: 004C775B
2CF217E0 BlockSize: 16 GETMEM
ST: 0040728A
ST: 00535C32
ST: 005359F1
ST: 007A9122
ST: 007B490F
ST: 00489BB2
ST: 00489A20
ST: 00430A5A
ST: 77811A10
ST: 77811AE8
2CF5F8D0 BlockSize: 16 GETMEM
ST: 007B29C4
ST: 0072FEB6
ST: 00735A74
ST: 004BD2C3
ST: 004C1F7D
ST: 004A39A0
ST: 004A86D9
ST: 004BDD4A
ST: 004A354D
ST: 004A7BD9
2CF5FA10 BlockSize: 16 GETMEM
ST: 0040728A
ST: 00535C32
ST: 005359F1
ST: 007B2A01
ST: 0072FEB6
ST: 00735A74
ST: 004BD2C3
ST: 004C1F7D
ST: 004A39A0
ST: 004A86D9
2CF8C1B8 BlockSize: 24 GETMEM
ST: 0072A0ED
ST: 007D257B
ST: 007DD340
ST: 007DD243
ST: 004A3F60
ST: 00549BCF
ST: 00549BAF
ST: 004A4466
ST: 004A44F6
ST: 004A39A0
2CF99330 BlockSize: 36 Class: TAdsBlobCache
ST: 00536E8E
ST: 004FD88E
ST: 00535C32
ST: 005359F1
ST: 007B2A01
ST: 0072FEB6
ST: 00735A74
ST: 004BD2C3
ST: 004C1F7D
ST: 004A39A0
2CF99390 BlockSize: 36 Class: TAdsBlobCache
ST: 00536E8E
ST: 004FD88E
ST: 00535C32
ST: 005359F1
ST: 007B2A01
ST: 0072FEB6
ST: 00735A74
ST: 004BD2C3
ST: 004C1F7D
ST: 004A39A0
2CFA5910 BlockSize: 4152 GETMEM
ST: 00402E8B
ST: 0042831F
ST: 0042835D
ST: 00427A51
ST: 004279F9
ST: 0046F086
ST: 0054894B
ST: 005489A1
ST: 00549017
ST: 00549679
2CFAE550 BlockSize: 12 GETMEM
ST: 0040728A
ST: 007B9560
ST: 0072A0ED
ST: 007D257B
ST: 007DD340
ST: 007DD243
ST: 004A3F60
ST: 00549BCF
ST: 00549BAF
ST: 004A4466
2CFB3F30 BlockSize: 16 Class: TList
ST: 004A8503
ST: 004BDD4A
ST: 004A7D97
ST: 00430A5A
ST: 77811A10
ST: 77811AE8
ST: 77812A47
ST: 77803C8A
ST: 004C775B
ST: 004C77A0
2CFB3F80 BlockSize: 16 GETMEM
ST: 00423E41
ST: 00423B3C
ST: 0042F40E
ST: 004A8503
ST: 004BDD4A
ST: 004A7D97
ST: 00430A5A
ST: 77811A10
ST: 77811AE8
ST: 77812A47
2CFB3FD0 BlockSize: 16 Class: TList
ST: 0042F419
ST: 004A8503
ST: 004BDD4A
ST: 004A7D97
ST: 00430A5A
ST: 77811A10
ST: 77811AE8
ST: 77812A47
ST: 77803C8A
ST: 004C775B
2CFB4020 BlockSize: 16 GETMEM
ST: 00423E41
ST: 00423B3C
ST: 0042F40E
ST: 0042F419
ST: 004A8503
ST: 004BDD4A
ST: 004A7D97
ST: 00430A5A
ST: 77811A10
ST: 77811AE8
2CFBA1F0 BlockSize: 20 Class: TMemoryStream
ST: 0054894B
ST: 005489A1
ST: 00549017
ST: 00549679
ST: 004AD902
ST: 004A39A0
ST: 004A354D
ST: 004A8C33
ST: 004A253D
ST: 0054A2ED
Totally output 26 blocks.
Elimination of object's fields leak is disabled.
End incremental session leak dectection at group 1
//=========================================

11-14-2007 08:16 PM
Find all posts by this user Quote this message in a reply
Qi
Administrator
*******


Posts: 46
Group: Administrators
Joined: Oct 2007
Status: Offline
Reputation: 0
Post: #5
RE: How to get it on the road

Hello,

To avoid that range check error, you should disable range check in your project.
In Delphi, go to menu Project, then Options, in the "Compiler" tab, in the "Runtime errors", clear the check mark of "Range checking".
I will investigate to see how to avoid that error.

About the output information.
Such line
01E7F8E0 BlockSize: 116 Class: TBitmapImage
Means an object of class TBitmapImage is leaked and the object memory pointer is 01E7F8E0.
Following lines such as ST: 0046F0CF is the stack trace. The hex number is the address where the function that allocates that block of memory.
Hex number is meaningless to you, please download JCL and enable JCLDebug so you can get readable source line information. Google for "Delphi JCL" for download.

And such line
06479D90 BlockSize: 308 GETMEM
Means a leak is a raw memory block which is not an object, the memory block address is 06479D90.

Thank you very much for you feedback, seems I have much to do on the documentation. :-)

BTW, you are not monologue, I've replied your previous message.

This post was last modified: 11-14-2007 08:33 PM by Qi.

11-14-2007 08:32 PM
Visit this users website Find all posts by this user Quote this message in a reply
Hans Heintz
Junior Member
**


Posts: 4
Group: Registered
Joined: Nov 2007
Status: Offline
Reputation: 0
Post: #6
RE: How to get it on the road

Thanks for your kind replies.
When I remarked monologue I was still ignorant of your first reply. Also it was not meant negative but more apologetic to your forum for ranting on by myself. Smile
Thanks for your efforts with the program I will give it a thorough tryout.

11-14-2007 09:01 PM
Find all posts by this user Quote this message in a reply
Qi
Administrator
*******


Posts: 46
Group: Administrators
Joined: Oct 2007
Status: Offline
Reputation: 0
Post: #7
RE: How to get it on the road

Hello, Hans,

No need any apologetic.

Denomo, the site, and the forum are very new yet.

Your any feedback, bug report, wish list are quite appreciated.

11-14-2007 09:09 PM
Visit this users website Find all posts by this user Quote this message in a reply
Post Reply  Post Thread 

View a Printable Version
Send this Thread to a Friend
Subscribe to this Thread | Add Thread to Favorites

Forum Jump: