Cannot .loadby sos mscorwks or .loadby sos clr



我有一个.NET .86应用程序。 我正在尝试从 cdb 运行dumpdomain但不断收到错误。

关于这一点有很多问题,我尝试了几种变体:

C:Usersd.banksDocuments>cdb DoNothingx86.exe
Microsoft (R) Windows Debugger Version 10.0.17134.12 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.
CommandLine: DoNothingx86.exe
************* Path validation summary **************
Response                         Time (ms)     Location
Deferred                                       srv*C:SymbolsMicrosoft
*http://msdl.microsoft.com/download/symbols
Symbol search path is: srv*C:SymbolsMicrosoft
*http://msdl.microsoft.com/download/symbols
Executable search path is:
ModLoad: 00000000`002d0000 00000000`002d8000   image00000000`002d0000
ModLoad: 00007ff8`4f790000 00007ff8`4f960000   ntdll.dll
ModLoad: 00000000`77af0000 00000000`77c73000   ntdll.dll
ModLoad: 00000000`6dda0000 00000000`6ddf2000   C:WINDOWSSystem32wow64.dll
ModLoad: 00000000`6de10000 00000000`6de87000   C:WINDOWSSystem32wow64win.dll
(3e64.e4c): Break instruction exception - code 80000003 (first chance)
ntdll!LdrpDoDebuggerBreak+0x30:
00007ff8`4f862cc0 cc              int     3
0:000> .loadby sos.dll mscorwks
Unable to find module 'mscorwks'
0:000> .loadby sos mscorwks
Unable to find module 'mscorwks'
0:000> .loadby C:WindowsMicrosoft.NETFrameworkv4.0.30319SOS.dll mscorwks
Unable to find module 'mscorwks'
0:000> .loadby sos.dll clr
Unable to find module 'clr'
0:000> .loadby sos clr
Unable to find module 'clr'
0:000> .loadby C:WindowsMicrosoft.NETFrameworkv4.0.30319SOS.dll clr
Unable to find module 'clr'
0:000> .load C:WindowsMicrosoft.NETFrameworkv4.0.30319SOS.dll
The call to LoadLibrary(C:WindowsMicrosoft.NETFrameworkv4.0.30319SOS.dll) failed, Win32 error 0n193
"%1 is not a valid Win32 application."
Please check your debugger configuration and/or network access.
0:000> .load C:WindowsMicrosoft.NETFrameworkv4.0.30319SOS.dll clr
The call to LoadLibrary(C:WindowsMicrosoft.NETFrameworkv4.0.30319SOS.dll clr) failed, Win32 error 0n126
"The specified module could not be found."
Please check your debugger configuration and/or network access.

我尝试使用 x86 调试器:

Microsoft (R) Windows Debugger Version 10.0.17134.12 X86
Copyright (c) Microsoft Corporation. All rights reserved.
CommandLine: DoNothingx86.exe
************* Path validation summary **************
Response                         Time (ms)     Location
Deferred                                       srv*C:SymbolsMicrosoft
*http://msdl.microsoft.com/download/symbols
Symbol search path is: srv*C:SymbolsMicrosoft
*http://msdl.microsoft.com/download/symbols
Executable search path is:
ModLoad: 00930000 00938000   image00930000
ModLoad: 77af0000 77c73000   ntdll.dll
ModLoad: 77900000 779e0000   WOW64_IMAGE_SECTION
ModLoad: 733c0000 73419000   C:WINDOWSSysWOW64MSCOREE.DLL
ModLoad: 77900000 779e0000   C:WINDOWSSysWOW64KERNEL32.dll
ModLoad: 76a00000 76ba2000   C:WINDOWSSysWOW64KERNELBASE.dll
(1e98.2bb0): Break instruction exception - code 80000003 (first chance)
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for ntdll.dll -
eax=00000000 ebx=00000000 ecx=327c0000 edx=00000000 esi=00f326e8 edi=00bd7000
eip=77b96d5c esp=00cff2e4 ebp=00cff310 iopl=0         nv up ei pl zr na pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000246
ntdll!LdrInitShimEngineDynamic+0x71c:
77b96d5c cc              int     3
0:000> .loadby sos.dll mscorwks
Unable to find module 'mscorwks'
0:000> .loadby sos.dll clr
Unable to find module 'clr'
0:000> .loadby sos mscorwks
Unable to find module 'mscorwks'
0:000> .loadby sos clr
Unable to find module 'clr'

from

ModLoad: 00000000`6dda0000 00000000`6ddf2000   C:WINDOWSSystem32wow64.dll

我们可以看到这是一个 32 位进程,所以你需要 32 位 SOS。 32 位 SOS 仅适用于 32 位 WinDbg。

对于加载扩展,有 2 个命令。一个是.loadby,一个是.load。对于.loadby使用相对路径,对于.load使用完整路径。

对于.loadby,有 5 个选项:

.loadby sos mscorsvr
.loadby sos mscorwks
.loadby sos clr
.loadby sos coreclr
.loadby sos <somethingelse>

其中mscorsvr真的很旧(.NET CLR 1,服务器版本(,mscorwks很旧(.NET CLR 1和2,但仍然存在(,clr今天很常见(.NET CLR 4(,coreclr可能正在增加(UWP和Silverlight(,<somethingelse>很烦人(查看lm并找到看起来相似但附加数字的东西(。

主要问题是,您尝试在尚未加载 .NET 运行时时加载 SOS。等到 .NET 加载完毕,然后命令将起作用。在初始断点上这当然是不可能的。

sxe ld clr
sxe ld mscorwks
sxe ld coreclr
g

让应用程序运行,直到 .NET 可用

相关内容

  • 没有找到相关文章

最新更新