次の方法で共有


スタックとダンプのログ

/stacktraceonerror スイッチと /minidumponerror スイッチの使用

テストからスタック トレースとミニ ダンプをキャプチャするには 2 つの方法があります。 最も簡単なのは "onerror" モードです。 テストを実行するときは、"/stacktraceonerror" スイッチまたは "/minidumponerror" スイッチを指定します。 その後、エラーが発生した場合、Logger はスタック トレースやミニ ダンプを既定の形式でキャプチャします。

スタック トレースとミニ ダンプをキャプチャするもう 1 つの方法は、以下で説明する API を使用することです。

WexDebug.h 機能を使用してスタック トレースとミニ ダンプをキャプチャする

WexDebug.h には、コール スタック トレースとミニ ダンプをキャプチャするための API が用意されています。

SaveDump API を呼び出してミニ ダンプを保存する。

この API は、オプションの DWORD パラメーター (ダンプの種類のフラグまたはフラグの組み合わせ) と、保存されたダンプ ファイルへのファイル名とパスを含む文字列を返す文字列参照を受け取ります。 ファイル名は現在の日時に基づき、API によって自動的に生成されます。

ダンプの種類のパラメーター (オプション) は、取得したミニ ダンプに含める内容を指定します。 また、dmp ファイルと cab ファイルのどちらにダンプを保存するかを指定し、cab ファイルの場合は、さらにダンプと共にシンボルを保存するかどうかを指定します。 オプションのパラメーターを省略した場合は、既定の設定が使用されます。

ダンプとその pdb を 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::Parameters
kn k + CallStackFormat::FrameNumbers
kf k + CallStackFormat::FrameMemoryUsage

テクニカル リファレンス

ダンプとスタックのオプション パラメーターの詳細については、Windows 用デバッグ ツールに付属のドキュメントを参照してください。 "dump flags" のドキュメントについては、「DEBUG_FORMAT_XXX」を参照してください。 "スタック フラグ" のドキュメントについては、「OutputStackTrace」を参照してください。