2009-11-02 3 views
6

Sono interessato a quali informazioni utili gli sviluppatori inseriscono nella struttura dei dati del flusso utente che può essere incorporata nei minidump. MSDN descrive il parametro per MiniDumpWriteDump come tale:Cose utili da inserire nel segmento del flusso utente di minidumps

PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam

e descrive il parametro thusly:

UserStreamParam [in] Puntatore a una matrice di strutture MINIDUMP_USER_STREAM_INFORMATION. Se il valore di questo parametro è NULL, nessuna informazione definita dall'utente è inclusa nel file minidump.

mi stava prendendo in considerazione l'incorporamento ultimi n linee di log del mio programma in un flusso utente dal tester tendono a non inviare i log correttamente formattati con tutti i bug tutto il tempo.

Inoltre, potrei inserire le specifiche hardware (memoria, CPU, video, ecc.) In quella sezione.

Per quale altro motivo le persone hanno utilizzato il segmento del flusso di utenti?

+0

Penso che questo rientri in meno di "cosa possiamo inserire in questo" e più di "cosa è effettivamente necessario per eseguire il debug del mio programma?" –

+0

Quindi accetti che si tratti di una domanda lungimirante. Fornendo le informazioni diagnostiche massime, è possibile eseguire il debug dei casi che si verificano in futuro. Quindi la domanda. :) Ricordare che i dump di debug sono generati da terze parti, inclusi i clienti. Capire il più possibile l'ambiente dell'app quando è in crash può essere essenziale per tenere traccia di un problema. –

risposta

3

Mi piace l'idea di includere le informazioni del registro storico. Tuttavia, se il minidump viene prodotto in risposta a un'eccezione di qualche tipo, sembra che l'interruzione della lettura di un file di registro da includere nel dump potrebbe non essere sempre il piano migliore poiché la stabilità del sistema potrebbe essere discutibile.

Il nostro tipo predefinito è MiniDumpWithFullMemory. In tal caso, le informazioni sul flusso dell'utente non sembrano particolarmente utili nella nostra applicazione perché la memoria completa include praticamente tutte le informazioni possibili di cui abbiamo bisogno (almeno finora). E abbiamo anche avuto abbastanza fortuna con l'acquisizione di tutti i file di log degli errori quando le persone ci inviano un file di dump.

Tuttavia, i nostri utenti possono modificare il tipo con un parametro di configurazione. Posso vedere che con uno dei tipi di minidump più piccoli, le informazioni del flusso utente potrebbero essere molto utili. Non avevo mai realmente pensato a quel parametro della funzione di minidump fino a quando non ho visto questo post. Abbiamo alcune strutture in memoria con informazioni di configurazione di base che sarebbero inestimabili nei casi in cui non viene prodotto un dump di memoria completo. Inoltre, la struttura contenente i dettagli dell'utente che ha "causato" l'eccezione sarebbe utile. Dovrò considerare di aggiungere alcuni di quelli che verranno scaricati come flussi di utenti.

1

Ciò che potrebbe essere più utile rispetto alla compilazione di ulteriori informazioni qui, è quello di includere tutti i file di registro generati con WerRegisterFile.

1

La libreria Breakpad utilizza flussi utente per alcuni bookkeeping information. Include uno stream con l'ID del thread dedicato che esegue la scrittura minidump in modo che possa essere escluso dalle tracce dello stack. Include anche un flusso con informazioni di asserzione se il dump è stato scritto in risposta a un callback non fatale, come il gestore parametri non valido del CRT o il gestore di chiamate virtuali puro.