Compartir a través de


Registro de pila y volcado de memoria

Uso de modificadores /stacktraceonerror y /minidumponerror

Hay dos maneras de capturar el seguimiento de la pila y mini volcados de memoria de las pruebas. Lo más sencillo es el modo "onerror". Al ejecutar las pruebas, proporcione los modificadores "/stacktraceonerror" o "/minidumponerror". Después, si se produce un error, Logger capturará el seguimiento de la pila o el mini volcado de memoria para usted en el formato predeterminado.

El otro método para capturar el seguimiento de la pila y los mini volcados de memoria es usar las API que se describen a continuación.

Uso de la funcionalidad WexDebug.h para capturar seguimientos de pila y mini volcados de memoria

WexDebug.h proporciona API para capturar seguimientos de pila de llamadas y mini volcados de memoria.

Llame a SaveDump API para guardar un mini volcado.

Esta API toma un parámetro DWORD opcional (que es una marca de tipo de volcado o una combinación de marcas) y una referencia de cadena en la que devuelve una cadena que contiene un nombre de archivo y una ruta de acceso al archivo de volcado guardado. La API genera automáticamente el nombre de archivo y se basa en la fecha y hora actuales.

El parámetro de tipo de volcado opcional especifica lo que debe contener el mini volcado de memoria tomado. También especifica si el volcado se guardará en un archivo dmp o cab y, en el caso de los archivos cab, si los símbolos se guardarán junto con el volcado de memoria. Si se omite el parámetro opcional, se usa la configuración predeterminada.

Ejemplo (guardar volcado en una cabina junto con sus pdbs):

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

Tenga en cuenta que guardar un volcado en un archivo cab tarda más que guardar el volcado normal; Adjuntar archivos de símbolos tarda aún más.

Llame a GetStack API para obtener un seguimiento de pila de llamadas.

Esta API toma un parámetro DWORD opcional (que es una marca de tipo o una combinación de marcas) y una referencia de cadena en la que devuelve una cadena que contiene el seguimiento de la pila de llamadas para el contexto actual.

El parámetro de tipo de pila opcional especifica lo que debe contener el seguimiento de la pila. Si se omite el parámetro opcional, se usa la configuración predeterminada.

Ejemplo:

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

Correlación de marcas de opción de pila a comandos del depurador. Si usa la familia windbg de depuradores, puede resultar útil la siguiente lista de correlación aproximada:

Sintaxis del depurador Marcas correspondientes
k CallStackFormat::ColumnNames
Kv k + CallStackFormat::FunctionInfo
kp/kP k + CallStackFormat::P arameters
kn k + CallStackFormat::FrameNumbers
Kf k + CallStackFormat::FrameMemoryUsage

Referencia técnica

Si está interesado en obtener más información sobre los parámetros opcionales de volcado y pila, consulte la documentación proporcionada con Herramientas de depuración para Windows. Para obtener documentación sobre las "marcas de volcado" consulte el DEBUG_FORMAT_XXX. Para obtener documentación sobre las "marcas de pila", consulte OutputStackTrace.