Processo travado no Windows: existe alguma maneira de entender por quê?

11

Tentei imprimir um documento em word e a palavra congelou. Existe alguma maneira de eu ver qual recurso está esperando?

Estou usando o Windows XP e o Word 2007 (embora eu imagine que a resposta não dependa do processo que congelou)

Nathan Fellman
fonte
1
Nathan, acho que você postou duas vezes, superuser.com/questions/10085 .
21711 James McMahon
Eu fiz! Que vergonha!
18719 Nathan Fellman

Respostas:

13

Isso requer um pouco de conhecimento técnico, mas é possível analisar travamentos com o depurador do Windows (gratuito) WinDbg . Requer algum trabalho para instalar, anexar ao processo e configurar os símbolos (muito importante!), Mas você pode encontrar a causa do travamento com um único comando WinDbg (ênfase minha):

analisar -v -hang

Este é o que eu nunca tinha encontrado antes. Execute isso após abrir um despejo de um processo interrompido e ele determinará qual thread foi responsável pelo travamento e o que estava aguardando. Eu sabia que o windbg poderia permitir que você examinasse alças, mostrasse todos os bloqueios abertos em cada thread e permitisse que você os examinasse em detalhes. Mas eu não percebi que, com o! Analyse, o windbg pode fazer o trabalho duro para mim - examinando bloqueios mantidos abertos por todos os threads, determinando quais threads estão esperando por outros e criando uma ordem de trabalho que foi inicialmente responsável por o jeito.

fonte

Também avançado no Windows Debugging por Mario Hewardt, Daniel Pravat é um livro muito bom para você começar a usar o WinDbg: Os primeiros capítulos fornecem uma visão geral muito detalhada dos depuradores e como usar o WinDbg especificamente. O restante do livro é preenchido com estudos de caso de depuração detalhados, que você não precisa ler. Acho que há um estudo de caso descrevendo como depurar um travamento que será do seu interesse.

Depois de encontrar a causa do travamento, você pode até conseguir alterá-lo com técnicas de depuração mais avançadas ^^

Leftium
fonte
O estudo de caso referido pode ser encontrado no capítulo 14 do livro, seção "! Analisar comando de extensão". Ele contém informações muito detalhadas e úteis sobre como interpretar a saída do WinDbg.
precisa
12

Você pode querer procurar no Process Explorer . Você pode ver quais processos de arquivos / pastas estão bloqueados.

James McMahon
fonte
E se você clicar duas vezes em um processo, poderá ver segmentos individuais e o uso da CPU.
itsadok 21/07/2009
1
Boa sugestão, mas observe que isso lhe dirá quais objetos o processo abriu, não o que está esperando.
Graeme Perrow
0

Tanto quanto eu sei, não há. Você pode conectar algo como o Wireshark para ver se pode encontrar algo no tráfego da rede para indicar o que está esperando, mas é um exagero e dificilmente você encontrará alguma coisa.

Stefan Thyberg
fonte
0

Desde a impressão que você estava tentando, pergunto-me se a pesquisa de rede do Windows foi invocada e o Word estava apenas esperando por todas as impressoras de rede sendo mapeadas para uma seleção.
Você possui uma impressora conectada localmente? e você está em um domínio de rede corporativa com impressoras compartilhadas?

nik
fonte
0

Assista aos vídeos do explorador de processos " O caso do 200x", no qual o autor mostra o diagnóstico de vários cenários de solução de problemas, incluindo travamentos. Também é aqui que a falha forçada ctrl-scrolllock-scrolllock pode ajudar no diagnóstico.

kpierce8
fonte