Как я могу отладить файл дампа для рабочего процесса ASPNET в Visual Studio 2010? - PullRequest
2 голосов
/ 23 августа 2010

Я столкнулся с особенно неприятной ошибкой, когда веб-сайт ASP.NET пытается вызвать метод службы WCF, который отправляет IIS в смертельную спираль ... что в конечном итоге приводит к пулу связанных приложений. Он никогда не попадет в наш код log4net, который выводит необработанные исключения.

Я наблюдал, как процессы w3wp.exe ускоряются и умирают, поэтому я решил, что при завершении работы я дам файл дампа, используя ProcDump из SysInternals , используя следующую команду:

procdump -e -t -ma <PID> aspnet.dmp

Это дает мне файл мини-дамп, который я могу открыть в VS2010, и он показывает, что информация о куче присутствует. Что интересно:

Minidump Summary

Итак, на этом этапе я пытаюсь установить путь к символу, который является папкой bin для этого конкретного веб-сайта. Я скопировал его с соответствующего сервера. Тем не менее, у меня все еще есть возможность отладки только с помощью Native Only, и когда я это делаю , он не может найти ни одного из соответствующих символов .

Вот мои настройки местоположения PDB:

PDB Options

Я не уверен, что это потому, что стек вызовов, похоже, останавливается где-то в Windows DLL ...? Вот экран окна стека вызовов.

Call Stack

В любом случае, мой окончательный вопрос - , следую ли я по соответствующему пути, чтобы найти источник этого исключения, и, если да, что мне не хватает ? Похоже, что это неуправляемый код, но я все равно хотел бы увидеть последний управляемый вызов, прежде чем все взорвется.

Также, если это полезно, веб-сервер - Win2003 x86, мой компьютер - Win7 x64.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 18 сентября 2010

Я тоже с этим сталкивался. VS2010 не будет выполнять приятную, дружественную отладку файла дампа управляемого приложения, если это не была исполнимая сборка .NET 4.0.

1 голос
/ 23 августа 2010

Я всегда предпочитаю winDbg для анализа дампов. Кроме того, я бы посоветовал вам посмотреть Debug Diags от MSFT. Это служба Windows, которая будет контролировать ваше приложение и создавать дамп непосредственно перед сбоем. Это гарантирует, что ваш дамп содержит информацию, которая вам нужна. Получив дамп, загрузите его в WinDbg и воспользуйтесь инструментами в DLL-библиотеке расширения SOS, чтобы найти вашу проблему.

...