Я пытаюсь найти способ создания аварийного дампа управляемого исполняемого файла .Net, а затем открыть полученный файл .dmp в Visual Studio 2008. Я хочу увидеть, где в исходном коде генерируется исключение, стек вызовови значение переменных в функциях в стеке.
Чтобы упростить задачу, я написал мини-приложение, которое вылетает:
...
class Program
{
static void Main(string[] args)
{
int a = 2; //Variable I want to see value for when debugging
if (!File.Exists(@"C:\Crasher\bin\Debug\file.txt")) //Doesn't exist
throw new FileNotFoundException(); //Unhandled exception thrown
}
}
...
Я сделал сборку DEBUG и запустил ее из-за пределов Visual Studio.В windbg я нажал «Присоединить к процессу» и выбрал свое приложение.Затем я набрал в окне команды windbg:
.dump /ma C:\crasher\bin\debug\dump.dmp
Затем я открыл файл .dmp в Visual Studio.Я пошел в Инструменты-> Параметры-> Отладка-> Символы и добавил следующее:
http://msdl.microsoft.com/download/symbols (saved to local folder)
Это дает мне символы для всех библиотек DLL, перечисленных в окне модулей (например, Kernel32.dll, gdi32.dll).- Я думаю, что все они в списке являются родными) за исключением mscorlib.ni.dll.Microsoft Symbol Server дает мне сборки символов и .pdbs для mscorlib.dll, но НЕ mscorlib.ni.dll.
Когда я пытаюсь загрузить .pdb для самого .exe, он говорит, что он не совпадаетприложение.Я думаю, это потому, что .exe управляется, и у нас пока нет символов для всего нативного кода под ним - то есть, если бы я мог получить сборку символов и pdb для mscorlib.ni.dll, это сработало бы.
Правильно ли это рассуждение?Я что-то пропустил?
В любом случае, почему mscorlib.ni.dll недоступен на сервере Microsoft Symbol Server, где я могу получить информацию о символах и есть ли что-то еще, что я должен знать для отладки управляемого кода через сбой?дампы в Visual Studio.
Большое спасибо - любая помощь будет оценена.
Фил Уиттингтон