堆疊和傾印記錄
使用 /stacktraceonerror 和 /minidumponerror 參數
有兩種方式可以從測試擷取堆疊追蹤和迷你傾印。 最簡單的是 'onerror' 模式。 當您執行測試時,請提供 te '/stacktraceonerror' 和/或 '/minidumponerror' 參數。 然後,如果您遇到失敗,記錄器會以預設格式為您擷取堆疊追蹤和/或迷你傾印。
擷取堆疊追蹤和迷你傾印的另一種方法是使用以下所述的 API。
使用 WexDebug.h 功能來擷取堆疊追蹤和迷你傾印
WexDebug.h 提供用來擷取呼叫堆疊追蹤和迷你傾印的 API。
呼叫 SaveDump API 以儲存迷你傾印。
此 API 會採用選擇性的 DWORD 參數 (,這是傾印類型旗標或旗標組合) ,而字串參考會傳回包含檔案名和儲存傾印檔案路徑的字串參考。 檔案名是由 API 自動產生,而且是以目前的日期和時間為基礎。
選擇性傾印類型參數會指定所採用迷你傾印應該包含的內容。 它也會指定傾印是否會儲存在 dmp 或 cab 檔案中,而且在 cab 檔案的情況下,符號是否會與傾印一起儲存。 如果省略選擇性參數,則會使用預設設定。
範例 (將傾印儲存到 cab 及其 pdbs) :
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 |
K v | k + CallStackFormat::FunctionInfo |
kp / kP | k + CallStackFormat::P arameters |
kn | k + CallStackFormat::FrameNumbers |
Kf | k + CallStackFormat::FrameMemoryUsage |
技術參考
如果您對傾印和堆疊選擇性參數的詳細資訊感興趣,請參閱 Windows 偵錯工具所提供的檔。 如需「傾印旗標」的檔,請參閱 DEBUG_FORMAT_XXX。 如需有關「堆疊旗標」的檔,請參閱 OutputStackTrace。