Hi,
Someone sent me a debug version of a Windows dll and a map file. I'm not a Windows programmer, and I'm not sure how to use the map fiile. For instance, I get a runtime error dialog. With backtrace in winedbg I get this:
...
29 0x400bf58d (NTDLL.DLL.RtlRaiseException+0x5 in NTDLL.DLL) (ebp=4083f9dc)
30 0x100771e9 (LIBDEBUG.DLL.EntryPoint+0x1609 in LIBDEBUG.DLL) (ebp=4083fa1c)
31 0x10097138 (LIBDEBUG.DLL.NIUIAEntry+0x1ad8 in LIBDEBUG.DLL) (ebp=4083fa8c)
32 0x100012b2 (LIBDEBUG.DLL..text+0x2b2 in LIBDEBUG.DLL) (ebp=4083fbf8)
...
I assume that everything above NTDLL.DLL.RtlRaiseException is just code to put up the dialog box, and that the problem is at 0x100771e9 (LIBDEBUG.DLL.EntryPoint+0x1609...
If I look for 0x100771e9 in the map file, the closest thing I find is this:
0001:00076ed0 _realloc 10077ed0 f LIBCMTD:dbgheap.obj
0001:00076f00 __realloc_dbg 10077f00 f LIBCMTD:dbgheap.obj
0001:000774b0 __expand 100784b0 f LIBCMTD:dbgheap.obj
0001:000774e0 __expand_dbg 100784e0 f LIBCMTD:dbgheap.obj
Am I correct to assume that realloc_dbg throws an exception?
If I look for 0x100012b2 (LIBDEBUG.DLL..text+0x2b2), the closest I find is:
0001:000011d0 [EMAIL PROTECTED]@[EMAIL PROTECTED]@std@@[EMAIL PROTECTED]@2@@std@@AAE_ [EMAIL PROTECTED]
That would make sense, we are trying to grow a string, calling realloc, etc. The entry in the middle:
31 0x10097138 (LIBDEBUG.DLL.NIUIAEntry+0x1ad8 in LIBDEBUG.DLL) (ebp=4083fa8c)
points to:
0001:00097140 [EMAIL PROTECTED]@[EMAIL PROTECTED]@@[EMAIL PROTECTED]@@Z ...
I don't understand how this relates to the other two.
Are there any tools that could help understand better what's going on? Are there any tools to demangle the C++ names? I tried c++filt and not surprisingly it did not understand these symbols.
Thanks,
Dan Timis Muse Research, Inc.