Partilhar via


/Z7, /Zi, /ZI (Formato de Informação de Depuração)

As /Z7opções , /Zi, e /ZI do compilador especificam o tipo de informação de depuração criada para o seu programa, e se essa informação está guardada em ficheiros objeto ou num ficheiro de base de dados do programa (PDB).

Sintaxe

/Z7
/Zi
/ZI

Observações

Quando especifica uma opção de depuração, o compilador produz nomes de símbolos para funções e variáveis, informação de tipo e localizações de linhas para uso pelo depurador. Esta informação simbólica de depuração pode ser incluída tanto nos ficheiros objeto (.obj ficheiros) produzidos pelo compilador, quer num ficheiro PDB separado (um .pdb ficheiro) para o executável. As opções de formato de informação de depuração são descritas nas secções seguintes.

Nenhum

Por defeito, se não for especificada a opção de formato de informação de depuração, o compilador não produz informação de depuração, pelo que a compilação é mais rápida.

/Z7

A /Z7 opção produz ficheiros objeto que também contêm informação completa de depuração simbólica para uso com o depurador. Estes ficheiros objeto e quaisquer bibliotecas construídas a partir deles podem ser substancialmente maiores do que ficheiros que não têm informação de depuração. A informação simbólica de depuração inclui os nomes e tipos de variáveis, funções e números de linha. Nenhum ficheiro PDB é produzido pelo compilador. No entanto, um ficheiro PDB pode ainda ser gerado a partir destes ficheiros de objetos ou bibliotecas se o linker tiver essa /DEBUG opção.

Para distribuidores de versões de depuração de bibliotecas de terceiros, há uma vantagem em não ter um ficheiro PDB. No entanto, os ficheiros objeto para quaisquer cabeçalhos pré-compilados são necessários durante a fase de ligação à biblioteca e para a depuração. Se só houver informação de tipo (e nenhum código) no .pch ficheiro objeto, também deve usar a /Yl opção (Injectar Referência PCH para a Biblioteca de Depuração), que está ativada por defeito, quando constrói a biblioteca.

A /Gm opção obsoleta (Ativar Reconstrução Mínima) não está disponível quando /Z7 é especificada.

/Zi

A /Zi opção produz um ficheiro PDB separado que contém toda a informação simbólica de depuração para uso com o depurador. A informação de depuração não está incluída nos ficheiros objeto nem no executável, o que os torna muito mais pequenos.

O uso de /Zi não afeta as otimizações. No entanto, /Zi implica /debug. Para mais informações, consulte /DEBUG (Gerar Informação de Depuração).

Quando especificas tanto /Zi como /clr, o DebuggableAttribute atributo não é colocado nos metadados assembly. Se quiseres, tens de o especificar no código-fonte. Este atributo pode afetar o desempenho em tempo de execução da aplicação. Para mais informações sobre como o Debuggable atributo afeta o desempenho e como pode modificar o impacto no desempenho, consulte Tornar uma imagem mais fácil de depurar.

O compilador nomeia o ficheiro <project>.pdbPDB , onde <project> é o nome do seu projeto. Se compilar um ficheiro fora de um projeto, o compilador cria um ficheiro PDB chamado VC<x>.pdb, onde <x> é uma concatenação do número de versão maior e menor da versão do compilador em uso. O compilador incorpora o nome do PDB e uma assinatura identificativa com carimbo temporal em cada ficheiro objeto criado usando esta opção. Este nome e assinatura apontam o depurador para a localização da informação simbólica e dos números de linha. O nome e a assinatura no ficheiro PDB devem corresponder ao executável para que os símbolos sejam carregados no depurador. O depurador do WinDBG pode carregar símbolos incompatíveis usando o .symopt+0x40 comando. O Visual Studio não tem uma opção semelhante para carregar símbolos incompatíveis.

Se criar uma biblioteca a partir de objetos compilados usando /Zi, o ficheiro PDB associado deve estar disponível quando a biblioteca está ligada a um programa. Isto significa que, se distribuir a biblioteca, também deve distribuir o ficheiro PDB. Para criar uma biblioteca que contenha informação de depuração sem usar ficheiros PDB, deve selecionar a /Z7 opção. Se usar as opções de cabeçalhos pré-compilados, a informação de depuração tanto do cabeçalho pré-compilado como do resto do código-fonte é colocada no ficheiro PDB.

/ZI

A /ZI opção é semelhante a /Zi, mas produz um ficheiro PDB num formato que suporta a funcionalidade Editar e Continuar . Para usar as funcionalidades Editar e Continuar a depuração, deve usar esta opção. A funcionalidade Editar e Continuar é útil para a produtividade dos programadores, mas pode causar problemas no tamanho do código, desempenho e conformidade com o compilador. Como a maioria das otimizações é incompatível com Editar e Continuar, usar /ZI desativa quaisquer #pragma optimize instruções no seu código. A /ZI opção também é incompatível com o uso da __LINE__ macro pré-definida; o código compilado /ZI com não pode ser usado __LINE__ como argumento de modelo não-tipo, embora __LINE__ possa ser usado em expansões de macros.

A /ZI opção obriga tanto as /Gy opções (Ativar Function-Level Ligação) como /FC (Caminho Completo do Ficheiro de Código-Fonte em Diagnóstico) a serem usadas na sua compilação.

/ZIé incompatível com /clr (Common Language Runtime Compilation).

Observação

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

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

  1. Abra a caixa de diálogo Property Pages do projeto. Para obter detalhes, consulte Definir compilador C++ e criar propriedades no Visual Studio.

  2. Selecione a Configuration Properties>C/C++>General property page.

  3. Modificar a propriedade Debug Information Format . Escolha OK para salvar as alterações.

Para definir esta opção do compilador num ficheiro de projeto

Para definir o formato de informação de depuração num .vcxproj ficheiro de projeto, use a <DebugInformationFormat> propriedade dentro de uma <ClCompile> definição de item. A tabela seguinte mostra os valores XML do MSBuild e as respetivas opções do compilador:

Valor XML do MSBuild Opção do compilador Descrição
None (nenhum) Sem informação de depuração
OldStyle /Z7 Informação completa de depuração simbólica embutida em ficheiros .obj, sem PDB
ProgramDatabase /Zi Base de dados de programas (PDB)
EditAndContinue /ZI PDB com suporte para Editar e Continuar

Por exemplo, para definir o formato de informação de depuração para programar a base de dados numa configuração de lançamento:

<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
  <ClCompile>
    <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
  </ClCompile>
</ItemDefinitionGroup>

Para definir essa opção do compilador programaticamente

Consulte também

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