Compartilhar via


Registro em log de pilha e despejo

Usando as opções /stacktraceonerror e /minidumponerror

Há duas maneiras de capturar rastreamento de pilha e mini despejos de seus testes. O mais fácil é o modo 'onerror'. Ao executar seus testes, forneça as opções '/stacktraceonerror' e/ou '/minidumponerror'. Em seguida, se você acertar uma falha, o Agente capturará o rastreamento de pilha e/ou o mini despejo para você no formato padrão.

O outro método para capturar rastreamento de pilha e mini despejos é usar as APIs descritas abaixo.

Usando a funcionalidade WexDebug.h para capturar rastreamentos de pilha e mini despejos

WexDebug.h fornece APIs para capturar rastreamentos de pilha de chamadas e mini despejos.

Chame a API SaveDump para salvar um mini despejo.

Essa API usa um parâmetro DWORD opcional (que é uma combinação de sinalizador ou sinalizador de tipo de despejo) e uma referência de cadeia de caracteres na qual retorna uma cadeia de caracteres que contém um nome de arquivo e um caminho para o arquivo de despejo salvo. O nome do arquivo é gerado automaticamente pela API e é baseado na data e hora atuais.

O parâmetro de tipo de despejo opcional especifica o que o mini dump obtido deve conter. Ele também especifica se o despejo será salvo em um arquivo dmp ou cab e, no caso de arquivos cab, se os símbolos serão salvos junto com o despejo. Se o parâmetro opcional for omitido, as configurações padrão serão usadas.

Exemplo (salve o despejo em um táxi junto com seus pdbs):

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

Observe que salvar um despejo em um arquivo de táxi leva mais tempo do que salvar o despejo comum; A anexação de arquivos de símbolo leva ainda mais tempo.

Chame a API GetStack para obter um rastreamento de pilha de chamadas.

Essa API usa um parâmetro DWORD opcional (que é uma combinação de sinalizador ou sinalizador de tipo) e uma referência de cadeia de caracteres na qual retorna uma cadeia de caracteres que contém o rastreamento de pilha de chamadas para o contexto atual.

O parâmetro de tipo de pilha opcional especifica o que o rastreamento de pilha deve conter. Se o parâmetro opcional for omitido, as configurações padrão serão usadas.

Exemplo:

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

Correlação de sinalizadores de opção de pilha para comandos de depurador. Se você usar a família windbg de depuradores, a seguinte lista de correlação aproximada poderá ser útil:

Sintaxe do depurador Sinalizadores correspondentes
k CallStackFormat::ColumnNames
Kv k + CallStackFormat::FunctionInfo
kp/kP k + CallStackFormat::P arameters
kn k + CallStackFormat::FrameNumbers
Kf k + CallStackFormat::FrameMemoryUsage

Referência técnica

Se você estiver interessado em obter mais informações sobre os parâmetros opcionais de despejo e pilha, consulte a documentação fornecida com As Ferramentas de Depuração para Windows. Para obter a documentação sobre os 'sinalizadores de despejo', consulte o DEBUG_FORMAT_XXX. Para obter a documentação sobre os 'sinalizadores de pilha', consulte OutputStackTrace.