シンボル サーバーとインターネット ファイアウォール

一部のシステムでは、すべてのインターネット トラフィックに対して認証を必要とするインターネット ファイアウォールまたはプロキシ サーバーを使用しています。 シンボル サーバーの初期のバージョンでは、システムが認証を透過的に処理するファイアウォール クライアントを使用しない限り、インターネットからシンボルにアクセスできませんでした。

Dbghelp 6.1 以降では、シンボル サーバーは、このような認証を必要とするプロキシ サーバーをサポートしています。 シンボル サーバーは、コンピューターの LAN 設定で既定として構成されているサーバーを使用します。 これを見つけるには、コントロール パネルで [インターネット オプション] 項目を開き、[接続] タブをクリックし、[LAN 設定] をクリックします。 これは、[ツール] メニューの [インターネット オプション] をクリックして、インターネット エクスプローラーから行うこともできます。 シンボル サーバーは、基本認証方法とチャレンジ レスポンス認証方法の両方を使用して、多くのブランドのプロキシ サーバーでテストされています。

シンボル サーバーが使用する特定のプロキシ サーバーを定義するには、_NT_SYMBOL_PROXY 環境変数をプロキシ サーバーの名前 (または IP アドレス) に続けてポート番号に設定します。 2 つの値をコロンで区切ります。 次に例を示します。

set _NT_SYMBOL_PROXY=myproxyserver:80

windbg デバッガーを使用する場合は、使用するシンボル ストアを指すシンボル パスを構成します。 1 つの違いは、プロキシ サーバーに渡すためのユーザー ID とパスワードを入力する必要があるダイアログ ボックスが表示されることです。 正しくない情報を入力すると、ダイアログ ボックスが再表示されます。 [キャンセル] ボタンをクリックすると、ダイアログ ボックスが閉じられ、シンボル サーバーがインターネット経由で使用できなくなります。

最新バージョンの cdb.exe または ntsd.exe を使用する場合、この機能は既定でオフになっています。 ただし、次のように !sym 拡張機能コマンドを使用して、この機能を有効または無効にできます。

  • ユーザー ID とパスワードの入力を求めるメッセージを有効にするには、!sym prompts を使用します。
  • ユーザー ID とパスワードの入力を求めるメッセージを無効にするには、!sym prompts offを使用します。

プロンプトをオンにする場合は、.reload コマンドを使用してシンボルを再読み込みする必要があります。

これらの変更をサポートするために、DbgHelp API が拡張されました。 SymbolServerSetOptions 関数は、SSRVOPT_PROXY オプションをサポートしています。 データ パラメーターが NULL の場合、インターネット オプションで定義されている既定のプロキシが使用されます。 それ以外の場合は、プロキシ サーバーの名前とポート番号を指定する 0 で終わる文字列が渡されます。 名前とポートは、myproxyserver:80 のようにコロンで区切られます。 SymSetOptions 関数は、SYMOPT_NO_PROMPTS オプションをサポートしています。 これにより、シンボル サーバーからの検証を求めるメッセージがすべてオフになります。