Thread overview
Diamond, a D Memory Debugger (and profiler)
Jun 21, 2009
Vladimir Panteleev
Jun 21, 2009
torhu
Jun 22, 2009
Extrawurst
Jun 27, 2009
Vladimir Panteleev
Re: Diamond, a D Memory Debugger (and profiler) and thesis
Jul 03, 2009
Nick B
Jul 03, 2009
Extrawurst
Jul 05, 2009
Vladimir Panteleev
Jul 05, 2009
Lutger
Jul 06, 2009
Tim Matthews
June 21, 2009
I've been working on this project on and off for over a year, and presented it as part of my graduation thesis on memory management in D. I think I'm done working on it for a while (due to many other projects begging for attention), and even though there's still things that could be finished or improved, it's quite useful as it is now.

Diamond is a post-mortem memory debugger and profiler. It is composed of two parts:
 * a module, which should be imported before any other modules in the project to be debugged
 * a memory log analyzer, which allows inspecting generated memory logs

The module logs all memory operations to a file, as well as periodic memory snapshots (before garbage collects). Some logging options are configurable.

Diamond aims to facilitate debugging memory leaks (data referenced by bogus pointers), memory corruption and other problems. It was written for D1 (both Phobos and Tango), D2 support is untested at best.

Runtime module features:
 * logs all memory events, with timestamps and call stacks
 * exports C functions, allowing debuggee to log memory maps or snapshots at any time, as well as log text comments
 * has optional memory debugging features, like checking free calls and stomping on deallocated memory

Log analyzer features:
 * uses map files to display symbols in call stacks
 * can seek through the log file, allowing to examine the application state at different points in time
 * can display "top allocators" - call stacks that allocated most bytes
 * can filter memory events by address range
 * can display a visual "memory map" [1] (useful for quickly finding large areas the GC shouldn't be scanning for pointers)
 * can search for references (pointers) to a certain memory range
 * can dump a region of memory to screen

Things still to be done:
 * documentation
 * more type information (by hooking higher-level allocators)
 * dumping data segment and thread stacks (currently only the heap is dumped)
 * more runtime library options

Project homepage:
http://dsource.org/projects/diamond/

[1] http://dump.thecybershadow.net/36ee988fc564aa9ab5529d43662eec81/0000062E.png

-- 
Best regards,
 Vladimir                          mailto:thecybershadow@gmail.com
June 21, 2009
On 21.06.2009 20:34, Vladimir Panteleev wrote:
>    * can search for references (pointers) to a certain memory range

Nice, I'll have to try this tool out.
June 22, 2009
Vladimir Panteleev wrote:
> I've been working on this project on and off for over a year, and presented it as part of my graduation thesis on memory management in D. 

Sounds great, is it possible to read the aforementioned thesis too ?

> I think I'm done working on it for a while (due to many other projects begging for attention), and even though there's still things that could be finished or improved, it's quite useful as it is now.
> 
> Diamond is a post-mortem memory debugger and profiler. It is composed of two parts:
>  * a module, which should be imported before any other modules in the project to be debugged
>  * a memory log analyzer, which allows inspecting generated memory logs
> 
> The module logs all memory operations to a file, as well as periodic memory snapshots (before garbage collects). Some logging options are configurable.
> 
> Diamond aims to facilitate debugging memory leaks (data referenced by bogus pointers), memory corruption and other problems. It was written for D1 (both Phobos and Tango), D2 support is untested at best.
> 
> Runtime module features:
>  * logs all memory events, with timestamps and call stacks
>  * exports C functions, allowing debuggee to log memory maps or snapshots at any time, as well as log text comments
>  * has optional memory debugging features, like checking free calls and stomping on deallocated memory
> 
> Log analyzer features:
>  * uses map files to display symbols in call stacks
>  * can seek through the log file, allowing to examine the application state at different points in time
>  * can display "top allocators" - call stacks that allocated most bytes
>  * can filter memory events by address range
>  * can display a visual "memory map" [1] (useful for quickly finding large areas the GC shouldn't be scanning for pointers)
>  * can search for references (pointers) to a certain memory range
>  * can dump a region of memory to screen
> 
> Things still to be done:
>  * documentation
>  * more type information (by hooking higher-level allocators)
>  * dumping data segment and thread stacks (currently only the heap is dumped)
>  * more runtime library options
> 
> Project homepage:
> http://dsource.org/projects/diamond/
> 
> [1] http://dump.thecybershadow.net/36ee988fc564aa9ab5529d43662eec81/0000062E.png 
> 
> 
June 27, 2009
On Mon, 22 Jun 2009 10:55:37 +0300, Extrawurst <spam@extrawurst.org> wrote:

> Sounds great, is it possible to read the aforementioned thesis too ?

I've been undecided whether I should post it online, for the reason that it was written for a committee of Moldavian professors who had no clue what a garbage collector is (not to mention having heard of D), and were definitely not going to read my thesis (just listen to the 10-minute presentation)... Even though I did put some effort into it, it may have some inaccuracies. So please don't judge it too harshly :P

Thesis:
http://thecybershadow.net/d/Memory_Management_in_the_D_Programming_Language.pdf

Presentation (PowerPoint 2007, sorry):
http://thecybershadow.net/d/Presentation.pptx

-- 
Best regards,
 Vladimir                          mailto:thecybershadow@gmail.com
July 03, 2009
Vladimir Panteleev wrote:
> On Mon, 22 Jun 2009 10:55:37 +0300, Extrawurst <spam@extrawurst.org> wrote:
> 
>> Sounds great, is it possible to read the aforementioned thesis too ?
> 
> I've been undecided whether I should post it online, for the reason that it was written for a committee of Moldavian professors who had no clue what a garbage collector is (not to mention having heard of D), and were definitely not going to read my thesis (just listen to the 10-minute presentation)... Even though I did put some effort into it, it may have some inaccuracies. So please don't judge it too harshly :P
> 
> Thesis:
> http://thecybershadow.net/d/Memory_Management_in_the_D_Programming_Language.pdf 
> 
> 
> Presentation (PowerPoint 2007, sorry):
> http://thecybershadow.net/d/Presentation.pptx
> 

Vladimir

I would just like to thank you posting your thesis. It was an interesting and enjoyable read.

regards
Nick B.
July 03, 2009
Nick B wrote:
> Vladimir Panteleev wrote:
>> On Mon, 22 Jun 2009 10:55:37 +0300, Extrawurst <spam@extrawurst.org> wrote:
>>
>>> Sounds great, is it possible to read the aforementioned thesis too ?
>>
>> I've been undecided whether I should post it online, for the reason that it was written for a committee of Moldavian professors who had no clue what a garbage collector is (not to mention having heard of D), and were definitely not going to read my thesis (just listen to the 10-minute presentation)... Even though I did put some effort into it, it may have some inaccuracies. So please don't judge it too harshly :P
>>
>> Thesis:
>> http://thecybershadow.net/d/Memory_Management_in_the_D_Programming_Language.pdf 
>>
>>
>> Presentation (PowerPoint 2007, sorry):
>> http://thecybershadow.net/d/Presentation.pptx
>>
> 
> Vladimir
> 
> I would just like to thank you posting your thesis. It was an interesting and enjoyable read.
> 
> regards
> Nick B.

Thanks from my end too, i am still trying to find the time reading it though ;)

Extrawurst
July 05, 2009
On Fri, 03 Jul 2009 12:06:05 +0300, Nick B <nick.barbalich@gmail.com> wrote:

> Vladimir Panteleev wrote:
>> On Mon, 22 Jun 2009 10:55:37 +0300, Extrawurst <spam@extrawurst.org> wrote:
>>
>>> Sounds great, is it possible to read the aforementioned thesis too ?
>>  I've been undecided whether I should post it online, for the reason that it was written for a committee of Moldavian professors who had no clue what a garbage collector is (not to mention having heard of D), and were definitely not going to read my thesis (just listen to the 10-minute presentation)... Even though I did put some effort into it, it may have some inaccuracies. So please don't judge it too harshly :P
>>  Thesis:
>> http://thecybershadow.net/d/Memory_Management_in_the_D_Programming_Language.pdf   Presentation (PowerPoint 2007, sorry):
>> http://thecybershadow.net/d/Presentation.pptx
>>
>
> Vladimir
>
> I would just like to thank you posting your thesis. It was an interesting and enjoyable read.
>
> regards
> Nick B.

I'm glad you liked it, I guess my effort didn't go to waste after all :)

-- 
Best regards,
 Vladimir                          mailto:thecybershadow@gmail.com
July 05, 2009
Vladimir Panteleev wrote:

> On Fri, 03 Jul 2009 12:06:05 +0300, Nick B <nick.barbalich@gmail.com> wrote:
> 
>> Vladimir Panteleev wrote:
>>> On Mon, 22 Jun 2009 10:55:37 +0300, Extrawurst <spam@extrawurst.org> wrote:
>>>
>>>> Sounds great, is it possible to read the aforementioned thesis too ?
>>>  I've been undecided whether I should post it online, for the reason
>>> that it was written for a committee of Moldavian professors who had no
>>> clue what a garbage collector is (not to mention having heard of D),
>>> and were definitely not going to read my thesis (just listen to the
>>> 10-minute presentation)... Even though I did put some effort into it,
>>> it may have some inaccuracies. So please don't judge it too harshly :P
>>>  Thesis:
>>> 
http://thecybershadow.net/d/Memory_Management_in_the_D_Programming_Language.pdf
>>>   Presentation (PowerPoint 2007, sorry):
>>> http://thecybershadow.net/d/Presentation.pptx
>>>
>>
>> Vladimir
>>
>> I would just like to thank you posting your thesis. It was an interesting and enjoyable read.
>>
>> regards
>> Nick B.
> 
> I'm glad you liked it, I guess my effort didn't go to waste after all :)
> 

Surely not, I'm still reading it too. Don't forget that but a small percentage of readers will actually post feedback!

July 06, 2009
Lutger wrote:
> 
> Surely not, I'm still reading it too. Don't forget that but a small percentage of readers will actually post feedback!
> 

I read it and didn't post feedback but I did think it was actually a great read. If anyone else has a thesis I would be interested in reading those too.