Мое приложение зависло, и анализ дампа windbg показывает, что все потоки находятся в приостановленном / незамерзшем состоянии. Что это значит? - PullRequest
3 голосов
/ 08 февраля 2012

Мое приложение-надстройка для outlook зависло, и анализ дампов зависания показывает, что все потоки находятся в приостановленном / незамерзшем состоянии. Ошибки в средстве просмотра событий и мониторе процессов показывают сотни ошибок просмотра реестра и ошибок доступа к диску. Что означает состояние приостановки / размораживания потоков?

1 Ответ

2 голосов
/ 01 марта 2012

Справка F1 от WinDBG более подробно объясняет следующее, если вы ищете ссылку «Управление процессами и потоками» из команды «~ (Статус потока)» на вкладке «Указатель».Также имеется ссылка MSDN .

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

Приостановленные потокииметь счетчик приостановок, такой, что когда счетчик становится равным 0, возобновляет выполнение для этого потока, если это уместно, более 0 будет приостанавливать поток.

Как правило, когда вы присоединяете отладчик, он увеличивает число приостановок для каждого потока на 1, поскольку вы инвазивно отлаживаете приложение или достигли точки останова.

Таким образом, состояние «заморожено» / «заморожено» имеет значение только тогда, когда вы подключили отладчик и достигли точки останова, а состояние «приостановлено / не приостановлено» - это число приостановок для каждого потока при запуске приложения.

Надеюсь, что этопомогает.

...