Compartir a través de


Uso de SymSrv

SymSrv ofrece archivos de símbolos de almacenes de símbolos centralizados. Estos almacenes pueden contener cualquier número de archivos de símbolos, correspondientes a cualquier número de programas o sistemas operativos. Los almacenes también pueden contener archivos binarios, que son especialmente útiles al depurar archivos minivolcados.

Los almacenes pueden contener el símbolo real y los archivos binarios o simplemente punteros a archivos de símbolos. Si el almacén contiene punteros, SymSrv recuperará los archivos reales directamente de sus orígenes.

SymSrv también puede separar un almacén de símbolos grande en un subconjunto más pequeño adecuado para una tarea de depuración especializada.

Por último, SymSrv puede obtener archivos de símbolos de un origen HTTP o HTTPS mediante la información de inicio de sesión proporcionada por el sistema operativo. SymSrv admite sitios HTTPS protegidos por tarjetas inteligentes, certificados y inicios de sesión y contraseñas normales.

Establecer la ruta de acceso del símbolo

Como se describe en Rutas de acceso de símbolos, la ruta de acceso del símbolo (_NT_SYMBOL_PATH variable de entorno) se puede componer de varios elementos de ruta de acceso separados por punto y coma. Si uno o varios de estos elementos de ruta de acceso comienzan con el texto "srv*", el elemento es un servidor de símbolos y usará SymSrv para buscar archivos de símbolos.

Nota:

Si no se especifica el texto "srv*", pero el elemento de ruta de acceso real es un almacén de servidor de símbolos, el controlador de símbolos actuará como si se especificara "srv*". El controlador de símbolos realiza esta determinación buscando la existencia de un archivo denominado "pingme.txt" en el directorio raíz de la ruta de acceso especificada.

 

Al igual que las rutas de acceso de símbolos se componen de elementos de ruta de acceso de símbolos separados por punto y coma, los servidores de símbolos se componen de elementos de almacén de símbolos separados por asteriscos. Puede haber hasta 10 almacenes de símbolos después del prefijo "srv*". Las tiendas que aparecen a la izquierda de la lista se denominan almacenes descendentes y las tiendas a la derecha se denominan almacenes ascendentes .

srv\**SymbolStore* srv\**SymbolStore1*\**SymbolStoreN*

Si solo se incluye un elemento de almacén de símbolos en la ruta de acceso, SymSrv intentará usar el archivo solicitado directamente desde ese almacén.

Si hay dos almacenes de símbolos en la ruta de acceso, SymSrv busca el archivo de símbolos en el almacén de símbolos situado más a la izquierda. Si el archivo está ahí, se usa. Si no está ahí, SymSrv busca en el almacén de símbolos inmediatamente a la derecha. Si el archivo está allí, se copia en el almacén izquierdo y se abre desde allí.

Si hay más de dos almacenes, este comportamiento continúa hacia la derecha hasta que se encuentra el archivo o no hay más almacenes en la lista.

El archivo nunca se abre desde cualquier almacén, pero el almacén situado más a la izquierda. Si el archivo se encuentra en cualquier otro lugar de la cadena, se copia en cada almacén a la izquierda. Este proceso de copia se denomina "en cascada" y proporciona ciertas ventajas que se declararán más adelante en este documento.

Tipos de almacenes de símbolos

En la tabla siguiente se muestran ejemplos de los tipos de almacén de símbolos admitidos.

Tipo de almacén de símbolos Descripción
\\server\share Ruta de acceso UNC completa a un recurso compartido en un servidor remoto.
c:\LocalCache Ruta de acceso a un directorio en el equipo cliente.
https://InternetSite Dirección URL de un sitio web que hospeda los símbolos. Debe ser el almacén más a la derecha de la lista y no debe ser el único almacén de la lista.
https://SecureInternetSite Dirección URL de un sitio web seguro que hospeda los símbolos. Esto puede admitir contraseñas, credenciales de inicio de sesión de Windows, certificados y tarjetas inteligentes. Debe ser el almacén más a la derecha de la lista y no debe ser el único almacén de la lista.
<blank> Si no hay texto entre dos asteriscos, esto indica el almacén de bajada predeterminado. La ubicación se establece mediante una llamada a SymSetHomeDirectory. El valor predeterminado es un directorio denominado "sym" inmediatamente debajo del directorio de programa de la aplicación que realiza la llamada. Esto se conoce a veces como la memoria caché local predeterminada.

 

Dado que no se puede escribir un almacén de símbolos basado en HTTP, debe ser el almacén más a la derecha de la lista. Si un almacén de símbolos basado en HTTP se encuentra en el centro o a la izquierda de la lista de tiendas, no sería posible copiar los archivos encontrados en él y la cadena se rompería. Además, dado que el controlador de símbolos no puede abrir un archivo desde un sitio web, un almacén basado en HTTP no debe ser el extremo izquierdo o solo almacenarlo en la lista. Si SymSrv se presenta alguna vez con esta ruta de acceso de símbolo, intentará recuperarse copiando el archivo en el almacén de bajada predeterminado y ábralo desde allí, independientemente de si el almacén de bajada predeterminado se indica en la ruta de acceso del símbolo o no.

Ejemplos

Para usar SymSrv con un almacén de símbolos en \\mybuilds\mysymbols, establezca la siguiente ruta de acceso de símbolo:

set _NT_SYMBOL_PATH= srv*\\mybuilds\mysymbols

Para establecer la ruta de acceso del símbolo para que el depurador copie los archivos de símbolos de un almacén de símbolos en \\mybuilds\mysymbols en el directorio local c:\localsymbols, use:

set _NT_SYMBOL_PATH=srv*c:\localsymbols*\\mybuilds\mysymbols

Para establecer la ruta de acceso del símbolo para que el depurador copie los archivos de símbolos de un almacén de símbolos en \\mybuilds\mysymbols en el almacén de bajada predeterminado (normalmente c:\debuggers\sym), use:

set _NT_SYMBOL_PATH=srv**\\mybuilds\mysymbols

Para usar un almacén en cascada, establezca la siguiente ruta de acceso de símbolo:

set _NT_SYMBOL_PATH = srv*c:\localsymbols*\\NearbyServer\store*https://DistantServer

En este ejemplo, SymSrv busca primero el archivo en c:\localsymbols. Si se encuentra allí, devolverá una ruta de acceso al archivo. De lo contrario, SymSrv busca el archivo en \\NearbyServer\store. Si se encuentra allí, SymSrv copia el archivo en c:\localsymbols y devuelve una ruta de acceso al archivo; Si no se encuentra, SymSrv busca el archivo en https://DistantServery, si se encuentra allí, SymSrv copia el archivo en \\NearbyServer\store y, a continuación, en c:\localsymbols.

En este último ejemplo se muestra cómo se puede usar el diseño prudente de una ruta de acceso de símbolos para optimizar la descarga de símbolos. Si tiene un sitio de trabajo con un grupo de depuradores y todos ellos necesitan obtener símbolos de una ubicación lejana, puede configurar un servidor común con un almacén de símbolos cerca de todos los depuradores. Después, configure cada depurador con la ruta de acceso de símbolo anterior. El primer depurador que requiere una determinada versión de foo.pdb la descargará de https://DistantServer a \\NearbyServer\store y, a continuación, a su propio equipo en c:\localsymbols. El siguiente depurador que requiere el mismo archivo podrá descargarlo desde \\NearbyServer\store porque ya lo descargó el depurador anterior. Este almacenamiento en caché de varios niveles ahorra mucho tiempo y ancho de banda de red.

Microsoft Symbol Store

Microsoft proporciona acceso a un servidor de símbolos de Internet que contiene archivos de símbolos para las muchas versiones del sistema operativo Windows. No se garantiza que este catálogo de símbolos esté completo, pero es extenso. También se representan otros productos de Microsoft.

El servidor de símbolos de Internet se rellena con una variedad de símbolos de Windows para sistemas operativos Microsoft Windows, incluidas correcciones de acceso rápido, Service Packs, paquetes acumulativos de seguridad y versiones comerciales. Los símbolos también están disponibles en el servidor para los productos beta actuales y candidatos de lanzamiento para Windows, además de una variedad de otros productos de Microsoft, como Microsoft Internet Explorer.

Si tiene acceso a Internet durante la depuración, puede configurar el depurador para descargar símbolos según sea necesario durante una sesión de depuración, en lugar de descargar archivos de símbolos por separado antes de una sesión de depuración. Los símbolos se descargan en una ubicación de directorio que especifique y, a continuación, el depurador los carga desde allí.

La dirección URL del almacén de símbolos de Microsoft es https://msdl.microsoft.com/download/symbols. En el ejemplo siguiente se muestra cómo establecer la ruta de acceso del símbolo del depurador (sustituya la ruta de acceso del almacén de bajada por c:\DownstreamStore):

srv*c:\DownstreamStore*https://msdl.microsoft.com/download/symbols

Archivos comprimidos

SymSrv es compatible con los almacenes de símbolos que contienen archivos comprimidos, siempre que esta compresión se haya formado previamente con la herramienta compress.exe que se distribuyó con el Kit de recursos de Windows Server 2003. Los archivos comprimidos deben tener un carácter de subrayado como último carácter en sus extensiones de archivo (por ejemplo, module1.pd_ o module2.db_). Para obtener más información, consulte Uso de SymStore.

Cuando se ejecuta en cascada, los archivos no se descomprimen a menos que el almacén de destino sea el almacén situado más a la izquierda en la ruta de acceso. Si solo hay un almacén en la ruta de acceso y contiene un archivo comprimido, SymSrv copiará el archivo en el almacén de bajada predeterminado y lo abrirá desde allí, aunque el almacén de bajada predeterminado no se indique en la ruta de acceso del símbolo.

DbgHelp 6.1 y versiones anteriores. Si los archivos del almacén maestro están comprimidos, debe usar un almacén de bajada. SymSrv descomprimirá todos los archivos antes de copiarlos en el almacén de bajada.

Eliminación de la memoria caché

Si usa un almacén de bajada como caché, puede eliminar este directorio en cualquier momento para ahorrar espacio en disco.

Es posible tener un gran almacén de símbolos que incluya archivos de símbolos para muchos programas diferentes o versiones de Windows. Si actualiza la versión de Windows usada en el equipo de destino, todos los archivos de símbolos almacenados en caché coincidirán con la versión anterior. Estos archivos almacenados en caché no serán de ningún uso adicional y, por lo tanto, esto puede ser un buen momento para eliminar la memoria caché.

Herramientas de depuración para Windows incluye una utilidad denominada agestore.exe que quitará de forma selectiva los archivos de un árbol de directorios, dejando los archivos usados más recientemente. Esta herramienta está diseñada para eliminar archivos sin usar de los almacenes de servidores de símbolos. Permite controlar muchas opciones, incluidos los algoritmos de fecha límite y tamaño de directorio.

Directorio de caché plana

Es posible declarar el almacén de bajada predeterminado como un directorio plano, en lugar de una estructura de árbol de símbolos estándar. Para ello, llame a la función SymSetOptions con SYMOPT_FLAT_DIRECTORY (esto también establece la opción SSRVOPT_FLAT_DEFAULT_STORE en SymSrv). Asegúrese de llamar a SymSetHomeDirectory antes de hacerlo; de lo contrario, los archivos de símbolos se pueden escribir en el directorio del programa.

Archivos de puntero

SymStore puede crear y usar archivos que apunten a un archivo de destino en lugar del propio archivo de destino. Si un almacén de símbolos contiene este tipo de archivo de puntero, el valor predeterminado es copiar el archivo de la ubicación indicada en el archivo de puntero al almacén. Para configurar un almacén de forma que el archivo de puntero se copie en lugar del archivo al que apunta, cree un archivo denominado wantsptr.txt en la raíz del almacén de destino. El contenido de wantsptr.txt no es importante, solo la presencia del archivo.

Excluir archivos de la lista de símbolos

Para excluir archivos de una búsqueda de símbolos, puede especificar sus nombres en symsrv.ini o en el Registro. Para especificar los archivos en symsrv.ini, cree una sección denominada Exclusiones y enumere los archivos. Los nombres de archivo pueden contener caracteres comodín, como se muestra en el ejemplo siguiente:

[Exclusions]
dbghelp.pdb
symsrv.*
mso*

Symsrv.ini debe encontrarse en el mismo directorio que reside symsrv.dll. En la mayoría de las instalaciones, el archivo no existe y tendrá que crear uno nuevo.

Como alternativa, puede almacenar los archivos que se excluirán en el Registro. Cree la siguiente clave del Registro: HKEY_LOCAL_MACHINE\Software\Microsoft\Symbol Server\Exclusions. Almacene cada nombre de archivo como un valor de cadena (REG_SZ) dentro de esta clave. El nombre del valor de cadena especifica el nombre del archivo que se va a excluir. Puede usar el contenido del valor de cadena para almacenar un comentario que describa por qué se excluye el archivo.

Instalación

El servidor de símbolos SymSrv (symsrv.dll) se incluye en el paquete Herramientas de depuración para Windows. Debe instalarse en el mismo directorio que la copia de dbghelp.dll que está cargando. Para obtener más información, vea Llamar a la biblioteca DbgHelp.