Nube o pruebas distribuidas de AddressSanitizer

No tiene que depurar los errores addressSanitizer cuando y dónde se producen. Configure el tiempo de ejecución para crear un volcado de memoria que almacena todo el contexto específico de AddressSanitizer cuando se produce un error. A continuación, envíe ese volcado de memoria a otro equipo para la depuración. La depuración sin conexión puede ser un intervalo de tiempo crítico al ejecutar AddressSanitizer en la nube o en pruebas distribuidas. Puede crear el volcado en la infraestructura de prueba o producción donde se produce el error y depurarlo más adelante en el equipo para desarrolladores.

El Visual Studio proporciona errores addressSanitizer con diagnóstico preciso. Puede ver estos errores sin tener que volver a ejecutar pruebas, copiar grandes conjuntos de datos, detectar datos perdidos o buscar máquinas de prueba que se han desconectado. Solo tiene que cargar el volcado de memoria.

Los volcados de memoria se crean tras errores addressSanitizer estableciendo la siguiente variable de entorno:

set ASAN_SAVE_DUMPS=MyFileName.dmp

Nota

El nombre de archivo debe tener un sufijo .dmp para seguir Visual Studio convenciones de nomenclatura.

Este archivo de volcado de memoria se puede mostrar mediante Visual Studio en una fecha posterior en otra máquina.

Visual Studio puede mostrar la información de error en el contexto del código fuente original. Para ello, Visual Studio depuración de símbolos y código fuente indexado. Para obtener la mejor experiencia de depuración, el código fuente exe, PDB y usado para generar esos archivos binarios debe coincidir.

Para más información sobre el almacenamiento de orígenes y símbolos, consulte la sección origen y símbolos. Para obtener información sobre los detalles de implementación y el control más preciso, vea Integración del depurador.

Ejemplo: compilación, prueba y análisis

Considere tres máquinas: A, B y C. Las compilaciones se realizan en la máquina B, las pruebas se ejecutan en la máquina C y se analizan los errores en la máquina A. Los errores se notifican en los números de columna y línea de código fuente del código fuente. Puede ver la pila de llamadas junto con un conjunto de símbolos en el archivo PDB generado con esa versión exacta del código fuente.

Los pasos siguientes son para escenarios locales o distribuidos que conducen a la creación de un archivo .dmp y para ver ese archivo de volcado addressSanitizer sin conexión.

Generar un archivo .dmp localmente

  • Compilar
  • Prueba del ejecutable
  • Copia de un archivo .dmp generado en el directorio de compilación
  • Abra el archivo .dmp con el archivo .pdb emparejado, en el mismo directorio.

Generación de un archivo .dmp en un sistema distribuido

Nota

La Visual Studio 2019 que se usa para el análisis debe tener acceso a GitHub o al interno donde se almacena \\Machine\share el origen indizado.

Ver archivos AddressSanitizer .dmp

  1. Asegúrese de que el IDE del depurador puede encontrar los archivos PDB y de origen.

  2. Abra Visual Studio y seleccione Continuar sin código. A continuación,seleccione Archivo abrirarchivo para abrir el cuadro de diálogo Abrir archivo. Asegúrese de que el sufijo del nombre de archivo es .dmp.

    Captura de pantalla del menú Archivo abrir archivo en Visual Studio.

    La pantalla que se muestra aquí necesita un paso más para habilitar el acceso del IDE a los símbolos y el origen.

  3. Establezca las rutas de acceso de símbolos y, a continuación, elija Depurar solo con nativo.

    Captura de pantalla de la pantalla Resumen del minivolumen en Visual Studio.

Esta captura de pantalla muestra el archivo de volcado de memoria cargado final, con los orígenes y los metadatos addressSanitizer cargados.

Captura de pantalla del depurador en la que se muestran los archivos de origen y los metadatos de AddressSanitizer.

Origen y símbolos

El servidor de origen permite a un cliente recuperar la versión exacta de los archivos de origen usados para compilar una aplicación. El código fuente de un archivo ejecutable o DLL puede cambiar con el tiempo y entre versiones. Puede usarlo para ver el mismo código fuente que creó una versión determinada de la aplicación.

Al depurar un archivo EXE con su archivo PDB, el depurador puede usar el bloque de datos del servidor de origen incrustado para recuperar los archivos adecuados del control de código fuente. Carga automáticamente los archivos que se asignan a los nombres completos que la opción del compilador coloca en la /Zi PDB.

Para usar el servidor de origen, la aplicación debe estar "indexada por el origen" mediante para escribir un bloque pdbstr.exe de datos en el archivo srcsrv PDB. Para obtener más información, vea la sección Bloque de datos del servidor de origen y la indexación de origen. También encontrará útiles los pasos para indexar orígenes y publicar símbolos y cómo especificar símbolos y código fuente para el depurador.

Para obtener documentación externa, consulte:

Vea también

Información general de AddressSanitizer
Problemas conocidos de AddressSanitizer
Referencia de lenguaje y compilación de AddressSanitizer
Referencia del entorno de ejecución de AddressSanitizer
Bytes paralelos de AddressSanitizer
Integración del depurador de AddressSanitizer
Ejemplos de errores de AddressSanitizer