共用方式為


堆疊和傾印記錄

使用 /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