Domanda

Sono sempre crash casuali dal mio c # app (Windows 7 / VS2008), e non mi dà un normale traccia dello stack, ma piuttosto suggerisce di chiudere / debug / trovare informazioni Windows 7 tipo di finestra di dialogo. Sono in esecuzione l'applicazione sia da sotto VS2008 o stand alone - stessa cosa. Facendo clic su "Debug" suggerisce di debug con una nuova istanza di VS, che non riesce come "un altro debugger è già collegato al app". Ma il debugger non mi dà alcuna possibilità di vedere dove non riesce, dà solo alcuni indizi nella finestra di output (qui di seguito). Come affrontare questo?

Sembra che devo abilitare (?) Prime eccezioni di possibilità nel debugger VS, ma non era chiaro come .. Apprezzo tutto l'aiuto con questo!

Addizione - Ho trovato come attivare il debug delle eccezioni in VS2008 (Debug-> eccezioni-> controllato tutte le 5 categorie di eccezioni). E ancora mi dà esattamente lo stesso risultato - incidente, senza capacità di vedere cosa sta succedendo nel debugger

.
  

'Ps.exe' (Managed): Loaded   'C: \ Windows \ assembly \ GAC_MSIL \ System.Deployment \ 2.0.0.0__b03f5f7f11d50a3a \ System.Deployment.dll'   Una prima eccezione di possibilità di tipo   'System.Deployment.Application.InvalidDeploymentException'   verificato in System.Deployment.dll A   prima eccezione di possibilità di tipo   'System.Threading.ThreadAbortException'   verificata in mscorlib.dll Il filo   0x1964 è terminato con il codice 0 (0x0).   Il filo 0x1b24 èuscito con il codice   0 (0x0). Una prima eccezione di possibilità di   genere   'System.ArgumentOutOfRangeException'   avvenuta in un primo mscorlib.dll   eccezione di possibilità di tipo   'System.ArgumentOutOfRangeException'   avvenuta in un primo mscorlib.dll   eccezione di possibilità di tipo   'System.ArgumentOutOfRangeException'   avvenuta in un primo mscorlib.dll   eccezione di possibilità di tipo   'System.ArgumentOutOfRangeException'   avvenuta in un primo mscorlib.dll   eccezione di possibilità di tipo   'System.ArgumentOutOfRangeException'   avvenuta in un primo mscorlib.dll   eccezione di possibilità di tipo   'System.ArgumentOutOfRangeException'   avvenuta in un primo mscorlib.dll   eccezione di possibilità di tipo   'System.ArgumentOutOfRangeException'   avvenuta in un primo mscorlib.dll   eccezione di possibilità di tipo   'System.ArgumentOutOfRangeException'   avvenuta in un primo mscorlib.dll   eccezione di possibilità di tipo   'System.ArgumentOutOfRangeException'   avvenuta in un primo mscorlib.dll   eccezione di possibilità di tipo   'System.ArgumentOutOfRangeException'   avvenuta in un primo mscorlib.dll   eccezione di possibilità di tipo   'System.Threading.ThreadAbortException'   verificata in mscorlib.dll Il filo   0x19b8 ha terminato con il codice 0 (0x0).   Il filo 0x18f4 èuscito con il codice   0 (0x0). Il filetto è uscito 0x420   con il codice 0 (0x0). Una prima occasione   eccezione di tipo   'System.ArgumentOutOfRangeException'   avvenuta in un primo mscorlib.dll   eccezione di possibilità di tipo   'System.ArgumentOutOfRangeException'   avvenuta in un primo mscorlib.dll   eccezione di possibilità di tipo   'System.ArgumentOutOfRangeException'   avvenuta in un primo mscorlib.dll   eccezione di possibilità di tipo   'System.ArgumentOutOfRangeException'   avvenuta in un primo mscorlib.dll   eccezione di possibilità di tipo   'System.ArgumentOutOfRangeException'   avvenuta in un primo mscorlib.dll   eccezione di possibilità di tipo   'System.ArgumentOutOfRangeException'   avvenuta in un primo mscorlib.dll   eccezione di possibilità di tipo   'System.ArgumentOutOfRangeException'   avvenuta in un primo mscorlib.dll   eccezione di possibilità di tipo   'System.ArgumentOutOfRangeException'   avvenuta in un primo mscorlib.dll   eccezione di possibilità di tipo   'System.ArgumentOutOfRangeException'   avvenuta in un primo mscorlib.dll   eccezione di possibilità di tipo   'System.ArgumentOutOfRangeException'   avvenuta in un primo mscorlib.dll   eccezione di possibilità di tipo   'System.ArgumentOutOfRangeException'   avvenuta in un primo mscorlib.dll   eccezione di possibilità di tipo   'System.ArgumentOutOfRangeException'   verificata in mscorlib.dllUn primo   eccezione di possibilità di tipo   'System.ArgumentOutOfRangeException'   avvenuta in un primo mscorlib.dll   eccezione di possibilità di tipo   'System.ArgumentOutOfRangeException'   verificata in mscorlib.dll Il programma   '[6084] Ps.exe: Gestito' è uscito   con il codice di -1.073,74094 milioni (0xc0000374).

È stato utile?

Soluzione

E 'sorta come testimonianza una di quelle enormi pile-up ad una gara di Formula 1. L'ultimo pezzo di schegge che è venuto a un periodo di riposo ha riferito:

// MessageText:
//
// A heap has been corrupted.
//
#define STATUS_HEAP_CORRUPTION           ((NTSTATUS)0xC0000374L)

Sì, questo è un pneumatico molto grave blow-out. Un sacco di cose vanno male, quando un mucchio viene danneggiato. Probabilmente avete avuto qualche codice non gestito che è comportamento anomalo in un modo che è così tipico di codice non gestito, distruggendo l'integrità del cumulo con un cattivo indicatore di scrittura. Molto difficile da diagnosticare, isolare quel codice.

Altri suggerimenti

In VS, andare al debug / Eccezioni e attivare la casella di controllo sotto 'Gettato' per «eccezioni Common Language Runtime. Ciò prenderà la 'eccezione first-chance'.

Un'eccezione distribuzione sembra essere correlato a cliccare una volta. State usando il telecomando?

Crea un file di registro di output o l'uso di messaggi caselle per rintracciarlo, se lo strumento di sviluppo che si riesce.

Premere Ctrl + Alt + E in Visual Studio o scegliere Debug> Eccezioni dal menu e quindi fare clic su Eccezioni CLR per catturare tutte le eccezioni first-chance. Questo dovrebbe poi si spera pausa al punto di contesa.

In caso contrario, provare Debug.Write scrittura e le dichiarazioni Trace.Write nei punti critici nel codice per vedere a che punto si raggiunge prima che si verifichi l'errore. Sia debug e scrittura possono essere trovati in System.Diagnostics namespace.

IMO il migliore per eseguire il debug di heap corruzioni sta utilizzando Windbg. Qui è un blog posta da Tess debugging gestito il danneggiamento di heap.

HTH

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