.loadby sos clr - указанный модуль не найден - программирование

.loadby sos clr - указанный модуль не найден

Я пытаюсь понять, что такое исключение CLR, которое находится в моем дамп файле, но у меня возникла проблема:

0:000> .loadby sos clr
The call to LoadLibrary(C:\ProgramData\dbg\sym\clr.dll\5348A1EF9a0000\sos) failed, Win32 error 0n126
    "The specified module could not be found."

Я попытался посмотреть, что загружено, и я вижу:

0:000> lm
start             end                 module name
00000000`00190000 00000000`001a4000   MyTest   (deferred)             
00000000`77a00000 00000000`77afa000   user32     (deferred)             
00000000`77b00000 00000000`77c1f000   kernel32   (pdb symbols)          C:\ProgramData\dbg\sym\kernel32.pdb\CEE1211DAF10494CAFDDBE2C4232EAE82\kernel32.pdb
00000000`77c20000 00000000`77dca000   ntdll      (pdb symbols)          C:\ProgramData\dbg\sym\ntdll.pdb\8AAAEEE259C340FCADC53FAF9FEF22E92\ntdll.pdb
000007fe`f8950000 000007fe`f9ef1000   mscorlib_ni   (deferred)             
000007fe`f9f00000 000007fe`f9fd6000   MSVCR120_CLR0400   (deferred)             
000007fe`f9fe0000 000007fe`fa980000   clr        (pdb symbols)          C:\ProgramData\dbg\sym\clr.pdb\E3E0C76A7909454FB3C56B0C2CE5FFEB2\clr.pdb
000007fe`fa980000 000007fe`faa1d000   mscoreei T (pdb symbols)          C:\ProgramData\dbg\sym\mscoreei.pdb\6D65F80ABA3D403D8F6F7214972B9BBF2\mscoreei.pdb
000007fe`faa20000 000007fe`faa8f000   mscoree    (deferred)             
000007fe`fd800000 000007fe`fd80f000   CRYPTBASE   (deferred)             
000007fe`fdbb0000 000007fe`fdc1a000   KERNELBASE   (pdb symbols)          C:\ProgramData\dbg\sym\kernelbase.pdb\D396875654E9416CBA16E51F8B0A8B1E2\kernelbase.pdb
000007fe`fdd60000 000007fe`fde69000   msctf      (deferred)             
000007fe`fde70000 000007fe`fe073000   ole32      (deferred)             
000007fe`fe0b0000 000007fe`fe121000   shlwapi    (deferred)             
000007fe`fe310000 000007fe`fe3da000   usp10      (deferred)             
000007fe`fe3e0000 000007fe`fe47f000   msvcrt     (deferred)             
000007fe`fe480000 000007fe`fe48e000   lpk        (deferred)             
000007fe`fe590000 000007fe`fe5af000   sechost    (deferred)             
000007fe`fe600000 000007fe`fe62e000   imm32      (deferred)             
000007fe`fe630000 000007fe`fe697000   gdi32      (deferred)             
000007fe`fe910000 000007fe`fe9eb000   advapi32   (deferred)             
000007fe`ff800000 000007fe`ff92d000   rpcrt4     (deferred)

Глядя на clr:

0:000> lmvm clr
Browse full module list
start             end                 module name
000007fe`f9fe0000 000007fe`fa980000   clr        (pdb symbols)          C:\ProgramData\dbg\sym\clr.pdb\E3E0C76A7909454FB3C56B0C2CE5FFEB2\clr.pdb
    Loaded symbol image file: clr.dll
    Mapped memory image file: C:\ProgramData\dbg\sym\clr.dll\5348A1EF9a0000\clr.dll
    Image path: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll
    Image name: clr.dll
    Browse all global symbols  functions  data
    Timestamp:        Fri Apr 11 22:16:15 2014 (5348A1EF)
    CheckSum:         009A762B
    ImageSize:        009A0000
    File version:     4.0.30319.34209
    Product version:  4.0.30319.34209
    File flags:       8 (Mask 3F) Private
    File OS:          4 Unknown Win32
    File type:        2.0 Dll
    File date:        00000000.00000000
    Translations:     0409.04b0
    CompanyName:      Microsoft Corporation
    ProductName:      Microsoft® .NET Framework
    InternalName:     clr.dll
    OriginalFilename: clr.dll
    ProductVersion:   4.0.30319.34209
    FileVersion:      4.0.30319.34209 built by: FX452RTMGDR
    PrivateBuild:     DDBLD104
    FileDescription:  Microsoft .NET Runtime Common Language Runtime - WorkStation
    LegalCopyright:   © Microsoft Corporation.  All rights reserved.
    Comments:         Flavor=Retail

И затем согласно предложению @Thomas Weller:

0:000> lmf m clr
Browse full module list
start             end                 module name
000007fe`f9fe0000 000007fe`fa980000   clr      C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll

Путь (C:\Windows\Microsoft.NET\Framework64\v4.0.30319) существует на моем ПК и там SOS.dll внутри.

Дополнительная информация:

  • ld clr; .reload /f не помогает
  • Я не использовал .cordll для изменения путей загрузки CLR
  • .load C:\Windows\Microsoft.NET\Framework64\v4.0.30319\SOS.dll работает, но дольше набирать

Почему .loadby sos clr не работает для меня? (Я только что установил WinDbg из https://developer.microsoft.com/en-us/windows/hardware/windows-driver-kit), выбрав для установки "Инструменты отладки для Windows" у установщика)

4b9b3361

Ответ 1

Выяснил ответ, используя то, что я узнал из @Thomas Weller. Таким образом, по-видимому, "Путь к символьному файлу" в FileSymbol File Path очищается каждый раз, когда вы закрываете WinDbg, и без него .loadby sos clr создает ошибку, которую я получил. "Путь к символьному файлу" в FileSymbol File Path должен иметь такую ​​запись, как: srv*C:\windbg\websymbols (и, конечно, каталог должен существовать).

При открытии дампа сбоя он должен иметь следующий вывод: (Обратите внимание на строку: Symbol search path is: srv*C:\windbg\websymbols):

Microsoft (R) Windows Debugger Version 10.0.14321.1024 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.


Loading Dump File [C:\Users\XXXXXX\Desktop\AppCrash_XXXXXXXXXXXXX_d4c077fd50acba44bd2aceb966fe5424b98f3e_cab_9eb7d2f5\WERC4D4.tmp.hdmp]
User Mini Dump File: Only registers, stack and portions of memory are available


************* Symbol Path validation summary **************
Response                         Time (ms)     Location
Deferred                                       srv*C:\windbg\websymbols
Symbol search path is: srv*C:\windbg\websymbols
Executable search path is: 
Windows 7 Version 7601 (Service Pack 1) MP (4 procs) Free x64
Product: Server, suite: TerminalServer SingleUserTS
Machine Name:
Debug session time: Tue Aug  9 02:05:43.000 2016 (UTC - 4:00)
System Uptime: 79 days 17:08:17.121
Process Uptime: 0 days 0:00:06.000

С другой стороны, это то, что я имел раньше, и это означает, что вы забыли установить "Путь к символьному файлу" (обратите внимание на строку Symbol search path is: srv*)

Microsoft (R) Windows Debugger Version 10.0.14321.1024 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.


Loading Dump File [C:\Users\XXXXXX\Desktop\AppCrash_XXXXXXXXXXXXX_d4c077fd50acba44bd2aceb966fe5424b98f3e_cab_9eb7d2f5\WERC4D4.tmp.hdmp]
User Mini Dump File: Only registers, stack and portions of memory are available

Symbol search path is: srv*
Executable search path is: 
Windows 7 Version 7601 (Service Pack 1) MP (4 procs) Free x64
Product: Server, suite: TerminalServer SingleUserTS
Machine Name:
Debug session time: Tue Aug  9 02:05:43.000 2016 (UTC - 4:00)
System Uptime: 79 days 17:08:17.121
Process Uptime: 0 days 0:00:06.000

Ответ 2

Как упоминалось @Thomas Weller, это решение теперь работает:

.load C:\Windows\Microsoft.NET\Framework64\v4.0.30319\SOS.dll

Ответ 3

WER сгенерировал 2 файла в моем случае: triagedump.dmp(2 MiB) и memory.hdmp(400 MiB).

triagedump.dmp содержит только информацию об исключении, SOS не работает с ней.

memory.hdmp - minidump, SOS загрузил CLR успешно.