Condividi tramite


Registrazione stack e dump

Uso delle opzioni /stacktraceonerror e /minidumponerror

Esistono due modi per acquisire analisi dello stack e mini dump dai test. Il più semplice è la modalità 'onerror'. Quando si eseguono i test, specificare le opzioni '/stacktraceonerror' e/o '/minidumponerror'. Quindi, se si verifica un errore, Logger acquisisce l'analisi dello stack e/o il mini dump nel formato predefinito.

L'altro metodo per acquisire analisi dello stack e mini dump consiste nell'usare le API descritte di seguito.

Uso della funzionalità WexDebug.h per acquisire analisi dello stack e mini dump

WexDebug.h fornisce API per l'acquisizione di tracce dello stack di chiamate e mini dump.

Chiamare l'API SaveDump per salvare un mini dump.

Questa API accetta un parametro DWORD facoltativo (ovvero una combinazione di flag o flag di tipo dump) e un riferimento stringa in cui restituisce una stringa contenente un nome file e un percorso per il file di dump salvato. Il nome del file viene generato automaticamente dall'API e si basa sulla data e l'ora correnti.

Il parametro di tipo dump facoltativo specifica il contenuto del mini dump acquisito. Specifica inoltre se il dump verrà salvato in un file dmp o cab e, nel caso dei file CAB, se i simboli verranno salvati insieme al dump. Se il parametro facoltativo viene omesso, vengono usate le impostazioni predefinite.

Esempio (salvare il dump in un cab insieme ai file pdb):

NoThrowString savedDumpFilePath;
HRESULT hr = Debug::SaveDump(MiniDumpFormat::WriteCab | MiniDumpFormat::WriteCabSecondaryFiles, savedDumpFilePath);

Si noti che il salvataggio di un dump in un file CAB richiede più tempo del salvataggio del dump normale; l'associazione dei file di simboli richiede ancora più tempo.

Chiamare l'API GetStack per ottenere un'analisi dello stack di chiamate.

Questa API accetta un parametro DWORD facoltativo (che è una combinazione di flag o flag di tipo) e un riferimento stringa in cui restituisce una stringa contenente l'analisi dello stack di chiamate per il contesto corrente.

Il parametro del tipo di stack facoltativo specifica il contenuto dell'analisi dello stack. Se il parametro facoltativo viene omesso, vengono usate le impostazioni predefinite.

Esempio:

NoThrowString stackText;
HRESULT hr = Debug::GetStack(CallStackFormat::ColumnNames | CallStackFormat::FrameAddress |
                             CallStackFormat::SourceLine, stackText);

Correlazione dei flag di opzione dello stack ai comandi del debugger. Se si usa la famiglia windbg di debugger, l'elenco di correlazioni approssimativo seguente potrebbe risultare utile:

Sintassi del debugger Flag corrispondenti
k CallStackFormat::ColumnNames
Kv k + CallStackFormat::FunctionInfo
kp/kP k + CallStackFormat::P arameters
kn k + CallStackFormat::FrameNumbers
Kf k + CallStackFormat::FrameMemoryUsage

Riferimento tecnico

Per altre informazioni sui parametri facoltativi dump e stack, vedere la documentazione fornita con Strumenti di debug per Windows. Per la documentazione sui "flag di dump", vedere il DEBUG_FORMAT_XXX. Per la documentazione sui "flag stack", vedere OutputStackTrace.