Ben, I seem to have a catch 22 here -

If I'm on a debug break point in Codewrrior, the debug console doesn't respond.
But if I'm not at a debug break, then I can't Viuew memory.
Any thoughts?
- Jeff

Ben Combee wrote:

> "DIAMOND JEFF" <[EMAIL PROTECTED]> wrote in message
> news:38141@palm-dev-forum...
> >
> > Serves me right - I've used nothing dynamic so far but databases, and
> > sure enough, my code was robust.
> >
> > Now I broke down and finally used MemPtrNew and MemPtrFree, and I have a
> > memory leak (underlocked chunk).
> >
> > I'm using Codewarrior 7 under Windows.  Can anyone recommend a good way
> > to find a memory leak?
> >
> > I tried using the Palm Debug Console, but to be honest, I can't make
> > much sense out of the heap dump.
>
> Its pretty simple once you know what everything means.
>
> Lets say you debug when your program exits and you see the memory leak
> dialog.
>
> Now, open the console and do a hd 0.
>
> Look through the list for memory that belongs to your program.  These chunks
> will usually have owner #2 and a star at the front of the line.  Note that
> the CW debugger on Windows reverses the labels for lock and owner -- the
> first number shown is the owner.
>
> Say you have something that looks like
>
>  start    handle   localID   size   size  lck own flags
> -------------------------------------------------------
> *000046D4 00001B9C 00001B9D 00000C 000014  #2  #1    fM
>
> The first thing you can tell is that the block of memory starts at 0x46D4.
> So, if you do "Data/View Memory" from CW, you can enter that hex address and
> see the contents of the lost chunk.
>
> The second thing to notice is the size.  Here, the chunk is 0xC bytes == 12
> bytes.  You can use that along with the contents to try to guess where this
> memory was allocated by your program.
>
> Here, the lock count is 1 -- that means the chunk was allocated with
> MemHandleNew and is locked.  If its #15, it was allocated by MemPtrNew.
>
> Finally, the handle is 0x1B9C -- that means the MemHandle variable that goes
> with this would have the value 0x80001B9C.
>
> This last bit is useful for debugging code in the middle of a program.  If
> you've breaked somewhere and just have a handle that isn't locked, you can
> do a "hd 0", find the handle, then use that to get the address of the chunk
> that goes with the handle for viewing in the memory window.  It would be
> nice to automate this, but that's beyond the CW debugger for the time being.
>
> I hope this helps... I think I'll send this reply on to Warren to add to his
> FAQ.
>
> --
> Ben Combee
> Veriprise Wireless <http://www.veriprise.com>
>
> --
> For information on using the Palm Developer Forums, or to unsubscribe, please see 
>http://www.palmos.com/dev/tech/support/forums/


-- 
For information on using the Palm Developer Forums, or to unsubscribe, please see 
http://www.palmos.com/dev/tech/support/forums/

Reply via email to