/Z7, /Zi, /ZI (Formato de información de depuración)

Las opciones del compilador /Z7, /Zi y /ZI especifican el tipo de información de depuración que se crea para el programa y si esta información se conserva en archivos de objeto (.obj) o en un archivo de base de datos de programa (PDB).

Sintaxis

/Z7
/Zi
/ZI

Comentarios

Cuando se especifica una opción de depuración, el compilador genera nombres de símbolos para funciones y variables, información de tipos y ubicaciones de línea para su uso por el depurador. Esta información de depuración simbólica se puede incluir en los archivos de objeto (archivos .obj) generados por el compilador o en un archivo PDB independiente (un archivo .pdb) para el ejecutable. Las opciones de formato de información de depuración se describen en las secciones siguientes.

Ninguno

De forma predeterminada, si no se especifica ninguna opción de formato de información de depuración, el compilador no genera información de depuración, por lo que la compilación es más rápida.

/Z7

La opción /Z7 genera archivos de objeto que también contienen información de depuración simbólica completa para su uso con el depurador. Estos archivos de objeto y las bibliotecas compiladas a partir de ellos pueden ser considerablemente mayores que los archivos que no tienen información de depuración. La información de depuración simbólica incluye los nombres y los tipos de las variables, así como las funciones y los números de línea. El compilador no genera ningún archivo PDB. Sin embargo, todavía se puede generar un archivo PDB a partir de estos archivos de objeto o bibliotecas si se pasa al enlazador la opción /DEBUG.

Para los distribuidores de versiones de depuración de bibliotecas de terceros, hay una ventaja de no tener un archivo PDB. Sin embargo, los archivos de objeto para los encabezados precompilados son necesarios durante la fase de vinculación de bibliotecas y la depuración. Si solo hay información de tipo (y ningún código) en el archivo .pch de objeto, también debe usar la opción /Yl (Insertar referencia de PCH para la biblioteca de depuración), que está habilitada de forma predeterminada, al compilar la biblioteca.

La opción en desuso /Gm (Habilitar recompilación mínima) no está disponible cuando se especifica /Z7.

/Zi

La opción /Zi genera un archivo PDB independiente que contiene toda la información de depuración simbólica para su uso con el depurador. La información de depuración no se incluye en los archivos de objeto ni en el ejecutable, lo que hace que sean mucho más pequeños.

El uso de /Zi no afecta a las optimizaciones. Sin embargo, /Zi no se amplía a /debug. Para obtener más información, vea /DEBUG (Generar información de depuración).

Cuando se especifican /Zi y /clr, el atributo DebuggableAttribute no se coloca en los metadatos del ensamblado. Si lo desea, debe especificarlo en el código fuente. Este atributo puede afectar al rendimiento de la aplicación en tiempo de ejecución. Para obtener más información sobre cómo afecta al rendimiento el atributo Debuggable y cómo puede modificar el impacto en el rendimiento, vea Facilitar la depuración de una imagen.

El compilador asigna un nombre al archivo PDB <project>.pdb, donde <project> es el nombre del proyecto. Si compila un archivo fuera de un proyecto, el compilador crea un archivo PDB denominado VC<x>.pdb, donde <x> es una concatenación del número de versión principal y secundaria de la versión del compilador en uso. El compilador inserta el nombre del archivo PDB y una firma de marca de tiempo de identificación en cada archivo de objeto creado con esta opción. Este nombre y firma apuntan al depurador a la ubicación de la información simbólica y de número de línea. El nombre y la firma del archivo PDB deben coincidir con el ejecutable para que los símbolos se carguen en el depurador. El depurador de WinDBG puede cargar símbolos no coincidedores mediante el comando .symopt+0x40. Visual Studio no tiene una opción similar para cargar símbolos que no coinciden.

Si crea una biblioteca a partir de objetos compilados con /Zi, el archivo .pdb asociado debe estar disponible cuando se vincule la biblioteca a un programa. Por lo tanto, si distribuye la biblioteca, debe distribuir el archivo PDB. Para crear una biblioteca que contenga información de depuración sin utilizar archivos .pdb, debe seleccionar la opción del compilador /Z7. Si usa las opciones de encabezado precompilado, la información de depuración del encabezado precompilado y del resto del código fuente se incluye en el archivo PDB.

/ZI

La opción /ZI es similar a /Zi, pero genera un archivo PDB en un formato que admite la característica Editar y continuar. Si desea usar la depuración con Editar y continuar, debe usar esta opción. La característica Editar y continuar es útil para la productividad del desarrollador, pero puede causar problemas en el tamaño del código, el rendimiento y la conformidad del compilador. Dado que la mayoría de las optimizaciones son incompatibles con Editar y continuar, el uso de /ZI deshabilita cualquier instrucción #pragma optimize del código. La opción /ZI tampoco es compatible con el uso de la macro __LINE__ predefinida ; el código compilado con /ZI no puede usar __LINE__ como argumento de plantilla que no sea de tipo, aunque __LINE__ se puede usar en expansiones de macros.

La opción /ZI obliga a usar las opciones /Gy(Habilitar vinculación de nivel de función) y /FC (Ruta de acceso completa del archivo de código fuente en diagnósticos) en la compilación.

/ZI no es compatible con /clr (compilación de Common Language Runtime).

Nota:

La opción /ZI solo está disponible en los compiladores destinados a procesadores x86 y x64. La opción del compilador solo está disponible en los compiladores destinados a procesadores x86 y x64.

Para establecer esta opción del compilador en el entorno de desarrollo de Visual Studio

  1. Abra el cuadro de diálogo Páginas de propiedades del proyecto. Para más información, vea Establecimiento del compilador de C++ y de propiedades de compilación en Visual Studio.

  2. Seleccione la página de propiedades Propiedades de configuración>C/C++>General.

  3. Modifique la propiedad Formato de la información de depuración. Elija Aceptar para guardar los cambios.

Para establecer esta opción del compilador mediante programación

Consulte también

Opciones del compilador de MSVC
Sintaxis de línea de comandos del compilador de MSVC