符號伺服器和因特網防火牆

某些系統會使用需要驗證所有因特網流量的因特網防火牆或 Proxy 伺服器。 除非系統使用以透明方式處理驗證的防火牆客戶端,否則舊版符號伺服器無法從因特網存取符號。

從 Dbghelp 6.1 開始,符號伺服器支援需要這類驗證的 Proxy 伺服器。 符號伺服器會使用電腦 LAN 設定中設定為預設值的任何伺服器。 若要尋找此專案,請在 [控制台] 中開啟 [因特網選項] 專案,按兩下 [連線] 索引標籤,然後按兩下 [LAN 設定]。 您也可以單擊 [工具] 功能表上的 [因特網選項],從 Internet Explorer 完成此動作。 符號伺服器已在許多 Proxy 伺服器上使用基本和挑戰回應驗證方法進行測試。

若要定義要使用的符號伺服器的特定 Proxy 伺服器,請將_NT_SYMBOL_PROXY環境變數設定為 Proxy 伺服器的名稱(或 IP 位址),後面接著埠號碼。 使用冒號分隔兩個值。 例如:

set _NT_SYMBOL_PROXY=myproxyserver:80

使用windbg調試程式時,請將符號路徑設定為指向您想要使用的符號存放區。 其中一個差異在於系統會顯示一個對話框,您必須輸入使用者標識碼和密碼,才能傳遞至 Proxy 伺服器。 如果您輸入不正確的資訊,對話框將會重新顯示。 如果您按下 [ 取消 ] 按鈕,則會關閉對話方塊,而且符號伺服器將會停用以透過因特網使用。

使用最新版本的cdb.exe或ntsd.exe時,預設會關閉此功能。 不過,您可以使用 !sym 擴充功能命令來啟用或停用此功能,如下所示:

  • 若要開啟提示使用者標識碼和密碼: !sym 提示
  • 若要關閉提示使用者標識碼和密碼: !sym 會提示關閉

如果您開啟提示,您必須使用 .reload 命令重載符號。

DbgHelp API 已展開以支持這些變更。 SymbolServerSetOptions 函式支援 SSRVOPT_PROXY 選項。 如果數據參數為 NULL,則會使用因特網選項定義的預設 Proxy。 否則會傳遞以零結尾的字串,以指定 Proxy 伺服器的名稱和埠號碼。 名稱和埠會以冒號分隔,如下所示: myproxyserver:80。 SymSetOptions 函式支援 SYMOPT_NO_PROMPTS 選項。 這會關閉符號伺服器的所有驗證提示。