2009-11-16 17 views
11

Ho un sito Web .net che gira su IIS. Una volta ogni pochi giorni guardo il task manager e ho 10-15 processi vsjitdebugger.exe aperti. Ognuno lega alcune connessioni, quindi causa problemi con il pool db a meno che non entri manualmente e finisca il processo.vsjitdebugger.exe (Visual Studio Debugger) - mostra lotti nel mio task manager nel server di produzione

A un certo punto, Visual Studio è stato installato su questa scatola, anche se è stato da allora disinstallato. Mi chiedo se questo è il motivo per cui il debugger tenta di avviarsi quando si verifica un errore.

Tuttavia, quello che voglio sapere è come faccio a ottenere IIS per interrompere il tentativo di avviare il debugger quando si verifica un errore? C'è comunque che può semplicemente andare avanti con la vita senza cercare di eseguire il debug?

Mi chiedo anche, potrebbe il modo in cui viene distribuita l'app (come un'app di debug con il PDB anziché una versione di rilascio) fa la differenza? O anche avere il debug attivato su web.config?

risposta

11

Sembra che la macchina sia configurata per eseguire automaticamente il debugger se si verifica un'eccezione non gestita nel processo. Non vuoi questo in un server di produzione, ma preferibilmente vuoi che termini il processo. Questo comportamento è controllato dalla chiave DbgManagedDebugger nel Registro di sistema. Ecco la documentazione per quella chiave

+1

Grazie - questo articolo parla dell'impostazione di una chiave - la mia era impostata su 16, che fa aprire il debugger. L'ho impostato su 0. – bugfixr

6

È possibile che sia ancora impostato il debugger regkeys. Puoi controllare il valore del tuo HKLM \ Software \ Microsoft \ Windows NT \ CurrentVersion \ AEDebuger \ Debugger e le chiavi HKLM \ Software \ Microsoft.NETFramework \ DbgManagedDebugger. Queste sono le chiavi che il sistema operativo prende in considerazione quando si verifica un'eccezione non gestita (verrà avviato qualunque sia impostato su queste chiavi).

+1

Entrambe le chiavi sono puntate su vsjitdebugger.exe - posso svuotare la chiave senza danneggiare nessun altro sul server? – bugfixr

+1

sì, puoi soffiarlo via – nithins

+0

I miei sono stati impostati su '" C: \ WINDOWS \ system32 \ vsjitdebugger.exe "-p% ld -e% ld' e' "C: \ WINDOWS \ system32 \ vsjitdebugger.exe" PID % d APPDOM% d EXTEXT "% s" EVTHDL% d' - la rimozione li ha risolto il problema senza evidenti effetti secondari – Tim

0

A volte uno sviluppatore mette in una riga di codice per Debugger.Launch() e si dimentica di rimuoverlo. Ciò costringerà la finestra di dialogo JIT a pronunciare "Un'eccezione 'Avvio per utente' si è verificato ...". Se stai ricevendo quel messaggio, allora è un'istruzione hardcoded per avviare il debugger.

Problemi correlati