c # поток в 100% процессоре - PullRequest
       4

c # поток в 100% процессоре

0 голосов
/ 12 апреля 2011

У меня сложная система с несколькими потоками. иногда я вижу приложение в 100% процессоре и заставляю перезапускать систему. Я понятия не имею, какой поток вызвал это и какой код вызвал это. Мне нужно что-то, что даст мне состояние каждого потока в системе (т. Е. В какой строке находится поток), чтобы я мог найти, какой код вызывает 100% CPU

(в Java у вас есть дамп kill kill -3, который дает вам состояние каждого потока)

Можете ли вы помочь, пожалуйста?

Ответы [ 7 ]

3 голосов
/ 12 апреля 2011

В блоге Тесс есть несколько отличных руководств по отладке, в том числе: .NET Hang Debugging Walkthrough

2 голосов
/ 12 апреля 2011

Люди предлагали мне Process Explorer мне раньше.

1 голос
/ 26 апреля 2011

Используйте VS отладчик, чтобы присоединиться к вашему процессу, а затем нажмите «перерыв» (символ паузы), чтобы прервать выполнение. В этом состоянии вы можете открыть окно «Отладка» под названием «Потоки», в котором должно быть указано состояние каждого потока и какая строка в данный момент выполняется. На этом этапе также полезно давать явные имена вашим потокам при их отладке.

1 голос
/ 26 апреля 2011

Я обнаружил, что в подобных случаях это один из лучших инструментов на сегодняшний день в Microsoft IntelliTrace.Это позволяет вести историческую отладку и даст вам состояние всех потоков и т. Д., Когда вы прервете выполнение.

К сожалению, он доступен только в выпуске Visual Studio 2010 Ultimate, но если это действительно серьезная проблема и у вас нет этого выпуска, вы всегда можете загрузить 30-дневную пробную версию.

1 голос
/ 12 апреля 2011

Вы можете использовать отладчик, чтобы сломать, а затем узнать, что делают все потоки.(Добавьте панель инструментов «Местоположение отладки» в Visual Studio)

Другой вариант - удалить все потоки по одному и найти виновного.

0 голосов
/ 26 апреля 2013

Вы можете использовать профилировщик, как visual vm, для лучшей отладки поведения потоков в вашем приложении.

0 голосов
/ 16 мая 2011

Я считаю, что в 99% случаев (по крайней мере, для меня) это происходит, потому что я случайно делаю цикл бесконечным, когда я не хочу делать это так, или перед циклом должно быть не менее нескольких миллисекунд сна.продолжается.

...