シンボル ハンドラーの初期化

次のコードは、シンボル ハンドラーを初期化する方法を示しています。 SymSetOptions 関数は、シンボル情報が要求されるまでシンボルの読み込みを延期します。 このコードは、SymInitialize 関数の bInvade パラメーターに TRUE の値を渡すことで、指定されたプロセス内の各モジュールのシンボルを読み込みます。 (この関数は、プロセスがアドレス空間にマップしたモジュールごとに SymLoadModule64 関数を呼び出します)。

指定したプロセスが SymInitialize を呼び出したプロセスでない場合、コードは SymInitialize の最初のパラメーターとしてプロセス識別子を渡します。

SymInitialize の 2 番目のパラメーターとして NULL を指定すると、シンボル ハンドラーは既定の検索パスを使用してシンボル ファイルを検索する必要があることを示します。 シンボル ハンドラーがシンボル ファイルを検索する方法、またはアプリケーションでシンボル検索パスを指定する方法の詳細については、「 シンボル パス」を参照してください。

DWORD  error;
HANDLE hProcess;

SymSetOptions(SYMOPT_UNDNAME | SYMOPT_DEFERRED_LOADS);

hProcess = GetCurrentProcess();

if (!SymInitialize(hProcess, NULL, TRUE))
{
    // SymInitialize failed
    error = GetLastError();
    printf("SymInitialize returned error : %d\n", error);
    return FALSE;
}