/Z7, /Zi, /ZI (formato de informações de depuração)

As opção do compilador /Z7, /Zi e /ZI especificam o tipo de informação de depuração criado para o programa e indica se essas informações são mantidas em arquivos de objeto ou em um arquivo de PDB (banco de dados de programa).

Sintaxe

/Z7
/Zi
/ZI

Comentários

Quando você especifica uma opção de depuração, o compilador produz nomes de símbolos para funções e variáveis, informações de tipo e locais de linha para uso pelo depurador. Essas informações simbólicas de depuração podem ser incluídas nos arquivos de objeto (arquivos .obj) produzidos pelo compilador ou em um arquivo PDB separado (um arquivo .pdb) para o executável. As opções de formato das informações de depuração são descritas nas seções a seguir.

Nenhum

Por padrão, se nenhuma opção de formato das informações de depuração for especificada, o compilador não produzirá nenhuma informação de depuração, portanto, a compilação será mais rápida.

/Z7

A opção /Z7 produz arquivos de objeto que também contêm informações de depuração simbólicas completas para uso com o depurador. Esses arquivos de objeto e todas as bibliotecas criadas com base neles podem ser substancialmente maiores do que arquivos que não têm informações de depuração. As informações simbólicas de depuração incluem os nomes e tipos de variáveis, funções e números de linha. Nenhum arquivo PDB é produzido pelo compilador. Ainda assim, um arquivo PDB poderá ser gerado com base nesses arquivos de objeto ou bibliotecas se for passada a opção /DEBUG para o vinculador.

Para distribuidores de versões de depuração de bibliotecas de terceiros, há uma vantagem de não ter um arquivo PDB. No entanto, os arquivos de objeto para cabeçalhos pré-compilados são necessários durante a fase de vinculação da biblioteca e para depuração. Se houver apenas informações de tipo (e nenhum código) no arquivo de objeto .pch, você também deverá usar a opção /Yl (Referência de Injeção de PCH para Biblioteca de Depuração) que é habilitada por padrão, ao compilar a biblioteca.

A opção preterida /Gm (Habilitar Recompilação Mínima) não fica disponível quando /Z7 é especificada.

/Zi

A opção /Zi produz um arquivo PDB separado que contém todas as informações simbólicas de depuração para uso com o depurador. As informações de depuração não são incluídas nos arquivos de objeto nem nos executáveis, o que os torna muito menores.

O uso de /Zi não afeta otimizações. No entanto, /Zi afeta /debug. Para obter mais informações, confira /DEBUG (Gerar informações de depuração).

Quando você especifica /Zi e /clr, o atributo DebuggableAttribute não é colocado nos metadados do assembly. Se desejar, especifique-o no código-fonte. Esse atributo pode afetar o desempenho do runtime do aplicativo. Para obter mais informações sobre como o atributo Debuggable afeta o desempenho e como você pode modificar o impacto no desempenho, confira Tornando uma imagem mais fácil de depurar.

O compilador nomeia o arquivo PDB <project>.pdb, em que <project> é o nome do seu projeto. Se você compilar um arquivo fora de um projeto, o compilador criará um arquivo PDB chamado VC<x>.pdb, em que <x> é uma concatenação do número de versão principal e secundário da versão do compilador em uso. O compilador insere o nome do PDB e uma assinatura de carimbo de data/hora de identificação em cada arquivo de objeto criado usando essa opção. Esse nome e essa assinatura apontam o depurador para o local das informações simbólicas e de número de linha. O nome e a assinatura no arquivo PDB devem corresponder ao executável para que os símbolos sejam carregados no depurador. O depurador WinDBG pode carregar símbolos incompatíveis usando o comando .symopt+0x40. O Visual Studio não tem uma opção semelhante para carregar símbolos incompatíveis.

Se você criar uma biblioteca de objetos que foram compilados usando /Zi, o arquivo PDB associado deverá estar disponível quando a biblioteca estiver vinculada a um programa. Isso significa que, se você distribuir a biblioteca, também deverá distribuir o arquivo PDB. Para criar uma biblioteca que contenha informações de depuração sem usar arquivos PDB, você deve selecionar a opção /Z7. Se você usar as opções de cabeçalhos pré-compilados, as informações de depuração do cabeçalho pré-compilado e o restante do código-fonte serão colocadas no arquivo PDB.

/ZI

A opção /ZI é semelhante a /Zi, mas produz um arquivo PDB em um formato que dá suporte ao recurso Editar e Continuar. Para usar os recursos de depuração Editar e Continuar, você deve usar essa opção. O recurso Editar e Continuar é útil para a produtividade do desenvolvedor, mas pode causar problemas no tamanho do código, desempenho e conformidade do compilador. Como a maioria das otimizações é incompatível com Editar e Continuar, o uso de /ZI desabilita qualquer instrução #pragma optimize em seu código. A opção /ZI também é incompatível com o uso da macro predefinida __LINE__; o código compilado com /ZI não pode usar __LINE__ como um argumento de modelo não tipo, embora __LINE__ possa ser usado em expansões de macro.

A opção /ZI força as opções /Gy (Habilitar Vinculação de Nível de Função) e /FC (Caminho Completo do Arquivo do Código-Fonte no Diagnóstico) a serem usadas em sua compilação.

/ZI é incompatível com /clr (Compilação do Common Language Runtime).

Observação

A opção /ZI só está disponível nos compiladores direcionados aos processadores x86 e x64. Essa opção do compilador não está disponível nos compiladores direcionados aos processadores ARM.

Para definir esta opção do compilador no ambiente de desenvolvimento do Visual Studio

  1. Abra a caixa de diálogo Páginas de Propriedades do projeto. Para obter detalhes, confira Definir as propriedades de build e do compilador do C++ no Visual Studio.

  2. Selecione a página de propriedades Propriedades da Configuração>C/C++>Geral.

  3. Modifique a propriedade Formato de Informações de Compilação. Escolha OK para salvar suas alterações.

Para definir essa opção do compilador via programação

Confira também

Opções do compilador MSVC
Sintaxe da linha de comando do compilador MSVC