Thread: Aesalon: a tool to visualize dynamically-allocated memory

  1. #1
    Registered User
    Join Date
    Dec 2009
    Location
    /dev/pts/0
    Posts
    29

    Aesalon: a tool to visualize dynamically-allocated memory

    Hello everyone,

    I've been working on a project of mine for a little while now, called Aesalon. It is now beginning to become "stable", and I thought someone here might be interested in it.

    Rather than type it all out again, I will instead quote the RELEASE file for Aesalon . . .

    In one sentence, Aesalon is a tool to visualize, in real-time, the dynamically-allocated memory that another program has allocated. Aesalon currently only functions on x86_64 GNU/Linux systems, though it would be easily ported to x86 GNU/Linux, BSD, or any other POSIX-compliant system. Why hasn't it been ported yet, you ask? Well, because I'm lazy, and because my computer doesn't have anything other than x86_64 GNU/Linux distros installed.

    Aesalon is useful for memory-leak tracking (and it will be even more useful in the near future), and can also be used for profiling/optimization. Currently, Aesalon displays the memory data in two separate ways: a simple graph of active blocks over time, and other, what I term a "density" visualization, which is address space over time. Aesalon draws rectangles to denote blocks: the taller the block, the larger it is, the wider, the longer it was allocated for. This is the most useful visualization of the two. I'm also planning a few more, such as the ability to show which scope had the most activity, etc. However, that's for next week . . .
    Aesalon is hosted by gitorious, if you're interested. The full release notes include compilation instructions, if you are interested.

    Again, I'm mainly throwing this out here in case anyone is interested. Aesalon, as it stands, is mainly incomplete (there's a lot of inefficiencies in it, far too many linear-time operations for my liking . . .), but I thought I'd try and write this project in the spirit of FOSS: "release early, release often". To quote from the release notes, "[t]here's a reason this is tagged version 0.1.0 . . .".

    I'd attach a precompiled binary, but the maximum upload size CBoard supports is about 500KB, and the .tar.gz version of Aesalon is 2.4MB. Unfortunately, this means you'll have to compile it yourself if you're interested . . . sorry about that.

    Let me know what you think. Criticism welcomed.
    -- strange

    There is no Darkness in Eternity
    Only Light too dim for us to see

  2. #2
    spurious conceit MK27's Avatar
    Join Date
    Jul 2008
    Location
    segmentation fault
    Posts
    8,300
    Quote Originally Posted by strange View Post
    Aesalon is hosted by gitorious, if you're interested.
    I am, but I'd start griping to gitorious now about this. It's a pet peeve of mine I occasionally notice, usually on over-glitzed corporate sites where function has taken a back seat to style -- some idiot fails to account for the fact that you should never ever base a div width on a font size, because browser users set minimums (I like being 20/20 and I want to stay that way). Notice the text is cut off on the right making it unreadable.

    Actually that entire site is largely dsyfunctional IMO. I'd love to download a tarball of your project but I have little or no interest in git, so have not been able to figure out how to do so. Git it? I couldn't even download the code.

    Why don't you post a nice, simple link to a tarball of the stable version? It would be appreciated. If you are going to release something, release it, make it easily downloadable, etc -- don't ask people to mess with your chosen VCS as if they were already fans or members of your dev team.
    Last edited by MK27; 04-01-2010 at 06:52 PM.
    C programming resources:
    GNU C Function and Macro Index -- glibc reference manual
    The C Book -- nice online learner guide
    Current ISO draft standard
    CCAN -- new CPAN like open source library repository
    3 (different) GNU debugger tutorials: #1 -- #2 -- #3
    cpwiki -- our wiki on sourceforge

  3. #3
    Registered User
    Join Date
    Dec 2009
    Location
    /dev/pts/0
    Posts
    29
    don't ask people to mess with your chosen VCS as if they were already fans or members of your dev team.
    Rebuke accepted, and I apologize. I've attached a tarball of the source code. It's in .tar.gz format, renamed to .txt so I can upload it. There are compilation instructions inside the archive, in the file called RELEASE.

    You'll need cmake and the Qt4 dev libraries to compile it. One person reported a compilation error on Ubuntu regarding one of the includes -- please let me know if you have any problems.

    EDIT: Gitorious apparently also provides tarball generation service. The link for the most recent stable version tarball.
    Last edited by strange; 04-01-2010 at 08:17 PM.
    -- strange

    There is no Darkness in Eternity
    Only Light too dim for us to see

  4. #4
    Registered User
    Join Date
    Apr 2010
    Posts
    1

    Thumbs up

    Quote Originally Posted by strange View Post
    Rebuke accepted, and I apologize. I've attached a tarball of the source code. It's in .tar.gz format, renamed to .txt so I can upload it. There are compilation instructions inside the archive, in the file called RELEASE.

    You'll need cmake and the Qt4 dev libraries to compile it. One person reported a compilation error on Ubuntu regarding one of the includes -- please let me know if you have any problems.

    EDIT: Gitorious apparently also provides tarball generation service. The link for the most recent stable version tarball.
    Hi I'm a noobie in all these stuff, so please be patient with me...

    I did as you instructed in readme file and end up with these errors:

    [ 0%] Built target automated_test
    [ 1%] Built target calloc_test
    [ 2%] Built target cpp_new_test
    [ 3%] Built target fib_benchmark
    [ 4%] Built target interactive_malloc_test
    [ 5%] Built target malloc_test
    [ 6%] Built target realloc_test
    [ 7%] Built target sleep_malloc
    [ 8%] Built target sleep_test
    [ 9%] Building CXX object monitor/src/CMakeFiles/aesalon.dir/asm/Instruction.cpp.o
    /home/varnado/my/dev/general/cpptest/aesalon/monitor/src/asm/Instruction.cpp: In member function ‘void ASM::Instruction::handle_opcode(std::string, std::string)’:
    /home/varnado/my/dev/general/cpptest/aesalon/monitor/src/asm/Instruction.cpp:62: error: ‘RAX’ is not a member of ‘ASM::Register’
    make[2]: *** [monitor/src/CMakeFiles/aesalon.dir/asm/Instruction.cpp.o] Error 1
    make[1]: *** [monitor/src/CMakeFiles/aesalon.dir/all] Error 2
    make: *** [all] Error 2

    please help btw I use Ubuntu 9.10

  5. #5
    Registered User
    Join Date
    Dec 2009
    Location
    /dev/pts/0
    Posts
    29
    As I mentioned in my response to your email, the problem is that Aesalon does not currently support 32-bit platforms, only 64-bit platforms.

    However, I am working on implementing 32-bit support at the moment. I'll let you know when I'm finished.
    -- strange

    There is no Darkness in Eternity
    Only Light too dim for us to see

  6. #6
    Registered User
    Join Date
    Jan 2008
    Posts
    290
    I'm curious about what it looks like. Got any screenshots? I don't have a Linux system to try it on currently (at least not one with a monitor attached).

  7. #7
    Registered User
    Join Date
    Dec 2009
    Location
    /dev/pts/0
    Posts
    29
    Well, I've been working on Aesalon over the past few days, and I have implemented several more features in Aesalon. The two major points:
    - 32-bit support
    - Much faster rendering

    Aesalon works on a 32-bit system of mine now. Hopefully that means it will be a little bit more useful as well . . . as before, a tarball of the most recent stable version of Aesalon can be downloaded from here.

    As for screenshots: I'll take some and upload them. I should have thought of that before . . . sorry.
    Last edited by strange; 04-09-2010 at 07:37 PM.
    -- strange

    There is no Darkness in Eternity
    Only Light too dim for us to see

  8. #8
    Registered User
    Join Date
    Dec 2009
    Location
    /dev/pts/0
    Posts
    29
    Here are two screenshots of Aesalon running on two separate programs. The x-axis is time, the y-axis is address space. In other words, the taller a rectangle, the larger the block it represents; the wider, the longer said block was allocated for.

    The first is the test called "automated_test", for archaic reasons that I can no longer recall. I haven't bothered to rename the test, since the name works perfectly well. It shows 50 blocks of memory being allocated, then freed.

    The second is a zoom-in of Aesalon running on itself. It's a little more interesting, but still doesn't do the actual running program justice . . .
    -- strange

    There is no Darkness in Eternity
    Only Light too dim for us to see

  9. #9
    Registered User
    Join Date
    Dec 2009
    Location
    /dev/pts/0
    Posts
    29
    I've pushed a few small changes to the stable branch, including some bug fixes and speed optimizations (Aesalon should take ~2% less time to execute a program now). If you downloaded Aesalon before, I highly recommend you get this version; a fairly serious and common segfault was fixed.

    I'm currently working on transferring the actual scope that the block was allocated in, rather than an address. So, rather than "0x40085f", it'll say something like "main+0x105". Once I implement a DWARF parser, that could turn into "test.c:15" . . . I'll let you know when I've finished that.
    -- strange

    There is no Darkness in Eternity
    Only Light too dim for us to see

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Memory Analyzer Tool
    By edesign in forum C Programming
    Replies: 9
    Last Post: 06-08-2009, 12:54 PM
  2. dynamically allocated strings??
    By CS_Student8337 in forum C Programming
    Replies: 18
    Last Post: 03-19-2009, 05:14 AM
  3. Problems with shared memory shmdt() shmctl()
    By Jcarroll in forum C Programming
    Replies: 1
    Last Post: 03-17-2009, 10:48 PM
  4. Any Memory Leak Checking Tool?
    By George2 in forum C Programming
    Replies: 4
    Last Post: 06-21-2006, 11:02 PM

Tags for this Thread