debugging a dll
Dan Timis
timis at museresearch.com
Fri Jul 30 19:17:42 CDT 2004
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
?_Grow@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AAE_
NI_N at Z...
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
?onEvent at Application@UIA at NI@@MAE_NIPAVEventData at 23@@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.
More information about the wine-devel
mailing list