Вопрос про дамп
От: SergASh  
Дата: 22.02.17 18:37
Оценка:
Привет всем!

Есть asp.net приложение, которое работало-работало, а потом вдруг стало периодически зажирать процессор на 10-15 минут.
На продакшен нас с отладочными "инициативами" не пускают, естественно. Дождались очередного припадка и сделали дамп
w3wp.exe через Task Manager и предоставили нам разбираться.

С дампами мне не доводилось иметь дела, поэтому если кто-то укажет толковую статью по этому поводу, буду очень признателен.

Пока есть два конкретных вопроса.

1. В студии открыт солюшен, из которого построена эта asp.net программа. Когда я открываю дамп, то вижу там множество
потоков, и среди них есть такие, у которых в стеке вызовов есть наш код, ну то есть там видно имя модуля, класса и метода.
Я ожидал, что когда ткнешь в него, то откроется исходник и можно будет на значения параматеров посмотреть. Но показывает
оно только дизассемблированный код. Как это исправить?

2. Как мне увидеть какой поток занимал процессор?
Все потоки, где есть наш код, имеют наверху стека вызов NtWaitForSingleObject, то есть ждут, что ставит меня в тупик.

В общем, совет умный нужен
Спасибо.
Re: Вопрос про дамп
От: rm822 Россия  
Дата: 23.02.17 14:09
Оценка: 6 (2)
SAS>1. В студии открыт солюшен, из которого построена эта asp.net программа. Когда я открываю дамп, то вижу там множество
SAS>потоков, и среди них есть такие, у которых в стеке вызовов есть наш код, ну то есть там видно имя модуля, класса и метода.
SAS>Я ожидал, что когда ткнешь в него, то откроется исходник и можно будет на значения параматеров посмотреть. Но показывает
SAS>оно только дизассемблированный код. Как это исправить?

Исходники должны быть по тому же пути что и при сборке, пути к ним в PDB-шнике при сборке зашиваются
Как происходит матчинг см тут http://www.debuginfo.com/articles/debuginfomatch.html

SAS>2. Как мне увидеть какой поток занимал процессор?

Вопрос предполагает что он был один и до сих пор жив, что не факт
Ставишь windbg http://codemachine.com/downloads.html
Открываешь дамп, выполняешь !runaway

SAS>Все потоки, где есть наш код, имеют наверху стека вызов NtWaitForSingleObject, то есть ждут, что ставит меня в тупик.

Либо не повезло, либо жрал не ваш код.
Снимите 20 минидампов
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.