Processo bloccato in Windows: c'è un modo per capire perché?


11

Ho provato a stampare un documento in parole e le parole si sono bloccate. C'è un modo per me di vedere quale risorsa sta aspettando?

Sto usando Windows XP e Word 2007 (anche se immagino che la risposta non dipenda dal processo che si è bloccato)


1
Nathan, penso che tu abbia pubblicato due volte, superuser.com/questions/10085 .
James McMahon,

L'ho fatto! Che imbarazzante!
Nathan Fellman,

Risposte:


13

Ciò richiede un po 'di conoscenza tecnica, ma è possibile analizzare gli hang con il debugger (gratuito) Windows WinDbg . Richiede un po 'di lavoro per l'installazione, il collegamento al processo e per impostare i simboli (molto importante!), Ma poi puoi trovare la causa del blocco con un singolo comando WinDbg (enfasi mio):

analizzare -v -hang

Questo è quello che non avevo mai visto prima. Esegui questo dopo aver aperto un dump da un processo bloccato e determinerà quale thread era responsabile dell'hang e cosa stava aspettando. Sapevo che windbg poteva lasciarti esaminare le maniglie, mostrare tutte le serrature aperte in ogni thread e consentirti di esaminarle tutte in dettaglio. Ma non mi ero reso conto che con! Analyse, windbg può fare il duro lavoro per me - esaminando i blocchi tenuti aperti da tutti i thread, determinando quali thread stanno aspettando quali altri, e costruendo un ordine per capire quale era inizialmente responsabile il blocco.

fonte

Anche Advanced Windows Debugging di Mario Hewardt, Daniel Pravat è un ottimo libro per iniziare con WinDbg: i primi capitoli offrono una panoramica molto dettagliata dei debugger e di come utilizzare WinDbg in modo specifico. Il resto del libro è pieno di casi studio dettagliati di debug, che non devi leggere. Penso che ci sia un caso di studio che descriva come eseguire il debug di un blocco che ti sarà comunque interessante.

Dopo aver trovato la causa del blocco, potresti persino essere in grado di slegarlo con tecniche di debug più avanzate ^^


Il caso di studio a cui si fa riferimento si trova nel capitolo 14 del libro, sezione "! Analizza il comando di estensione". Contiene informazioni molto dettagliate e utili su come interpretare l'output di WinDbg.
Claudiu

12

Potresti voler esaminare Process Explorer . Puoi vedere quali processi di file / cartelle hanno un blocco.


E se fai doppio clic su un processo, puoi persino vedere i singoli thread e il loro utilizzo della CPU.
entrato il

1
Un buon suggerimento, ma nota che questo ti dirà quali oggetti ha aperto il processo, non cosa sta aspettando.
Graeme Perrow,

0

Per quanto ne so, non c'è. Potresti collegare qualcosa come Wireshark per vedere se riesci a trovare qualcosa nel traffico di rete per indicare cosa sta aspettando, ma è un po 'eccessivo e difficilmente troverai qualcosa.


0

Dalla sua stampa che stavi provando, mi chiedo se la ricerca di rete di Windows è stata invocata e Word stava solo aspettando che tutte le stampanti di rete fossero mappate per una selezione.
Hai una stampante connessa localmente? e sei su un dominio di rete aziendale con stampanti condivise?


0

Guarda i video di Process Explorer " The case of the 200x" in cui l'autore mostra la diagnosi di diversi scenari di risoluzione dei problemi, compresi i blocchi. Questo è anche il punto in cui l'arresto forzato ctrl-scrolllock-scrolllock può aiutare nella diagnosi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.