Информация об изменениях

Сообщение Re: WCF, (probably) livelock от 05.03.2015 21:56

Изменено 05.03.2015 22:28 breee breee

Здравствуйте, scale_tone, Вы писали:

_>Пора бы уже задать вопрос, и давайте начнем с простого (сложные, вида "а не баг ли это в .Net?" будут позже). Смотрю я на этот список потоков в отладчике, туплю и не знаю, как мне теперь понять, какой из них (и где именно) зациклился. Есть ли у кого-нибудь какие-нибудь идеи? Всем спасибо!


Не знаю поможет ли, но идея такая. Открыть свойства процесса в Process Explorer, вкладка Threads. Там для каждого потока есть User Time. По идее для ждущих потоков оно не меняется, для зациклившегося — увеличивается.
Учитывая, что процесс висит уже несколько суток, можно сразу искать поток с самым большим User Time.
Re: WCF, (probably) livelock
Здравствуйте, scale_tone, Вы писали:

_>Пора бы уже задать вопрос, и давайте начнем с простого (сложные, вида "а не баг ли это в .Net?" будут позже). Смотрю я на этот список потоков в отладчике, туплю и не знаю, как мне теперь понять, какой из них (и где именно) зациклился. Есть ли у кого-нибудь какие-нибудь идеи? Всем спасибо!


Не знаю поможет ли, но идея такая. Открыть свойства процесса в Process Explorer, вкладка Threads. Там для каждого потока есть User Time. По идее для ждущих потоков оно не меняется, для зациклившегося — увеличивается.
Учитывая, что процесс висит уже несколько суток, можно сразу искать поток с самым большим User Time.

Еще, с той же идеей, можно попробовать приаттачиться к процессу windbg (с галочкой Noninvasiv, т.к. один отладчик уже есть) и выполнить команду !runaway с неким интервалом.