Domanda

Ho un'app Windows in produzione ormai da un po' e l'ho configurata per inviarci segnalazioni di errori quando genera eccezioni.La maggior parte di questi sono abbastanza descrittivi e mi aiutano a trovare il problema molto rapidamente (utilizzo il blocco eccezioni applicazione MS).

In alcune occasioni ho ricevuto segnalazioni di problemi che non riesco a riprodurre e che sembrano verificarsi solo su alcuni computer client.

Non ho accesso fisico a questi computer client, quali sono alcune strategie che posso utilizzare per il debug?Sarebbe meglio inserire qualche traccia nel codice o ci sono altre alternative?

Grazie.

Modificare:Avrei dovuto essere più chiaro:I rapporti di errore che ottengo hanno l'analisi dello stack, ma poiché si tratta di codice di produzione, non indica la riga esatta che ha causato l'eccezione, solo il metodo in cui è stata generata.

È stato utile?

Soluzione

Un'opzione è generare un file (mini-)dump il più vicino possibile al punto in cui viene generata l'eccezione.Questo articolo parla di come eseguire questa operazione dal codice gestito.

È quindi possibile caricare il file dump in Visual Studio o WinDbg ed esaminarlo con l'aiuto di sos

Altri suggerimenti

Sei sulla strada giusta.È necessario creare un modulo di monitoraggio che registri azioni/eccezioni localmente.

È quindi possibile avere un pulsante o un'opzione di menu su cui l'utente può fare clic per inviarti automaticamente queste informazioni via e-mail nel momento in cui si verifica il problema, oppure può avere la possibilità di impossessarsi del file in modo da potertelo trasferire in qualsiasi momento. altro modo.

Puoi anche incorporare un codice diagnostico per eseguire un controllo di integrità sul sistema e inviarti un rapporto (forse esegue tutti i test unitari per vedere se funzionano su quel sistema).

Lo uso sempre modulo da Jeff per eccezioni non gestite, inviandomi un'e-mail con stacktrace ecc.

Ispezione intelligente da Software Gurock mi è tornato utile molte volte.È molto semplice da inserire in un'applicazione .NET e offre un controllo estremamente potente durante l'analisi dei file di registro.Dispone di livelli di registro che ti consentono di disattivare determinate funzionalità tranne in determinati casi in modo da non perdere prestazioni.

Dispongono anche di un software server a cui il tuo software può connettersi per salvare i registri quando non hai pieno accesso alle macchine.Ad esempio, potresti avere un server in esecuzione su www.tuodominio.com.Il tuo software avrà un'opzione di configurazione per attivare il debug.Smart Inspect sarà configurato per inviare i dati di registro al tuo server (e facoltativamente a un file locale) in modo da poter ottenere la registrazione in tempo reale, indipendentemente da dove viene eseguito il software.

Smart Inspect è molto facile da configurare e ha molte funzionalità che puoi utilizzare per aiutarti.L'ho usato per eseguire il debug al volo di applicazioni server multi-thread ad alto impatto senza smontare le macchine.Ha tutti i ganci per tenere traccia dei diversi processi, fili e macchine.

Utilizzerei il registro eventi.Dai un'occhiata qui:

http://support.microsoft.com/kb/307024

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