DetailPage-MSS-KB

Base de Dados de Conhecimento

ID do artigo: 121366 - Última revisão: sexta-feira, 5 de agosto de 2005 - Revisão: 3.1

 

Nesta página

Sumário

A extensão .PDB significa para "banco de dados programa". Ele contém o novo formato para armazenar informações de depuração que foi introduzidas no Visual C++ versão 1.0. No futuro, o arquivo .PDB também irá armazenar outras informações de estado do projeto. Uma das motivações mais importantes para a alteração no formato era permite vinculação incremental de versões de depuração de programas, uma alteração introduzido no Visual C++ versão 2.0.

A extensão .dbg significa "depuração". Os arquivos .dbg criados com o conjunto de NT 32 bits ferramentas estão no formato de arquivo executável portátil (PE). Eles contêm seções com COFF, FPO e em algumas informações do Codeview casos. O depurador do Visual C++ integrado pode ler arquivos .dbg nesse formato, entretanto, ele ignora as seções de símbolo COFF e procura por informações do Codeview.

Se você precisar determinar quais informações do símbolo estão contidas em um arquivo .dbg, você pode digite o seguinte no prompt de comando:
Dumpbin sample.dbg/symbol.
				
Observação O caminho pode precisar incluir diretórios para dumpbin.exe e MSdis100.dll:
Path=%Path%;C:\Program Files\DevStudio\VC\bin;C:\Msssdk\bin
				
Para obter mais informações sobre DUMPBIN, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
177429  (http://support.microsoft.com/kb/177429/ ) Exemplos de saída DUMPBIN

Mais Informações

Os arquivos .pdb

Embora versões anteriores, 16 bits do Visual C++ usado arquivos .PDB, as informações de depuração armazenadas no-los foi acrescentadas ao final do arquivo .exe ou .dll pelo vinculador. Nas versões do Visual C++ mencionado acima, o vinculador e depurador integrado foram modificados para permitir que arquivos .PDB a ser usado diretamente durante o processo de depuração, eliminando assim substanciais quantidades de trabalho para o vinculador e também ignorar o limite CVPACK complicado de tipos de 64 K.

Para obter mais informações sobre limitações CVPACK, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
112335  (http://support.microsoft.com/kb/112335/ ) Erro: CK1020 ou CK4009 encontrada ao tipo de informações exceder 64 K
<project>Por padrão, quando você criar projetos gerados pelo Visual Workbench, o compilador opção /Fd é usado para renomear o arquivo .PDB <projeto>.PDB. Portanto, você terá apenas um arquivo .PDB para o projeto inteiro.

Quando você executar makefiles que não foram gerados pelo Workbench Visual e o /FD não é usado com /Zi, você acabará com dois arquivos .PDB:
  • VC x 0.PDB (onde refere-"x" se a versão do correspondente Visual C++, "2"ou "4" principal), que armazena todas as informações de depuração para os arquivos .obj individuais. Ele reside no diretório em que reside o projeto makefile.
  • <project><projeto>.PDB, que armazena todas as informações de depuração para o arquivo .exe resultante. Ele reside na subpasta \WINDEBUG.
Por que dois arquivos? <project>Quando o compilador é executado, ele não saber o nome do arquivo .exe no qual os arquivos .obj serão vinculados, portanto, o compilador não pode colocar as informações em <projeto>.PDB. Os dois arquivos armazenam informações diferentes. Cada vez que você compilar um arquivo .obj, o compilador mescla as informações de depuração no VCX0.PDB. Ele não coloca as informações de símbolo, como definições de função. Somente colocará em informações relacionadas a tipos. Uma vantagem de isso é que quando cada arquivo de origem inclui arquivos comuns do cabeçalho como <windows.h>, todos os typedefs desses cabeçalhos são apenas armazenadas uma vez, em vez de em todos os arquivos .obj.

<project>Quando você executa o vinculador, ele cria <projeto>.PDB, que contém informações de depuração para o arquivo .exe do projeto. <project>Todas as informações de depuração, incluindo protótipos de função e tudo, são colocadas em <projeto>.PDB, não apenas as informações de tipo encontradas na VCX0.PDB. Os dois tipos de arquivos .PDB compartilham a mesma extensão porque eles são arquitetura semelhantes; permitem atualizações incrementais. No entanto, eles realmente armazenam informações diferentes.

<project>O depurador do Visual C++ novo usa o arquivo .PDB <projeto> criado pelo vinculador diretamente e incorpora o caminho absoluto para o .PDB no arquivo .exe ou .dll. Se o depurador não pode localizar o arquivo .PDB nesse local ou se o caminho é inválido (se, por exemplo, o projeto foi movido para outro computador), o depurador procura por ele no diretório atual.

Os arquivos .dbg

O depurador do Visual C++ integrada também pode usar arquivos .dbg desde que eles são feitos de um formato Codeview contendo binário de depuração da saída. Eles são úteis para depuração quando o código-fonte não está disponível. Mesmo sem a fonte, arquivos .dbg permitem que você definir pontos de interrupção em funções, inspeção de variáveis e ver as funções na pilha de chamada. Eles também são necessários para depuração do OLE RPC.

Uma limitação precisa ser apontado: quando estiver trabalhando com símbolos de um arquivo .dbg, você deve usar os nomes totalmente decorados. Por exemplo, para definir um ponto de interrupção em uma chamada para a função de sndPlaySound do Windows, você deve especificar o _sndPlaySoundA@8 como o local.

Há, na verdade, dois formatos de arquivo .dbg. O formato antigo existiu por bastante tempo no mundo de 16 bits. Por exemplo, porque o formato dos arquivos .com é uma simples imagem binária carregada na memória, Codeview informações de depuração pode não ser acrescentado ao final do arquivo porque o tamanho do arquivo pode excede o limite de 64 K para um arquivo .com. Portanto informação simbólica em vez disso, foi colocada em um arquivo .dbg separado, que tinha apenas informações do Codeview nela. Os arquivos .dbg também podem ser gerados pela execução CVPACK em um arquivo .exe usando a opção /strip.

Para .EXEs de 32 bits, o Visual C++ versão 2.x e 4.x manipulador do símbolo do depurador não lê o formato antigo. Em vez disso, ele lê o formato usado em arquivos .dbg do Windows NT, fornecido para uso com seus arquivos de DLL do sistema. Estes arquivos .dbg estão no formato de arquivo executável portátil (PE) e conter seções com COFF, FPO e em algumas informações de simbólicas Codeview casos. O depurador do Visual C++ novo lê arquivos .dbg somente nesse formato. Além disso, ele usa somente as informações de Codeview, ignorando outras seções do símbolo.

É possível extrair informações de depuração de um arquivo PE e armazená-lo em um arquivo .dbg para uso por depuradores. Para que isso funcione, o depurador precisa saber se a localização das informações depuração em um arquivo separado ou não e se as informações tem sido removidas do arquivo ou não. Um método seria para o depurador pesquisar o arquivo executável procurando informações de depuração. No entanto, para salvar o depurador de ter que procurar no arquivo, um campo de característica do arquivo (IMAGE_FILE_DEBUG_STRIPPED) foi inventado que indica que o arquivo tiver sido removido. Depuradores podem procurar por este campo no cabeçalho do arquivo PE para determinar rapidamente se as informações de depuração estão presentes no arquivo ou não.

Para gerar um arquivo .dbg neste formato, você pode usar REBASE.exe, que é fornecido com o Win32 SDK. Consulte a documentação do SDK do Win32 para obter mais detalhes.

Durante as compilações de varejo Windows NT, símbolos de depuração são removidos dos binários de sistema e drivers e armazenados em arquivos .dbg separados. Isso é feito porque o depurador de kernel do Windows NT pode usar esses arquivos .dbg e fornecer os símbolos de depuração mesmo para drivers otimizados. No entanto, lembre-se de que o depurador do Visual C++ integrado não foi projetado para depurar código de kernel do modo protegido.

Os arquivos de símbolo do Windows NT podem ser encontrados em um subdiretório de depuração do diretório \SUPPORT on o CD-ROM de varejo do Windows NT. Esses arquivos devem ser copiados do CD-ROM para seu disco rígido. Para depuração de modo usuário na máquina de depurador de destino, símbolos .dbg devem estar presentes no Windows NT \<winnt>\SYMBOLS diretório do sistema de destino (<winnt> é o diretório onde o Windows NT está instalado). O novo programa de instalação Visual C++ instala um ícone de "Instalação de símbolos do NT sistema" no grupo de programas. Você pode usá-lo para copiar automaticamente arquivos .dbg do seu disco de CD-ROM do Windows NT Workstation para a estrutura de diretório correto na unidade de disco rígida. Esse método não funciona para CD-ROM do Windows NT Server 4.0 porque os arquivos .dbg são armazenados em formato compactado.

Para depuração de kernel, colocar arquivos .dbg em uma árvore de símbolos sob o diretório especificado pela variável de ambiente _NT_SYMBOL_PATH (por exemplo, C:\DEBUG\SYMBOLS). Depuração de kernel é possível com um conjunto mínimo de símbolos que consiste em símbolos para todos os drivers (*.SYS) no diretório SYMBOLS\SYS e símbolos para Ntoskrnl.exe e HAL.dll em diretórios SYMBOLS\EXE e SYMBOLS\DLL, respectivamente. Para obter mais informações sobre depuração de kernel, consulte a discussão sobre depuração de kernel no guia do programador do Windows NT DDK.

Embora seja teoricamente possível converter de um arquivo .PDB volta para um arquivo .dbg, não é uma tarefa trivial. Neste momento, nós sabemos de nenhuma dessas ferramentas. Se ouvimos de como uma ferramenta, actualizaremos este artigo na Base de dados de Conhecimento da Microsoft.

A informação contida neste artigo aplica-se a:
  • Microsoft Visual C++ 2.0 Professional Edition
  • Microsoft Visual C++ 2.1
  • Microsoft Visual C++ 4.0 Standard Edition
  • Microsoft Visual C++ 6.0 Service Pack 5
  • Microsoft Visual C++ 5.0 Standard Edition
  • Microsoft Visual C++ 6.1
Palavras-chave: 
kbmt kbbug kbdebug kbide kbinfo KB121366 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 121366  (http://support.microsoft.com/kb/121366/en-us/ )
Retired KB ArticleAviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.
Compartilhar
Opções de suporte adicionais
Fóruns de Suporte do Microsoft Community
Contate-nos diretamente
Localize um parceiro certificado da Microsoft
Microsoft Store