Condividi tramite


Configurazione del Registro di sistema

SymProxy archivia le impostazioni in questa chiave del Registro di sistema.

HKLM/Software/Microsoft/Symbol Server Proxy

Questa chiave del Registro di sistema controlla il percorso da cui trovare i simboli da archiviare nel sito Web, il livello di registrazione e se SymProxy opera con una connessione diretta alla rete. È possibile creare questa chiave eseguendo lo strumento di registrazione SymProxy (Symproxy.reg) fornito con Gli strumenti di debug per Windows. Digitare symproxy.reg al prompt dei comandi o fare doppio clic su di esso da Esplora risorse.

Verranno aggiunte voci per le impostazioni con prefisso "x" in modo che siano disabilitate. Per abilitare un'impostazione, rimuovere "x" da davanti all'impostazione desiderata.

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Symbol Server Proxy]
"Available Settings"="Remove the 'x' prefix to use the setting"
"xMissAgeTimeout"=dword:00015180
"xMissAgeCheck"=dword:00000e10
"xMissTimeout"=dword:00000e10
"xNoCache"=dword:00000001
"xNoFilePointers"=dword:00000001
"xNoInternetProxy"=dword:00000001
"xNoLongerIndexedAuthoritive"=dword:00000001
"xNoUncompress"=dword:00000001
"xRequestTimeout"=dword:0000019
"xRetryAppHang"=dword:0000002
"xUriFilter"=dword:00000FF
"xUriTiers"=dword:0000001

Il file del Registro di sistema symproxy.reg presuppone un nome di directory virtuale symbols e configura il percorso del simbolo per l'uso del server dei simboli pubblico Microsoft.

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Symbol Server Proxy\Web Directories]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Symbol Server Proxy\Web Directories\Symbols]
"SymbolPath"="https://msdl.microsoft.com/download/symbols"

Le voci di registrazione eventi in symproxy.reg sono descritte nella sezione Registro eventi di questo argomento.

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\Microsoft-Windows-SymProxy]
"ProviderGuid"="{0876099c-a903-47ff-af14-52035bb479ef}"
"EventMessageFile"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,\
  00,6f,00,74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,\
  5c,00,69,00,6e,00,65,00,74,00,73,00,72,00,76,00,5c,00,53,00,79,00,6d,00,50,\
  00,72,00,6f,00,78,00,79,00,2e,00,64,00,6c,00,6c,00,00,00
"TypesSupported"=dword:00000007

Le voci della directory Web in symproxy.reg sono descritte in questo argomento.

Directory Web

Per ogni directory virtuale generata in IIS che si usa come archivio simboli, è necessario configurare una chiave del Registro di sistema sotto la sottochiave Directory Web della chiave del Registro di sistema seguente.

HKLM/Software/Microsoft/Symbol Server Proxy

Per modificare la chiave del Registro di sistema per una directory virtuale dell'archivio simboli

  • Modificare il contenuto di SymbolPath in modo che contenga tutti gli archivi simboli utilizzati dall'archivio simboli SymProxy. Se è in uso più di un archivio simboli, separarli con un punto e virgola. Per ogni valore è supportato un massimo di 10 archivi. I percorsi HTTP devono includere il prefisso https:// e i percorsi UNC devono includere il \\ prefisso .

Ad esempio, se una delle directory virtuali è denominata Simboli e i simboli archiviano gli accessi si trovano nell'archivio UNC \\symbols\symbols e nell'archivio https://msdl.microsoft.com/download/symbolsHTTP , creare la chiave del Registro di sistema seguente.

HKLM/Software/Microsoft/Symbol Server Proxy/Web Directories/Symbols

Dopo aver creato questa chiave, modificare il relativo Percorso simbolo in modo che sia \\symbols\symbols;https://msdl.microsoft.com/download/symbols. Questa operazione può essere visualizzata nello screenshot seguente dell'editor del Registro di sistema.

Screenshot dell'editor del Registro di sistema che visualizza un oggetto SymbolPath aggiornato.

In questo esempio SymProxy cerca innanzitutto i simboli in \\symbols\symbols. Se i file non vengono trovati, verrà usato Microsoft Symbol Store.

  • In ognuna delle chiavi in Directory Web che corrispondono ai nomi di Directory virtuali, deve essere creata una REG_SZ denominata SymbolPath. Il valore contiene tutti gli archivi di simboli upstream che verranno usati per popolare l'archivio simboli SymProxy.

  • Sono supportate al massimo 10 voci.

  • Separare le voci con punto e virgola.

  • I percorsi UNC devono includere il prefisso "\\"

  • I percorsi HTTP devono includere il prefisso "https://"

  • Ordinare i valori dal meno costoso al più costoso.

    • Sarà necessario bilanciare gli obiettivi di prestazioni di utilizzo rispetto ai costi di comunicazione dei dati e del server nel calcolo.

    • In generale, inserire server SMB/HTTP locali prima dei server HTTP Internet.

Contatori delle prestazioni SymProxy

SymProxy può generare contatori delle prestazioni tramite un provider denominato SymProxy.

Per abilitare il supporto dei contatori delle prestazioni, registrare il file manifesto symproxy in una finestra di comando dell'amministratore:

C:\> lodctr.exe /m:%WINDIR%\system32\inetsrv\symproxy.man

Per disabilitare il supporto dei contatori delle prestazioni, annullare la registrazione del manifesto:

C:\> unlodctr.exe /m:%WINDIR%\system32\inetsrv\symproxy.man

Traccia eventi SymProxy per Windows

SymProxy può creare eventi ETW tramite un provider denominato Microsoft-Windows-SymProxy.

C:\> logman query providers | findstr SymProxy
Microsoft-Windows-SymProxy {0876099C-A903-47FF-AF14-52035BB479EF}

Per abilitare il supporto ETW, registrare il file manifesto:

C:\> wevtutil.exe install-manifest %WINDIR%\system32\inetsrv\symproxy.man

Per disabilitare il supporto ETW, annullare la registrazione del file manifesto:

C:\> wevtutil.exe uninstall-manifest %WINDIR%\system32\inetsrv\symproxy.man

Registro eventi

Se ETW è configurato, gli eventi vengono registrati come eventi nei canali operativi e analitici in Registri applicazioni e servizi\Microsoft\Windows\SymProxy nel registro eventi.

Per visualizzare correttamente il messaggio delle voci del registro eventi, è necessario aggiungere al Registro eventi l'area registro eventi del file symproxy.reg:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\Microsoft-Windows-SymProxy]
"ProviderGuid"="{0876099c-a903-47ff-af14-52035bb479ef}"
"EventMessageFile"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,\
  00,6f,00,74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,\
  5c,00,69,00,6e,00,65,00,74,00,73,00,72,00,76,00,5c,00,53,00,79,00,6d,00,50,\
  00,72,00,6f,00,78,00,79,00,2e,00,64,00,6c,00,6c,00,00,00
"TypesSupported"=dword:00000007

Eventi SymProxy

SymProxy registra gli eventi seguenti:

ID evento Descrizione Channel
1 Inizio del filtro ISAPI Admin
2 Arresto del filtro ISAPI Admin
3 Configurazione del filtro ISAPI Admin
4 Statistiche di mancata memorizzazione nella cache Admin
10 Richiesta URL - Riscontri nella cache locale Operativo
11 Richiesta URL - Mancata memorizzazione nella cache locale Operativo
20 Download dei simboli tramite SymSrv Operativo
30 Simbolo critico mancante Admin
31 Immagine critica mancante Admin
40 SymSrv - Percorso non trovato Admin
41 SymSrv - File non trovato Admin
42 SymSrv - Accesso negato Admin
43 SymSrv - Percorso troppo lungo Admin
49 SymSrv : codice di errore Admin
90 Conflitti di blocco Operativo
100 Messaggio critico generale Analitici
101 Messaggio di errore generale Analitici
102 Messaggio di avviso generale Analitici
103 Messaggio informativo generale Analitici
104 Messaggio analitico generale Analitici
105 Messaggio di debug generale Debug

Configurazione proxy del server di simboli

SymProxy archivia le impostazioni di configurazione nell'area della chiave del Registro di sistema seguente:

HKLM/Software/Microsoft/Symbol Server Proxy

Da questa posizione, SymProxy acquisisce le impostazioni globali e i percorsi dei simboli upstream store.

È possibile creare questa chiave combinando il file symproxy.reg personalizzato come illustrato in precedenza.

Chiave proxy del server simboli

La chiave del Registro di sistema Proxy del server simboli supporta le impostazioni globali seguenti (tutte le REG_DWORD). Le impostazioni possono essere applicate in tempo reale riciclando il pool di applicazioni. Verrà creato un nuovo processo di w3wp.exe e verrà letto i nuovi valori. Una volta completate tutte le richieste in sospeso al processo di w3wp.exe precedente, il processo di w3wp.exe precedente terminerà. IIS per impostazione predefinita ricicla w3wp.exe processi ogni 1.740 minuti (29 ore).

REG_DWORD Descrizione
NoInternetProxy

Quando si esegue come servizio, SymSrv.dll usa WinHTTP anziché WinInet per effettuare richieste HTTP. Di conseguenza, potrebbe essere necessario configurare le impostazioni proxy HTTP in modo che il servizio possa accedere alle risorse di rete esterne. È possibile eseguire questa operazione usando il programma netsh. Digitare "netsh.exe winhttp -?" per istruzioni.

Per impostazione predefinita, SymProxy usa il proxy HTTP designato. Se non è configurato alcun proxy HTTP, SymProxy userà un proxy fittizio. Ciò consente l'accesso sicuro ai siti HTTP all'interno della intranet. Questo impedisce a SymProxy di connettersi direttamente ai siti non sicuri.

  • Non specificato - (impostazione predefinita) Disabilitato - Viene usato il proxy
  • 0: disabilitato
  • 1+ – Abilitato

NoFilePointers

Per impostazione predefinita, per i simboli che non esistono, SymProxy cercherà un file file file.ptr accanto al file richiesto (nella cache locale). Se trovato, restituirà il percorso specificato dal file file.ptr. Questa capacità è necessaria solo quando la cache locale viene popolata da SymStore.exe.

  • Non specificato - (impostazione predefinita) Disabilitato - i file file file.ptr vengono cercati/letti
  • 0: disabilitato
  • 1+ – Abilitato

NoUncompress

Per impostazione predefinita, SymProxy decompresserà i simboli scaricati prima di restituire il file al chiamante. Ciò riduce la CPU nel client, ma aumenta l'I/O.

  • Non specificato - (impostazione predefinita) Disabilitata - Si verifica la decompressione
  • 0: disabilitato
  • 1+ – Abilitato

Nocache

Per impostazione predefinita, SymProxy memorizza nella cache i simboli scaricati nel file system locale, definito dal percorso della directory virtuale.

  • Non specificato - (impostazione predefinita) Disabilitato - La memorizzazione nella cache si verifica
  • 0: disabilitato
  • 1+ – Abilitato

MissTimeout

Periodo di timeout, in secondi, per cui i simboli mancanti vengono segnalati come mancanti senza eseguire nuovamente query sui server simboli upstream.

Un errore è associato a un'ora UTC. Le richieste successive per il file vengono immediatamente rifiutate per N secondi.

La prima richiesta per il file dopo N secondi causa la ri query degli archivi simboli upstream.

In caso di esito positivo, il file di simboli viene restituito e la mancanza viene eliminata.

In caso di errore, l'errore viene spostato in avanti all'ora corrente (in UTC) per avviare un nuovo periodo di timeout.

Usare i contatori delle prestazioni "Miss Cache" per monitorare gli errori.

  • Non specificato - (impostazione predefinita) 300 secondi/5 minuti
  • 0 - Funzionalità disabilitata
  • N - Timeout dura N secondi

MissAgeCheck

Periodo tra i controlli di Miss Age. La cache miss viene analizzata e i record precedenti a MissAgeTimeout secondi vengono rimossi.

Le statistiche correnti vengono salvate nel registro eventi usando l'ID evento 4.

  • Non specificato - (impostazione predefinita) 3600 secondi/1 ora
  • 0 - Funzionalità disabilitata
  • N - Periodo tra i controlli in N secondi

MissAgeTimeout

Timeout di eliminazione di ogni voce della cache miss. La voce viene eliminata a causa dell'interruzione di qualsiasi richiesta per tutto questo periodo.

  • Non specificato - (impostazione predefinita) 86400 secondi/1 giorno
  • 0 - Funzionalità disabilitata
  • N - Timeout delle voci in N secondi

NoLongerIndexedAuthoritive

Se abilitata, una risposta file.ptr di NoLongerIndexed verrà considerata come autoriva in tutti gli archivi simboli.

Usare questa opzione per evitare chiamate (non necessarie) ai server che non indicizzano il file.

  • Non specificato - (impostazione predefinita) Disabilitato
  • 0: disabilitato
  • 1+ – Abilitato

RiprovareAppHang

Abilitare Riprovare agli archivi simboli HTTP upstream. Equivale all'opzione SSRVOPT_RETRY_APP_HANG SymSrv (0x80000000).

Nella ricezione di un codice di errore 0x80070512/HRESULT_FROM_WIN32(ERROR_APP_HANG) tramite l'intestazione di risposta HTTP "Symbol-Agent-Status" da un archivio simboli HTTP upstream, il socket verrà mantenuto aperto e il get verrà ripetuto fino a 'N' volte.

SymProxy raggruppa più richieste per lo stesso URI. Quando una richiesta in sospeso raggiunge 25 secondi, SymProxy restituirà 0x80070512 al chiamante tramite un'intestazione di risposta HTTP symbol-agent-status, ma continua l'operazione in background.

I client devono abilitare l'opzione SSRVOPT_RETRY_APP_HANG in SymSrv in modo che le richieste lunghe (aggiuntive) siano supportate, in sostanza concatenando i tentativi a monte.

SymProxy consente di impostazione predefinita il timeout della risposta a 25 secondi in modo che una risposta venga eseguita prima che il socket venga chiuso al timeout (impostazione predefinita) 30 secondi usato da SymSrv per gli archivi simboli HTTP. Le versioni successive di SymSrv inviano il valore di timeout HTTP configurato tramite l'intestazione della richiesta HTTP "Symbol-Agent-Receive-Timeout" (in mSec). Se viene specificata questa intestazione della richiesta HTTP, questo valore viene usato anziché il valore predefinito 25 secondi.

  • Non specificato - (impostazione predefinita) Disabilitato
  • 0: disabilitato
  • N - Tentativi di ripetizione dei tentativi

UriFilter

Abilitare il filtro URI. Equivale all'opzione SSRVOPT_URI_FILTER symsrv (0x20000000).

Il filtro URI riduce la varietà di richieste a tutti gli archivi simboli upstream. I valori sono una maschera di bit.

HTTP - SSRVURI_HTTP_MASK (0x0F)

  • 0x01 - SSRVURI_HTTP_NORMAL , ad esempio http://symbols/.../foo.pdb
  • 0x02 , SSRVURI_HTTP_COMPRESSED, ad esempio http://symbols/.../foo.pd_
  • 0x04 - SSRVURI_HTTP_FILEPTR , ad esempio http://symbols/.../file.ptr

UNC - SSRVURI_UNC_MASK (0xF0)

  • 0x10 - SSRVURI_UNC_NORMAL , ad esempio \\MyServer\Symbols\...\foo.pdb
  • 0x20 - SSRVURI_UNC_COMPRESSED , ad esempio \\MyServer\Symbols\...\foo.pd_
  • 0x40 - SSRVURI_UNC_FILEPTR, ad esempio \\MyServer\Symbols\...\file.ptr

UriTiers

Abilitare i livelli URI. Equivale all'opzione SSRVOPT_URI_TIERS symsrv (0x40000000).

I livelli URI forzano lo schema livello usato da tutti gli archivi simboli upstream. Quando non è impostato, è necessaria una richiesta aggiuntiva per determinare lo schema. L'esistenza di 'index2.txt' nella radice indica un layout a 2 livelli.

Gli archivi a 1 livello sono in formato: /widget.dll/<index>/widget.dll|widget.dl_|file.ptr

Gli archivi a 2 livelli sono in formato: /wi/widget.dll/<index>/widget.dll|widget.dl_|file.ptr

  • Non specificato - (impostazione predefinita) Disabilitato
  • 0: disabilitato
  • 1 - Archivi simboli a 1 livelli
  • 2 - Archivi simboli a 2 livelli

Accesso alle risorse di rete esterne

Quando SymSrv viene usato insieme a SymProxy, viene eseguito come servizio e usa l'API WinHTTP per accedere ai simboli tramite una connessione HTTP. Ciò è diverso dal comportamento consueto dell'uso di WinInet per questo scopo.

Di conseguenza, potrebbe essere necessario configurare le impostazioni proxy HTTP in modo che questo servizio possa accedere alle risorse di rete esterne. Usare uno dei metodi seguenti per configurare queste impostazioni:

  • Usare lo strumento Netsh (netsh.exe). Per istruzioni, digitare quanto segue in una finestra del prompt dei comandi:

    netsh winhttp -? 
    

Il comportamento predefinito di SymProxy consiste nell'usare qualsiasi proxy HTTP designato da ProxyCfg o Netsh. Se non è configurato alcun proxy HTTP, SymProxy usa un proxy fittizio per consentire l'accesso ai siti HTTP protetti all'interno della intranet. Come effetto collaterale, questa tecnica impedisce a SymProxy di lavorare con connessioni dirette a Internet esterno. Se si vuole consentire a SymProxy di funzionare con una connessione diretta a Internet, creare un valore REG_DWORD denominato NoInternetProxy nella chiave proxy del server di simboli del registro. Impostare il valore di NoInternetProxy su 1 e verificare che non sia presente alcun proxy HTTP indicato da ProxyCfg.