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

次のコードは、シンボルハンドラーを初期化する方法を示しています。 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;
}