Denomo: an open source comprehensive memory and resource leak detection tool for Delphi

It supports many useful features to help you to detect and locate the leak quickly.

Version: 2.1.0



Quick start

1, Modify you project's code.
Place the unit "Denomo.pas" as the very first unit under the "uses" section in your project's .dpr file.
If you use another memory manager explicitly, e.g, FastMM, put the unit "Denomo.pas" just under the memory manager.
2, Change project options in Delphi project.
In Delphi, in your project to detect memory leak, go to menu Project->Options->Compiler, be sure "Optimization" is unchecked, and "Stack frames", "Debug information", "Reference info", "Definitions only", "Assertions", and "Use Debug DCUs" are checked.
3, Compile and run your project.
4, Run bin\LeakInspector to start monitoring.
5, Click button "Inc Session Leak Begin".
6, Do something you suspect has memory leak.
7, Click button "Inc Session Leak End", then check the output text.

Features and advantages

1, Low level memory leak detection.
Detect memory leak allocated by function GetMem (the kernel function of Delphi memory manager).
2, Object level memory leak detection.
Detect object leak allocated by object constructor.
3, Keep stack trace of the allocate functions.
Once any memory leaked, the stack trace can help you to locate the address where the leak is allocated.
4, Eliminate leaked child objects created in constructor.
If any objects created in object A's constructor, then if A is leaked (not freed), the objects created in its constructor will not be reported as leak.
This feature will significantly suppress the leak report amount so to make you focus on the objects that are really leaked.
5, Leak detection during a certain session. The most important feature in Denomo.
You can inspect the memory leak during a certain period rather than only monitor the whole program life.
6, Leak source locations.
Denomo can report exact source information such as unit name, procedure name, line number, if JCL is used and TD32 debug information is available.
7, Leak report on program exit.
Just like many other memory leak detection tools do.
Disabled by default.
8, Free Twice detection.
If the program free a memory block that has been freed, Denomo can detect and report it.
Disabled by default.
9, Don't depend on any memory manager.
If the default memory manager is not compatible with leak detection, Denomo also has a simple Windows heap based memory manager with it.
10, Huge leak reporting is fast than ever. Handling tens of thousands of leaks is a piece of cake.
The leaking reporting performance has been highly optmized since version 1.0.2.
Testing on a CeleronD 2.0G HZ 512M Ram, reporting around 3000 blocks costs only no more than 10 seconds, 35000 blocks costs about 40 seconds, 70000 blocks costs about 120 seconds.
11, Support GDI leak detection.
And more resource leak detection will be added in the future versions.
12, Works on Delphi 6, Delphi 7 and Delphi 2007.
Other versions Delphi are not tested on. You will be much appreciated if you test this work with Delphi 5, Delphi 2005, 2006, and any other 32 bits Delphi versions.

Change logs in the newest version:

New: Now support leak detection for C++ programs (BCB and VC).
New: Enhanced bad pointer detection. Now free on freed pointer, calling freed object's virtual method, calling freed interface's method, can be detected.
Update: Improve the code hook engine so that it won't disturb the stack trace any more.
Update: Now there is an option that show warning whenever Denomo runs. Thanks to Sasa Zeman to suggest that.
Update: Now there is an option that can limit the log file size, or overwrite the log file rather than appending to it. Thanks to Sasa Zeman to suggest that.
Fix: Replace the buggy binary tree algorithm with the Arkadia one.
Fix: A bug causes access violation exception when shut down if Denomo is used in a DLL.
Fix: An "integer overflow" bug when "overflow checking" is enabled.
Remove: DenomoSimpleMM.pas was removed.

Release notes:
Environment used to test Denomo:
OS: Windows XP and Windows 2000 are tested on. Win98 and Vista haven't been tested yet.
Delphi version: Delphi 7 and Delphi 2007 are tested. Delphi 6 are tested but the test is very rough. Delphi 5, Delphi 2005, 2006 and any other Delphi versions aren't tested.
Project tested with Denomo:
1, LeakGenerator. The sample and test project comes with Denomo.
2, One of my largest project. That project contains more than 50K lines of hand writen code, allocate tens of thousands of objects in each session, and graphics intensive (resize JPG picture). That project works well with Denomo enabled in D7 and D2007.

ppmhount
Posts: 42
Comment
ppmhount
Reply #42 on : Sat March 27, 2010, 21:29:43
xlzlmdne http://fqkllaol.com zeefnuyu sunpzctt
lbjizelh
Posts: 42
Comment
lbjizelh
Reply #41 on : Sat March 27, 2010, 21:26:52
fquijkdh http://dnlbspzu.com oqciwwzz gyonfzya
wqhaxqji
Posts: 42
Comment
wqhaxqji
Reply #40 on : Sat March 27, 2010, 21:26:09
gndvmvjn http://zlpmmcjs.com bqulqhpx reqmlusf
theqfdbv
Posts: 42
Comment
theqfdbv
Reply #39 on : Sat March 27, 2010, 21:25:54
gjkuxcre http://exgvxplq.com rihsyolc pgihrfsh [URL=http://flfydxrk.com]jfxuxias[/URL] <a href="http://bgqrnozq.com">qikboqau</a>
wirftjzv
Posts: 42
Comment
wirftjzv
Reply #38 on : Sat March 27, 2010, 21:25:13
[URL=http://lmzoayvl.com]oqfxxndt[/URL] dquhklvk http://rnswrfuo.com aozlftub aeeswaqi <a href="http://iwptjcyn.com">vdhdqufb</a>
lwwzpcrt
Posts: 42
Comment
lwwzpcrt
Reply #37 on : Sat March 27, 2010, 21:24:36
qvwafvnr http://srgpafji.com fnhmnytz nafbktfa [URL=http://dowvgbcs.com]aufzegyc[/URL] <a href="http://sqsgvpsj.com">gxhrelfa</a>
Rob
Posts: 42
Comment
Other
Reply #36 on : Thu February 18, 2010, 01:38:10
I liked your site.
Ross
Posts: 42
Comment
News
Reply #35 on : Mon February 15, 2010, 17:53:42
Any news on Delphi 2009/2010 compatible versions? Anybody know of any good alternatives to Denomo for Delphi 2010?
CoMPi
Posts: 42
Comment
D2009
Reply #34 on : Sat December 26, 2009, 09:54:25
I couldn't compile Denomo in Delphi 2009 because there is an undeclared identifier "TImageHlpLine". What's wrong? Where is it?
Qi
Posts: 42
Comment
Re: Delphi 2009 Support
Reply #33 on : Sun November 01, 2009, 22:52:01
To CoMPi, not yet

Write a comment

  • Required fields are marked with *
  • Security Code is case sensitive, 'A' is different with 'a'.

If you have trouble reading the code, click on the code itself to generate a new random code.
Security Code:
 
Showing comments 1 to 10 of 42 | Next | Last