Descrição dos ficheiros .PDB e dos ficheiros .DBG

Traduções de Artigos Traduções de Artigos
Artigo: 121366 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

A extensão .PDB significa "base de programa dados." 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 ficheiro .PDB também conter outras informações de estado do projecto. Uma das motivations mais importantes para que a alteração no formato é permitir ligação incremental de versões de depuração de programas, uma alteração introduzido em primeiro lugar no Visual C++ versão 2.0.

A extensão .DBG significa "depuração". Os ficheiros .DBG criados com o conjunto de NT de 32 bits ferramentas estão no formato de ficheiro executável de portátil (PE). Contêm secções com COFF, FPO e em algumas informações de Codeview casos. O depurador do Visual C++ integrado pode ler .DBG ficheiros neste formato, mas ignora as secções de símbolo COFF e procura Codeview informações.

Se necessitar de determinar as informações de símbolo estão contidas num ficheiro .DBG, pode escrever o seguinte na linha de comandos:
Dumpbin sample.dbg/symbol.
				
NOTA: O caminho poderá ter de incluir directó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 de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
177429Exemplos de saída DUMPBIN

Mais Informação

Os ficheiros .PDB

Enquanto as versões anteriores de 16 bits do Visual C++ utilizadas .PDB ficheiros, as informações de depuração armazenadas na-los foi anexadas ao fim do ficheiro .exe ou .dll através do linker. Nas versões do Visual C++ acima mencionados tanto o linker o depurador integrado foram modificados para permitir que .PDB ficheiros a ser utilizado directamente durante o processo de depuração, eliminando assim o substanciais quantidades de trabalho para o linker e também ignorar o limite CVPACK complicado dos tipos de 64 K.

Para obter mais informações sobre limitações de CVPACK, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
112335Erro: CK1020 ou CK4009 encontrado ao tipo de informação excede 64 K
Por predefinição, quando cria projectos gerados pelo Workbench Visual, /fd de parâmetro o compilador é utilizado para mudar o nome do ficheiro .PDB para <project>.PDB. Por conseguinte, terá apenas um ficheiro .PDB para o projecto inteiro.

Quando executa makefiles que não foram geradas pelo Workbench Visual e não é utilizado o /fd com /Zi, ficará com duas .PDB ficheiros:
  • VCx0.PDB (em que "x" refere-se para a versão principal do correspondente Visual C++, "2"ou "4"), que armazena todas as informações de depuração para os ficheiros .OBJ individuais. Reside no directório onde reside o makefile de projecto.
  • <project>.PDB armazena todas as informações de depuração para o ficheiro .exe resultante. Reside no subdirectório \WINDEBUG.
Por que razão dois ficheiros? Quando o compilador é executado, não saber o nome do ficheiro .exe para o qual os ficheiros .OBJ serão ligados, para que o compilador não pode colocar as informações no <project>.PDB. Os dois ficheiros armazenam informações diferentes. Sempre que compilar um ficheiro .OBJ, o compilador intercala as informações de depuração VCX0.PDB. Não colocar nas informações do símbolo como definições de função. Só coloca em informações relativas a tipos. Uma das vantagens deste é que quando cada ficheiro de origem inclui ficheiros de cabeçalho comuns, tais como <windows.h>, todos os typedefs destes cabeçalhos são apenas armazenados uma vez e não em todos os ficheiros .OBJ.

Quando executa o linker, cria <project>.PDB, que contém as informações de depuração para exe ficheiro o projecto. Todas as informações de depuração, incluindo protótipos de função e tudo o resto, são colocadas na <project>.PDB, não apenas as tipo de informações do VCX0.PDB. Os dois tipos de ficheiros .PDB partilham a mesma extensão porque são architecturally semelhantes; ambos permitem actualizações incrementais. No entanto, que, na realidade, armazenar informações diferentes.

O depurador do Visual C++ novo utiliza o ficheiro .PDB <project> criado pelo linker directamente e incorpora o caminho absoluto para o .PDB no ficheiro .exe ou .dll. Se o depurador não é possível localizar o ficheiro .PDB nessa localização ou se o caminho é inválido (se, por exemplo, o projecto foi movido para outro computador), o depurador procura-lo no directório actual.

Os ficheiros .DBG

O depurador do Visual C++ integrados também pode utilizar .DBG ficheiros desde que estas ficam com Codeview formato binário saída de depuração. Estas são úteis para depuração quando o código de origem não está disponível. Mesmo sem origem de dados, ficheiros .DBG permitem-lhe definir pontos de interrupção em funções, ver variáveis e consulte as funções a pilha de chamadas. São também necessários para depuração OLE RPC.

Um truque tem de ser apontado: quando trabalhar com símbolos a partir de um ficheiro .DBG, tem de utilizar os nomes decorados totalmente. Por exemplo, para definir um ponto de interrupção numa chamada à função sndPlaySound Windows, deverá especificar _sndPlaySoundA@8 como a localização.

Existem realmente dois .DBG formatos de ficheiro. O formato antigo tem existiam para bastante tempo do mundo de 16 bits. Por exemplo, uma vez que o formato de ficheiros .com é uma imagem binária simples carregada na memória, Codeview informações de depuração pode não ser anexado ao fim do ficheiro porque o tamanho do ficheiro poderá exceder o limite de 64 K para um ficheiro .com. Assim as informações de simbólicas em vez disso, foi colocadas num ficheiro .DBG separado, que tinha Codeview apenas as informações no mesmo. Os ficheiros .DBG também poderiam ser gerados executando CVPACK num ficheiro .exe a utilizar a opção /strip.

Para .EXEs de 32 bits, o Visual C++ versão 2.x e 4.x símbolo processador do depurador não lê o formato antigo. Em vez disso, lê o formato utilizado nos ficheiros do Windows NT .DBG, fornecido para utilização com os ficheiros .dll de sistema. Estes ficheiros .DBG no formato de ficheiro executável de portátil (PE) e conter secções com COFF, FPO, algumas informações de simbólicas casos Codeview em. O depurador do Visual C++ novo lê ficheiros .DBG apenas neste formato. Além disso, só utiliza as informações Codeview, ignorando as outras secções de símbolo.

É possível apagar informações de depuração de um ficheiro PE e armazená-lo num ficheiro .DBG para utilização por depuradores. Para que isto funcione, o depurador necessita de saber se pretende localizar as informações de depuração num ficheiro separado ou não e se as informações tem sido removidas do ficheiro ou não. Seria um método para o depurador procurar o ficheiro executável à procura de informações de depuração. No entanto, para guardar o depurador de ter de procurar o ficheiro, um campo de característica de ficheiro (IMAGE_FILE_DEBUG_STRIPPED) foi inventado que indica que o ficheiro tiver sido removido. Podem consultar os depuradores para este campo no cabeçalho do ficheiro PE para determinar rapidamente se as informações de depuração estão presentes no ficheiro ou não.

Para gerar um ficheiro .DBG neste formato, pode utilizar REBASE.EXE, que é fornecido com o SDK do Win32. Consulte a documentação do Win32 SDK para obter mais detalhes.

Durante compilações de revenda da Windows NT, símbolos de depuração são removidos do binários de sistema e controladores e armazenados no ficheiros .DBG separados. Isto é feito porque o depurador de kernel do Windows NT pode utilizar estes ficheiros .DBG e fornecer símbolos de depuração mesmo controladores optimizadas. Lembre-se no entanto, que o depurador do Visual C++ integrada não foi concebido para depurar código do kernel do modo protegido.

Poderá encontrar os ficheiros de símbolos do Windows NT num subdirectório do directório \Support no CD-ROM de revenda do Windows NT depuração. Devem copiar os ficheiros a partir do CD-ROM para o disco rígido. Para o utilizador modo de depuração no computador visado depurador, símbolos .DBG tem de existir no directório de sistema de destino \<winnt>\SYMBOLS Windows NT (<winnt> é o directório onde está instalado o Windows NT). O programa de configuração Visual C++ novo instala um ícone de "Configuração de símbolos do NT sistema" no grupo de programas. Pode utilizá-lo para copiar automaticamente ficheiros .DBG do disco CD-ROM do Windows NT Workstation para a estrutura do directório correcto na unidade de disco rígida. Este método não funciona para o CD-ROM do Windows NT Server 4.0 porque os ficheiros .DBG são armazenados num formato comprimido.

Para depuração de kernel, coloque ficheiros .DBG numa árvore de símbolos sob o directório especificado pela variável de ambiente _NT_SYMBOL_PATH (por exemplo, C:\DEBUG\SYMBOLS). Depuração do kernel é possível com um conjunto mínimo de símbolos consiste em símbolos para todos os controladores (*.SYS) no directório SYMBOLS\SYS e símbolos para o ficheiro Ntoskrnl.exe assim como HAL.dll nos directórios SYMBOLS\EXE e SYMBOLS\DLL, respectivamente. Para mais informações sobre a depuração de kernel, consulte o debate sobre a depuração de kernel no manual do Programador de DDK Windows NT.

Embora seja teoricamente possível converter a partir de um ficheiro .PDB para um ficheiro .DBG, não é uma tarefa trivial. Neste momento, sabemos de nenhuma ferramenta deste tipo. Se é ouvir de uma ferramenta deste tipo, actualizaremos este artigo na base de dados de conhecimento da Microsoft.

Propriedades

Artigo: 121366 - Última revisão: 5 de agosto de 2005 - Revisão: 3.1
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á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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 121366
Exclusão de Responsabilidade para Conteúdo sem Suporte na KB
Este artigo foi escrito sobre produtos para os quais a Microsoft já não fornece suporte. Por conseguinte, este artigo é oferecido "tal como está" e deixará de ser actualizado.

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com