Partager via


Configuration du Registre

SymProxy stocke ses paramètres dans cette clé de Registre.

HKLM/Software/Microsoft/Symbol Server Proxy

Cette clé de Registre contrôle l’emplacement à partir duquel rechercher les symboles à stocker dans le site Web, le niveau de journalisation et si SymProxy fonctionne avec une connexion directe au réseau. Vous pouvez créer cette clé en exécutant l’outil d’inscription SymProxy (Symproxy.reg) fourni avec outils de débogage pour Windows. Tapez symproxy.reg à l’invite de commandes ou double-cliquez dessus à partir de Windows Explorer.

Cela ajoute des entrées pour les paramètres qui seront précédés d’un « x » afin qu’ils soient désactivés. Pour activer un paramètre, supprimez le « x » devant le paramètre souhaité.

[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

Le fichier de Registre symproxy.reg suppose un nom de répertoire virtuel De symboles et configure le chemin d’accès des symboles pour utiliser le serveur de symboles publics 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"

Les entrées de journalisation des événements dans symproxy.reg sont traitées dans la section Journal des événements de cette rubrique.

[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

Les entrées de répertoire web dans symproxy.reg sont traitées dans cette rubrique.

Répertoires web

Pour chaque répertoire virtuel généré dans IIS que vous utilisez comme magasin de symboles, vous devez configurer une clé de Registre sous la sous-clé Répertoires web de la clé de Registre suivante.

HKLM/Software/Microsoft/Symbol Server Proxy

Pour modifier la clé de Registre d’un répertoire virtuel de magasin de symboles

  • Modifiez le contenu de SymbolPath pour qu’il contienne tous les magasins de symboles utilisés par le magasin de symboles SymProxy. Si plusieurs magasins de symboles sont utilisés, séparez-les par des points-virgules. Un maximum de 10 magasins est pris en charge pour chaque valeur. Les chemins HTTP doivent inclure le préfixe https://, et les chemins UNC doivent inclure le \\ préfixe.

Par exemple, si l’un des répertoires virtuels est appelé Symboles et que les magasins de symboles auxquels il accède se trouvent dans le magasin UNC \\symbols\symbols et le magasin https://msdl.microsoft.com/download/symbolsHTTP , créez la clé de Registre suivante.

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

Une fois cette clé créée, modifiez son SymbolPath pour qu’il soit \\symbols\symbols ;https://msdl.microsoft.com/download/symbols. Vous pouvez le voir dans la capture d’écran suivante de l’Éditeur du Registre.

Capture d’écran de l’Éditeur du Registre affichant un SymbolPath mis à jour.

Dans cet exemple, SymProxy recherche d’abord des symboles dans \\symbols\symbols. Si les fichiers sont introuvables, le Magasin de symboles Microsoft est utilisé.

  • Dans chacune des clés sous Répertoires web qui correspondent aux noms de répertoire virtuel, un REG_SZ appelé SymbolPath doit être créé. La valeur contient tous les magasins de symboles amont qui seront utilisés pour remplir le magasin de symboles SymProxy.

  • Un maximum de 10 entrées sont prises en charge.

  • Séparez les entrées par des points-virgules.

  • Les chemins UNC doivent inclure le préfixe « \\ »

  • Les chemins HTTP doivent inclure le préfixe « https:// »

  • Commandez les valeurs du moins cher au plus cher.

    • Vous devez équilibrer les objectifs de performances d’utilisation par rapport aux coûts de communication de données et de serveur dans le calcul.

    • En général, placez les serveurs SMB/HTTP locaux avant les serveurs HTTP Internet.

Compteurs de performances SymProxy

SymProxy peut émettre des compteurs de performances via un fournisseur appelé SymProxy.

Pour activer la prise en charge des compteurs de performances, inscrivez le fichier manifeste symproxy dans une fenêtre de commande administrateur :

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

Pour désactiver la prise en charge des compteurs de performances, annulez l’inscription du manifeste :

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

Suivi d’événements SymProxy pour Windows

SymProxy peut créer des événements ETW via un fournisseur appelé Microsoft-Windows-SymProxy.

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

Pour activer la prise en charge d’ETW, inscrivez le fichier manifeste :

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

Pour désactiver la prise en charge d’ETW, annulez l’inscription du fichier manifeste :

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

Journal des événements

Si ETW est configuré, les événements sont enregistrés en tant qu’événements dans les canaux opérationnels et analytiques sous Journaux des applications et des services\Microsoft\Windows\SymProxy dans le journal des événements.

Pour afficher correctement le message des entrées du journal des événements, la zone Journal des événements du fichier symproxy.reg doit être ajoutée au Registre :

[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

Événements SymProxy

SymProxy journalise les événements suivants :

ID d'événement Description Channel
1 Début du filtre ISAPI Admin
2 Arrêt du filtre ISAPI Admin
3 Configuration du filtre ISAPI Admin
4 Statistiques de cache manquées Admin
10 Requête d’URL - Accès au cache local En fonctionnement
11 Requête d’URL - Absence du cache local En fonctionnement
20 Téléchargement du symbole via SymSrv En fonctionnement
30 Symbole critique manquant Admin
31 Image critique manquante Admin
40 Symsrv : chemin introuvable Admin
41 SymSrv – Fichier introuvable Admin
42 SymSrv – Accès refusé Admin
43 SymSrv – Chemin trop long Admin
49 SymSrv – Code d’erreur Admin
90 Contention de verrouillage En fonctionnement
100 Message critique général Analytiques
101 Message d’erreur général Analytiques
102 Message d’avertissement général Analytiques
103 Message d’information général Analytiques
104 Message analytique général Analytiques
105 Message de débogage général Débogage

Configuration du proxy du serveur de symboles

SymProxy stocke ses paramètres de configuration dans la zone de clé de Registre suivante :

HKLM/Software/Microsoft/Symbol Server Proxy

À partir de cet emplacement, SymProxy acquiert ses paramètres globaux et les chemins d’accès aux symboles de amont magasins de symboles.

Vous pouvez créer cette clé en fusionnant dans le fichier symproxy.reg que vous avez personnalisé, comme indiqué précédemment.

Clé proxy du serveur de symboles

La clé de Registre proxy symbol server prend en charge les paramètres globaux suivants (tous REG_DWORD). Les paramètres peuvent être appliqués en direct en recyclant le pool d’applications. Un nouveau processus w3wp.exe sera créé et il lira les nouvelles valeurs. Une fois que toutes les demandes en attente adressées à l’ancien processus de w3wp.exe sont terminées, l’ancien processus w3wp.exe se termine. PAR défaut, IIS recycle w3wp.exe processus toutes les 1 740 minutes (29 heures).

REG_DWORD Description
NoInternetProxy

Lors de l’exécution en tant que service, SymSrv.dll utilise WinHTTP au lieu de WinInet pour effectuer des requêtes HTTP. Par conséquent, vous devrez peut-être configurer des paramètres de proxy HTTP afin que le service puisse accéder aux ressources réseau externes. Pour ce faire, utilisez le programme netsh. Tapez « netsh.exe winhttp - ? » pour obtenir des instructions.

Par défaut, SymProxy utilise le proxy HTTP désigné. Si aucun proxy HTTP n’est configuré, SymProxy utilise un proxy factice. Cela permet un accès sécurisé aux sites HTTP au sein de votre intranet. Comme effet secondaire, cela empêche SymProxy de se connecter directement à des sites non sécurisés.

  • Non spécifié - (par défaut) Désactivé - Le proxy est utilisé
  • 0 – Désactivé
  • 1+ – Activé

NoFilePointers

Par défaut, pour les symboles qui n’existent pas, SymProxy recherche un fichier file.ptr en regard du fichier demandé (dans le cache local). S’il est trouvé, il retourne l’emplacement spécifié par le fichier file.ptr. Cette fonctionnalité n’est requise que lorsque le cache local est rempli par SymStore.exe.

  • Non spécifié - (par défaut) Désactivé - les fichiers file.ptr sont recherchés/en lecture
  • 0 – Désactivé
  • 1+ – Activé

NoUncompress

Par défaut, SymProxy décompresse les symboles téléchargés avant de renvoyer le fichier à l’appelant. Cela réduit le processeur au niveau du client, mais augmente les E/S.

  • Non spécifié - (par défaut) Désactivé - Décompression se produit
  • 0 – Désactivé
  • 1+ – Activé

NoCache

Par défaut, SymProxy met en cache les symboles téléchargés dans le système de fichiers local, défini par le chemin d’accès du répertoire virtuel.

  • Non spécifié - (par défaut) Désactivé - Mise en cache se produit
  • 0 – Désactivé
  • 1+ – Activé

MissTimeout

Période d’expiration, en secondes, pour laquelle les symboles manquants sont signalés comme manquants sans interroger à nouveau les serveurs de symboles amont.

Une erreur est associée à une heure UTC. Les demandes suivantes pour le fichier sont immédiatement rejetées pendant N secondes.

La première requête du fichier après N secondes entraîne la nouvelle interrogation des magasins de symboles amont.

En cas de réussite, le fichier de symboles est retourné et l’erreur est supprimée.

En cas d’échec, l’absence est déplacée vers l’heure actuelle (en UTC) pour commencer une nouvelle période de délai d’expiration.

Utilisez les compteurs de performances « Miss Cache » pour surveiller les erreurs.

  • Non spécifié : (par défaut) 300 secondes/5 minutes
  • 0 – Fonctionnalité désactivée
  • N : le délai d’expiration dure N secondes

MissAgeCheck

Période entre les vérifications d’âge manqué. Le cache Miss est analysé et les enregistrements antérieurs à MissAgeTimeout secondes sont supprimés.

Les statistiques actuelles sont enregistrées dans le journal des événements à l’aide de l’ID d’événement 4.

  • Non spécifié - (par défaut) 3600 secondes / 1 heure
  • 0 – Fonctionnalité désactivée
  • N : période entre les vérifications en N secondes

MissAgeTimeout

Purgez le délai d’expiration de chaque entrée de cache Miss. L’entrée est vidée en raison de l’absense de toute demande pendant cette période.

  • Non spécifié - (par défaut) 86400 secondes / 1 jour
  • 0 – Fonctionnalité désactivée
  • N : délai d’expiration des entrées en N secondes

NoLongerIndexedAuthoritive

Lorsque cette option est activée, une réponse file.ptr de NoLongerIndexed est traitée comme une autorisation dans tous les magasins de symboles.

Utilisez cette option pour éviter les appels (inutiles) aux serveurs qui n’indexent pas le fichier.

  • Non spécifié - (par défaut) Désactivé
  • 0 – Désactivé
  • 1+ – Activé

RéessayerAppHang

Activez Réessayer dans les magasins de symboles HTTP amont. Cela équivaut à l’option SymSrv SSRVOPT_RETRY_APP_HANG (0x80000000).

À la réception d’un code d’erreur 0x80070512/HRESULT_FROM_WIN32(ERROR_APP_HANG) via l’en-tête de réponse HTTP « Symbol-Agent-Status » à partir d’un magasin de symboles HTTP amont, le socket reste ouvert et le GET est répété jusqu’à « N ».

SymProxy fusionne plusieurs requêtes pour le même URI. Quand une requête en attente atteint 25 secondes, SymProxy retourne 0x80070512 à l’appelant via un en-tête de réponse HTTP « Symbol-Agent-Status », mais continue l’opération en arrière-plan.

Les clients doivent activer l’option SSRVOPT_RETRY_APP_HANG dans SymSrv afin que les demandes (extra) longues soient prises en charge, en chaînant essentiellement la nouvelle tentative amont.

SymProxy prend par défaut le délai d’expiration de la réponse sur 25 secondes, de sorte qu’une réponse est effectuée avant la fermeture du socket au délai d’attente (par défaut) de 30 secondes utilisé par SymSrv pour les magasins de symboles HTTP. Les versions ultérieures de SymSrv envoient leur valeur de délai d’attente HTTP configurée via l’en-tête de requête HTTP « Symbol-Agent-Receive-Timeout » (en mSec). Si cet en-tête de requête HTTP est fourni, cette valeur est utilisée au lieu de la valeur par défaut de 25 secondes.

  • Non spécifié - (par défaut) Désactivé
  • 0 – Désactivé
  • N – Tentatives de nouvelle tentative

UriFilter

Activez le filtrage d’URI. Cela équivaut à l’option SymSrv SSRVOPT_URI_FILTER (0x20000000).

Le filtrage d’URI réduit la variété des requêtes à tous les magasins de symboles amont. Les valeurs sont un masque de bits.

HTTP - SSRVURI_HTTP_MASK (0x0F)

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

UNC - SSRVURI_UNC_MASK (0xF0)

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

UriTiers

Activez les niveaux d’URI. Cela équivaut à l’option SymSrv SSRVOPT_URI_TIERS (0x40000000).

Les niveaux d’URI forcent le schéma de niveau utilisé par tous les magasins de symboles amont. Lorsqu’elle n’est pas définie, une demande supplémentaire est nécessaire pour déterminer le schéma. L’existence de « index2.txt » à la racine indique une disposition à 2 niveaux.

Les magasins à 1 niveau sont au format : /widget.dll/<index>/widget.dll|widget.dl_|file.ptr

Les magasins à 2 niveaux sont au format : /wi/widget.dll/<index>/widget.dll|widget.dl_|file.ptr

  • Non spécifié - (par défaut) Désactivé
  • 0 – Désactivé
  • Magasins de symboles à 1 niveau
  • Magasins de symboles à 2 niveaux

Accès aux ressources réseau externes

Lorsque SymSrv est utilisé conjointement avec SymProxy, il s’exécute en tant que service et utilise l’API WinHTTP pour accéder aux symboles via une connexion HTTP. Cela diffère de son comportement habituel d’utilisation de WinInet à cet effet.

Par conséquent, vous devrez peut-être configurer les paramètres de proxy HTTP afin que ce service puisse accéder aux ressources réseau externes. Utilisez l’une des méthodes suivantes pour configurer ces paramètres :

  • Utilisez l’outil Netsh (netsh.exe). Pour obtenir des instructions, tapez ce qui suit dans une fenêtre d’invite de commandes :

    netsh winhttp -? 
    

Le comportement par défaut de SymProxy consiste à utiliser n’importe quel proxy HTTP désigné par ProxyCfg ou Netsh. Si aucun proxy HTTP n’est configuré, SymProxy utilise un proxy factice pour autoriser l’accès aux sites HTTP sécurisés au sein de votre intranet. En guise d’effet secondaire, cette technique empêche SymProxy de fonctionner avec des connexions directes à l’Internet externe. Si vous souhaitez autoriser SymProxy à fonctionner avec une connexion directe à Internet, créez une valeur REG_DWORD nommée NoInternetProxy dans la clé symbol server proxy de votre registre. Définissez la valeur de NoInternetProxy sur 1 et vérifiez qu’aucun proxy HTTP n’est indiqué par ProxyCfg.