Отладка зависания приложения (бесконечный цикл) с использованием дампаC#

Место общения программистов C#
Ответить
Anonymous
 Отладка зависания приложения (бесконечный цикл) с использованием дампа

Сообщение Anonymous »

Можно ли отладить бесконечный цикл в приложении .NET, создав файл дампа и затем попытавшись открыть его в Visual Studio?
Рассмотрим следующий код:

Код: Выделить всё

while (fileContents.Length < charNum + 1)
{
fileContents = File.ReadAllText(_filePath);
}
Я сделал так, чтобы файл, который он пытается прочитать, содержал только 5 символов, а это значит, что он застрянет в этом цикле. И, как и предполагалось, мое приложение зависает.
Поэтому я использую диспетчер задач, чтобы создать дамп программы, перенести его на свой компьютер разработчика и открыть в Visual Studio, где у меня также есть exe, pdb и исходный код.
Но когда я пытаюсь отладить, я получаю:

mscrolib.ni.pdb не загружен
mscorlib.ni.pdb содержит отладочную информацию, необходимую для поиска исходного кода модуля

Очевидно Я не могу получить этот PDB, потому что это собственный образ, созданный ngen.exe. Честно говоря, меня это не слишком беспокоит (я вижу File.ReadAllText в дизассемблере, поэтому предполагаю, что именно поэтому он там остановился), я просто хочу посмотреть, где он остановился в моем собственном коде, и отладить его.
Можно ли как-нибудь это сделать? Я пробовал просмотреть стек вызовов, но получил только следующее:

[Внешний код]
mscorlib .ni.dll![Кадры ниже могут быть неправильными и/или отсутствовать, встроенный отладчик пытается пройти через стек управляемых вызовов] Неизвестно

Просмотр тем дает мне 7 потоки, и это «Основной поток», остальные (рабочие потоки) — это ntdll.dll, clr.dll и combase.dll — ни один из них не содержит полезной информации, поэтому я чувствую, что уже просматриваю правильный поток.
Редактировать
Итак, я открыл окно «Модули» в отладчике и увидел, что каждый модуль имеет статус символа = «Символы загружены». ', за исключением моего приложения и mscorlib.ni.dll! Теперь, когда я пытаюсь загрузить символы для своего приложения, я просматриваю и открываю файл pdb из исходной сборки и получаю сообщение об ошибке:

В этой папке не найден соответствующий файл символов.

Но это файл символов из этого .exe!

Подробнее здесь: https://stackoverflow.com/questions/790 ... using-dump
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»