Domanda

Sto facendo qualcosa di brutto nella mia app ASP.NET.Potrebbe essere il numero qualsiasi di librerie CTP che sto utilizzando o semplicemente non sto eliminando qualcosa correttamente.Ma quando ridistribuisco ASP.NET sull'installazione di Vista IIS7 o sull'installazione di IIS6 del mio server, si blocca un processo di lavoro IIS.

Ho ristretto il problema al mio crawler HTTP, che è una bestia multithread che esegue la scansione dei siti alla ricerca di informazioni utili quando richiesto.Dopo aver avviato un crawler e ridistribuito l'app in alto, anziché scaricare con garbo appDomain e ricaricarlo, un processo di lavoro IIS si bloccherà (visualizzando un messaggio di arresto anomalo) e continuerà a ricaricare il dominio dell'app.

Quando si verifica questo arresto anomalo, dove posso trovare il dump dell'arresto anomalo per l'analisi?

È stato utile?

Soluzione

Scarica gli strumenti di debug per Windows:http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx

Strumenti di debug per Windows dispone di uno script (ADPLUS) che consente di creare dump quando un processo si blocca:http://support.microsoft.com/kb/286350

Il comando dovrebbe essere qualcosa del tipo (se stai utilizzando IIS6):

cscript adplus.vbs -crash -pn w3wp.exe

Questo comando collegherà il debugger al processo di lavoro.Quando si verifica l'arresto anomalo verrà generato un dump (un file *.DMP).

Puoi aprirlo in WinDBG (incluso anche negli strumenti di debug per Windows).File > Apri dump arresto anomalo del sistema...

Per impostazione predefinita, WinDBG ti mostrerà (accanto alla riga di comando) il thread in cui il processo si è bloccato.

La prima cosa che devi fare in WinDBG è caricare le estensioni .NET Framework:

.loadby sos mscorwks

quindi, visualizzerai lo stack di chiamate gestito:

!clrstack

se il thread non eseguiva codice gestito, dovrai controllare lo stack nativo:

kpn 200

Questo dovrebbe darti qualche idea.Per continuare la risoluzione dei problemi ti consiglio di leggere il seguente articolo:

http://msdn.microsoft.com/en-us/library/ee817663.aspx

Altri suggerimenti

Una rapida ricerca trovato Stato IISS - si basa su Strumenti di debug di Windows e deve essere in esecuzione quando si verifica un arresto anomalo, ma date le circostanze che hai descritto, questo non dovrebbe essere un problema,

Puoi anche usare DebugDiag per questo

Un'ottima spiegazione può essere trovata qui:

http://blogs.msdn.com/b/tess/archive/2009/03/20/debugging-a-net-crash-with-rules-in-debug-diag.aspx

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top