Завис процесс в Windows: есть ли способ узнать почему?


11

Я попытался напечатать документ словом, и слово застыло. Могу ли я узнать, какого ресурса он ждет?

Я использую Windows XP и Word 2007 (хотя я думаю, что ответ не зависит от процесса, который замерз)


1
Натан, я думаю, ты дважды написал, superuser.com/questions/10085 .
Джеймс МакМэхон

Я сделал! Как неловко!
Натан Феллман

Ответы:


13

Это требует немного технических знаний, но можно анализировать зависания с помощью (бесплатного) отладчика Windows WinDbg . Требуется некоторая работа по установке, присоединению к процессу и настройке символов (очень важно!), Но затем вы можете найти причину зависания с помощью одной команды WinDbg (выделено мое):

анализировать -v -hang

Это тот, с которым я раньше не сталкивался. Запустите это после открытия дампа из зависшего процесса, и он определит, какой поток был ответственен за зависание и чего он ожидал. Я знал, что windbg может позволить вам изучить ручки, показать все замки, открытые в каждом потоке, и позволить вам изучить их все подробно. Но я не осознавал, что с! Analyse, windbg может выполнить за меня тяжелую работу - исследовать блокировки, открытые всеми потоками, определить, какие потоки ожидают другие, и создать порядок для обработки, который изначально отвечал за зависание

источник

Даниэль Прават (Mario Hewardt) также предлагает расширенную отладку Windows. Это очень хорошая книга для начала работы с WinDbg: первые несколько глав дают очень подробный обзор отладчиков и того, как конкретно использовать WinDbg. Остальная часть книги заполнена подробными примерами отладки, которые вам не нужно читать. Я думаю, что есть пример, описывающий, как отладить зависание, который, однако, будет вам интересен.

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


Упомянутое тематическое исследование можно найти в главе 14 книги, раздел «! Анализ команды расширения». Он содержит очень подробную и полезную информацию о том, как интерпретировать вывод WinDbg.
Клаудиу

12

Вы можете посмотреть в Process Explorer . Вы можете увидеть, какие процессы файлов / папок заблокированы.


И если вы дважды щелкнете по процессу, вы даже сможете увидеть отдельные потоки и их использование ЦП.
итадок

1
Хорошее предложение, но обратите внимание, что это скажет вам, какие объекты у процесса открыты, а не то, что он ожидает.
Грэм Перроу

0

Насколько я знаю, нет. Вы можете подключить что-то вроде Wireshark, чтобы увидеть, можете ли вы найти что-то в сетевом трафике, чтобы указать, чего он ждет, но это немного излишне, и вряд ли вы что-нибудь найдете.


0

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


0

Посмотрите видеоролики о проводнике процессов « Случай 200x», в которых автор показывает диагностику нескольких сценариев устранения неполадок, включая зависания. Это также, где принудительный сбой ctrl-scrolllock-scrolllock может помочь с диагностикой.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.