/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
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.
Selecione a página de propriedades Propriedades da Configuração>C/C++>Geral.
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
- Consulte DebugInformationFormat.
Confira também
Opções do compilador MSVC
Sintaxe da linha de comando do compilador MSVC