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.