스택 및 덤프 로깅

/stacktraceonerror 및 /minidumponerror 스위치 사용

테스트에서 스택 추적 및 미니 덤프를 캡처할 수 있는 두 가지 방법이 있습니다. 가장 쉬운 방법은 'onerror' 모드입니다. 테스트를 실행할 때 te '/stacktraceonerror' 및/또는 '/minidumponerror' 스위치를 제공합니다. 그런 다음 오류가 발생하면 로거는 스택 추적 및/또는 미니 덤프를 기본 형식으로 캡처합니다.

스택 추적 및 미니 덤프를 캡처하는 다른 방법은 아래에 설명된 API를 사용하는 것입니다.

WexDebug.h 기능을 사용하여 스택 추적 및 미니 덤프 캡처

WexDebug.h는 호출 스택 추적 및 미니 덤프를 캡처하기 위한 API를 제공합니다.

SaveDump API를 호출하여 미니 덤프를 저장합니다.

이 API는 선택적 DWORD 매개 변수(덤프 형식 플래그 또는 플래그 조합)와 파일 이름과 저장된 덤프 파일의 경로가 포함된 문자열을 반환하는 문자열 참조를 사용합니다. 파일 이름은 API에서 자동으로 생성되며 현재 날짜 및 시간을 기반으로 합니다.

선택적 덤프 형식 매개 변수는 가져온 미니 덤프에 포함해야 하는 내용을 지정합니다. 또한 덤프를 dmp 또는 cab 파일에 저장할지 여부와 cab 파일의 경우 기호를 덤프와 함께 저장할지 여부를 지정합니다. 선택적 매개 변수를 생략하면 기본 설정이 사용됩니다.

예제(pdbs와 함께 cab에 덤프 저장):

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

덤프를 cab 파일에 저장하는 데 일반 덤프를 저장하는 것보다 시간이 오래 걸립니다. 기호 파일을 첨부하는 데 더 오래 걸립니다.

GetStack API를 호출하여 호출 스택 추적을 가져옵니다.

이 API는 선택적 DWORD 매개 변수(형식 플래그 또는 플래그 조합)와 현재 컨텍스트에 대한 호출 스택 추적이 포함된 문자열을 반환하는 문자열 참조를 사용합니다.

선택적 스택 형식 매개 변수는 스택 추적에 포함해야 하는 내용을 지정합니다. 선택적 매개 변수를 생략하면 기본 설정이 사용됩니다.

예제:

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

스택 옵션 플래그와 디버거 명령의 상관 관계입니다. 디버거의 windbg 제품군을 사용하는 경우 다음과 같은 대략적 상관 관계 목록이 유용할 수 있습니다.

디버거 구문 해당 플래그
k CallStackFormat::ColumnNames
Kv k + CallStackFormat::FunctionInfo
kp/kP k + CallStackFormat::P arameters
kn k + CallStackFormat::FrameNumbers
Kf k + CallStackFormat::FrameMemoryUsage

기술 참조

덤프 및 스택 선택적 매개 변수에 대한 자세한 내용은 Windows용 디버깅 도구와 함께 제공되는 설명서를 참조하세요. '덤프 플래그'에 대한 설명서는 DEBUG_FORMAT_XXX 참조하세요. '스택 플래그'에 대한 설명서는 OutputStackTrace를 참조하세요.