Писал сложную форму на Silverlight и когда дописал, с ужасом обнаружил, что у меня где-то происходит утечка памяти. Волноваться я не стал, а снял несколько дампов на 3,5 гигабайта и хотел было в WinDbg выяснить в чём собственно дело, но SOS упорно посылал меня на любую из команд.
Дело в том, что Silverlight это x86, поэтому, как только мы загрузим дамп в WinDbg x86, то надо явно сказать, что работать мы будем 32х битном режиме.
Волшебное слово:
!wow64exts.sw
Пример:
.loadby sos coreclr
.chain
!wow64exts.sw
Дальше работаем как обычно.
Have fun
Microsoft ® Windows Debugger Version 6.12.0002.633 X86
Copyright © Microsoft Corporation. All rights reserved.
Loading Dump File [D:\Dumps\Hang_Mode\FULLDUMP_HangMode_IEXPLORE.EXE.dmp]
User Mini Dump File with Full Memory: Only application data is available
Comment: 'HangMode'
Symbol search path is: symsrv*symsrv.dll*c:\Program Files\Debugging Tools for Windows (x64)\symbols*http://msdl.microsoft.com/download/symbols
Executable search path is:
Windows 7 Version 7600 MP (4 procs) Free x64
Product: WinNt, suite: SingleUserTS
Machine Name:
Debug session time:
System Uptime:
Process Uptime:
................................................WARNING: rsaenh overlaps cryptsp
.......WARNING: IPHLPAPI overlaps wow64cpu
.WARNING: winnsi overlaps dnsapi
....WARNING: rtutils overlaps rasman
…
WARNING: authz overlaps PeerDist
......WARNING: version overlaps apphelp
..WARNING: FWPUCLNT overlaps rasadhlp
.WARNING: AcroIEHelperShim overlaps mswsock
........WARNING: msls31 overlaps mlang
.........WARNING: winmm overlaps oleacc
…
This dump file has an exception of interest stored in it.
The stored exception information can be accessed via .ecxr.
(df4.1d60): Wake debugger — code 80000007 (first/second chance not available)
*** WARNING: symbols timestamp is wrong 0x4a5bdf57 0x4a5be125 for wow64cpu.dll
wow64cpu!CpupSyscallStub+0x9:
00000000`755a2dd9 c3 ret
0:000> .loadby sos coreclr
0:000> .chain
Extension DLL search Path:
C:\Program Files (x86)\Debugging Tools for Windows (x86)\WINXP
Extension DLL chain:
C:\Program Files (x86)\Microsoft Silverlight\4.0.50401.0\sos: image 4.0.50401.0, API 1.0.0, built Thu Apr 01 09:10:00 2010
[path: C:\Program Files (x86)\Microsoft Silverlight\4.0.50401.0\sos.dll]
dbghelp: image 6.12.0002.633, API 6.1.6, built Mon Feb 01 23:08:26 2010
[path: C:\Program Files (x86)\Debugging Tools for Windows (x86)\dbghelp.dll]
ext: image 6.12.0002.633, API 1.0.0, built Mon Feb 01 23:08:31 2010
[path: C:\Program Files (x86)\Debugging Tools for Windows (x86)\winext\ext.dll]
exts: image 6.12.0002.633, API 1.0.0, built Mon Feb 01 23:08:24 2010
[path: C:\Program Files (x86)\Debugging Tools for Windows (x86)\WINXP\exts.dll]
uext: image 6.12.0002.633, API 1.0.0, built Mon Feb 01 23:08:23 2010
[path: C:\Program Files (x86)\Debugging Tools for Windows (x86)\winext\uext.dll]
ntsdexts: image 6.1.7650.0, API 1.0.0, built Mon Feb 01 23:08:08 2010
[path: C:\Program Files (x86)\Debugging Tools for Windows (x86)\WINXP\ntsdexts.dll]
0:000> !wow64exts.sw
Switched to 32bit mode
Дело в том, что Silverlight это x86, поэтому, как только мы загрузим дамп в WinDbg x86, то надо явно сказать, что работать мы будем 32х битном режиме.
Волшебное слово:
!wow64exts.sw
Пример:
.loadby sos coreclr
.chain
!wow64exts.sw
Дальше работаем как обычно.
Have fun
Microsoft ® Windows Debugger Version 6.12.0002.633 X86
Copyright © Microsoft Corporation. All rights reserved.
Loading Dump File [D:\Dumps\Hang_Mode\FULLDUMP_HangMode_IEXPLORE.EXE.dmp]
User Mini Dump File with Full Memory: Only application data is available
Comment: 'HangMode'
Symbol search path is: symsrv*symsrv.dll*c:\Program Files\Debugging Tools for Windows (x64)\symbols*http://msdl.microsoft.com/download/symbols
Executable search path is:
Windows 7 Version 7600 MP (4 procs) Free x64
Product: WinNt, suite: SingleUserTS
Machine Name:
Debug session time:
System Uptime:
Process Uptime:
................................................WARNING: rsaenh overlaps cryptsp
.......WARNING: IPHLPAPI overlaps wow64cpu
.WARNING: winnsi overlaps dnsapi
....WARNING: rtutils overlaps rasman
…
WARNING: authz overlaps PeerDist
......WARNING: version overlaps apphelp
..WARNING: FWPUCLNT overlaps rasadhlp
.WARNING: AcroIEHelperShim overlaps mswsock
........WARNING: msls31 overlaps mlang
.........WARNING: winmm overlaps oleacc
…
This dump file has an exception of interest stored in it.
The stored exception information can be accessed via .ecxr.
(df4.1d60): Wake debugger — code 80000007 (first/second chance not available)
*** WARNING: symbols timestamp is wrong 0x4a5bdf57 0x4a5be125 for wow64cpu.dll
wow64cpu!CpupSyscallStub+0x9:
00000000`755a2dd9 c3 ret
0:000> .loadby sos coreclr
0:000> .chain
Extension DLL search Path:
C:\Program Files (x86)\Debugging Tools for Windows (x86)\WINXP
Extension DLL chain:
C:\Program Files (x86)\Microsoft Silverlight\4.0.50401.0\sos: image 4.0.50401.0, API 1.0.0, built Thu Apr 01 09:10:00 2010
[path: C:\Program Files (x86)\Microsoft Silverlight\4.0.50401.0\sos.dll]
dbghelp: image 6.12.0002.633, API 6.1.6, built Mon Feb 01 23:08:26 2010
[path: C:\Program Files (x86)\Debugging Tools for Windows (x86)\dbghelp.dll]
ext: image 6.12.0002.633, API 1.0.0, built Mon Feb 01 23:08:31 2010
[path: C:\Program Files (x86)\Debugging Tools for Windows (x86)\winext\ext.dll]
exts: image 6.12.0002.633, API 1.0.0, built Mon Feb 01 23:08:24 2010
[path: C:\Program Files (x86)\Debugging Tools for Windows (x86)\WINXP\exts.dll]
uext: image 6.12.0002.633, API 1.0.0, built Mon Feb 01 23:08:23 2010
[path: C:\Program Files (x86)\Debugging Tools for Windows (x86)\winext\uext.dll]
ntsdexts: image 6.1.7650.0, API 1.0.0, built Mon Feb 01 23:08:08 2010
[path: C:\Program Files (x86)\Debugging Tools for Windows (x86)\WINXP\ntsdexts.dll]
0:000> !wow64exts.sw
Switched to 32bit mode