2016-11-23 2 views
0

Я пытаюсь выяснить, что вызывает исключения для «.NET CLR Exceptions # of Exceps Thrown/sec». Следуйте инструкциям в How to figure out cause of high number of exceptions.Ошибка mscorwks.dll для команды dumpheap

Я был в состоянии получить дамп, но я получаю сообщение об ошибке при попытке выполнить WindDg

!dumpheap -stat -type Exception 

Не удалось найти во время выполнения DLL (Mscorwks.dll), 0x80004005

Машина Я взял дамп, был windows 2012R2 64bit, я взял свалку процесса w3wp. Я использовал procdump64.exe, чтобы взять дамп. Для пакета символов я использовал Windows RT 8.1 ARM, Windows 8.1 and Windows Server 2012 R2

Я бегу WinDbg на моем Windows 10 Desktop

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


Loading Dump File [C:\Users\kumar\Desktop\w3wp.exe_161122_083122\w3wp.exe_161122_083122.dmp] 
User Mini Dump File with Full Memory: Only application data is available 

Comment: ' 
*** procdump64.exe 2348 -ma -s 5 -p "\.NET CLR Exceptions(w3wp)\# of Exceps Thrown/sec" 100 
*** Counter "# of Exceps Thrown/sec" exceeded 100 for 5 seconds. Value: 220' 

************* Symbol Path validation summary ************** 
Response       Time (ms)  Location 
OK            E:\Symbols 
Symbol search path is: E:\Symbols 
Executable search path is: 
Windows 8.1 Version 9600 MP (2 procs) Free x64 
Product: Server, suite: TerminalServer DataCenter SingleUserTS 
Built by: 6.3.9600.17031 (winblue_gdr.140221-1952) 
Machine Name: 
Debug session time: Tue Nov 22 14:01:23.000 2016 (UTC + 5:30) 
System Uptime: 13 days 23:42:27.204 
Process Uptime: 0 days 16:40:05.000 
................................................................ 
................................................................ 
................................................................ 
.................................................... 
Loading unloaded module list 
..................................... 
*** ERROR: Symbol file could not be found. Defaulted to export symbols for ntdll.dll - 
*** ERROR: Symbol file could not be found. Defaulted to export symbols for KERNELBASE.dll - 
ntdll!ZwWaitForSingleObject+0xa: 
00007ffe`f39206fa c3    ret 
0:000> .load C:\Windows\Microsoft.NET\Framework\v2.0.50727\sos.dll 
The call to LoadLibrary(C:\Windows\Microsoft.NET\Framework\v2.0.50727\sos.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:\Windows\Microsoft.NET\Framework64\v2.0.50727\sos.dll 
0:000> !dumpheap -stat -type Exception 
Failed to find runtime DLL (mscorwks.dll), 0x80004005 
Extension commands need mscorwks.dll in order to have something to do. 
0:000> .loadby sos mscorwks 
Unable to find module 'mscorwks' 
0:000> .loadby sos clr 
The call to LoadLibrary(D:\Windows\Microsoft.NET\Framework64\v4.0.30319\sos) failed, Win32 error 0n126 
    "The specified module could not be found." 
Please check your debugger configuration and/or network access. 
+0

Это вероятный результат на Win10, он больше не имеет версии среды исполнения версии v2.0.50272. Так что никаких sos.dll и mscorwks.dll. 6 лет - это много собачьей жизни в бесплатном программном обеспечении. Используйте Панель управления> Программы и функции> Включите или отключите функции Windows> отметьте флажок «.NET Framework 3.5», чтобы установить его. Надеемся, что версия DAC - это совпадение, если не сообщите пользователю, чтобы он обновил свою машину. –

+1

@HansPassant: Я бы сказал, что дамп содержит .NET 4, так как команда '.loadby sos clr' почти преуспела. Таким образом, это скорее всего не проблема .NET 2. –

ответ

-2

При использовании WinDBG с .NET/SOS, это рекомендуется сделать анализ на том же сервере, который сгенерировал дамп или как можно ближе к его воспроизведению (например, с изображения).

Даже различные уровни патчей фреймов могут привести к сбоям, поэтому на самом деле не стоит прилагать усилий для борьбы с рекомендацией, основанной на моем опыте.

+0

Удовлетворительный факт: расширение «SOS» отладки расширяет его имя из кодового имени для .net до его первоначальной версии. В то время .net был известен как «Молния», а инструмент внутренней отладки назывался «Strike». Когда команда создает общедоступную версию расширения на основе оригинала, они называют ее SOS: Son of Strike. –

1

Есть несколько проблем в вашей установке:

  1. даже основные символы, такие как NTDLL не могут быть найдены. Что-то с загруженными вами символами не работает должным образом. Это сделает все ваши результаты сомнительными. См How to set up symbols in Windbg

  2. Ваш процесс не использует .NET2, он использует .NET 4. Вы можете увидеть это из-за того, что он нашел путь, где он искал SOS

    D: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ sos

    Возможно, проблема не связана с установкой Windows на D :. Используйте полный путь для загрузки расширения SOS для .NET 4.

    Используйте lm m clr и lm m mscorwks и lm m coreclr, чтобы узнать, какая версия .NET была загружена, прежде чем загружать произвольное расширение.

  3. Что касается файлов ЦАП: после настройки символов используйте !analyze -v. Я видел, как это загрузили необходимые файлы mscordacwks.

    • Если это не помогает, получите файлы с оригинальной машины.Вы можете использовать mscordacwks collector (отказ от ответственности: это инструмент, который я написал именно для этой цели)

    • , если это не возможно, вы можете посмотреть на mscordacwks and sos archive (отказ от ответственности: коллекция таких файлов, сделанных мной)

  4. Если отладочная DLL не может быть загружена (%1 is not a valid Win32 application), это связано с несоответствием биений. Используйте 64-разрядную версию WinDbg для анализа 64-битного дампа сбоя и 32-разрядной версии WinDbg для 32-разрядных аварийных дампов. Используйте 64-битные расширения в 64-битных WinDbg и 32-битных расширениях в 32-битном WinDbg.

Смежные вопросы