![]() |
Created by Thiago Russo
about 7 years ago
|
|
Question | Answer |
arquivos .pdb | Ao compilar seus programas, vc tem a opção de criar um arquivo extra com a extensão .pdb. Este arquivo é chamado de arquivo program database (PDB), q é uma fonte de dados extra que anota/comenta o código da sua aplicação com informação adicional que pode ser útil durante a depuração. |
como instruir o compilador a gerar .pdb? | Vc pode instruir o compilador para criar um arquivo PDB, especificando o '/debug:full' ou '/debug:pdbonly' . Qdo especificar a 'full', um arquivo PDB é criado, e o assembly específico tem informações de depuração. Com 'pdbonly', o assembly gerado não é modificado, e somente o arquivo PDB é gerado. A última opção é recomendada quando você está fazendo uma compilação de release. |
que informações contém aquivos .pdb? | Um arquivo .NET PDB contém duas informações: ■ Nomes de arquivos fonte e suas linhas ■ Nomes de variáveis locais Esses dados não estão contidos nos assemblies .NET, mas vc pode imaginar como ele ajuda com a depuração. |
como o debugger localiza e utiliza o .pdb? | Qdo vc carrega um módulo, o debugger (depurador) começa a olhar para o arquivo PDB correspondente. Ele faz isso procurando por um arquivo PDB com o mesmo nome que fica no mesmo diretório do aplicativo ou biblioteca. Qdo vc tem um MyApp.dll, o depurador procura por MyApp.pdb. Ao encontrar um arquivo com um nome correspondente, ele compara um ID interno q é criado pelo compilador. O ID, q é um identificador exclusivo global (GUID - global unique identifier), deve corresponder exatamente. Desta forma, o depurador sabe q vc está usando o arquivo PDB correto e pode mostrar o código-fonte correto para sua aplicação enquanto você está depurando. |
vc pode depurar utlizando um pdb mais antigo que o assembly? | O importante é que este GUID é criado em tempo de compilação, por isso, se vc recompilar seu aplicativo, vc recebe um novo arquivo PDB que corresponde ao seu build recompilado. Assim, vc não pode depurar uma compilação de ontem usando o arquivo PDB que você criou hoje; os GUIDs não irão corresponder, e o depurador não vai aceitar o arquivo PDB. Qdo vc executa uma sessão de depuração no VS, Ñ há problemas na maioria das vezes. Seu código e o aplicativo em execução correspondem exatamente. Mas qdo vc deseja depurar um aplicativo que está atualmente em produção, é necessário o arquivo PDB correspondente para depurar o aplicativo. |
analisando arquivo .pdb com "modules window" |
Image:
Modules Window (image/png)
|
analisando arquivo .pdb com "call stack" |
Image:
Call Stack (image/png)
|
usando Microsoft Symbol Server |
Image:
Ms Symbol Server (image/png)
|
TFS como um symbol server | Ao construir seus projetos, é importante a criação de um servidor de símbolos para seu uso interno. A maneira mais fácil de fazer isso é usar o Team Foundation Server (TFS) para gerir o seu código-fonte e Builds. TFS tem uma opção para publicar todos os arquivos PDB a partir do seu Build para um local compartilhado, o que pode, então, agir como um servidor de símbolos para o VS, que lhe permite depurar todas as versões anteriores de um aplicativo sem ter o código fonte ao redor. |
EXAME TIP Lembre-se de como é importante salvar seus arquivos PDB em algum lugar | Se você jogá-los fora, você perde imediatamente a oportunidade de depurar uma compilação específica do seu aplicativo. |
EXAME TIP .PDB público | Qdo um arquivo PDB completo é construído pelo compilador, ele contém dois conjuntos distintos de informação: dados de símbolos privados e públicos. Um arquivo de símbolo público contém menos dados. Ele expõe apenas os itens que são acessíveis a partir de um arquivo de origem para outro. Itens visíveis em apenas um arquivo objeto, como variáveis locais, não estão na parte de símbolo público. Ao publicar arquivos de símbolo para o mundo exterior, como a Microsoft fez, vc pode optar por remover as informações privadas. Qdo vc está lidando com propriedade intelectual q vc não quer ser exposto, este é um passo importante. |
EXAME TIP removendo dados privados de um .PDB com PDBCopy | Vc pode fazer isso usando a ferramenta PDBCopy. PDBCopy é uma parte das ferramentas de depuração para Windows que você instala como uma parte do Windows Software Development Kit (SDK). A linha a seguir mostra um ex de remover os dados privados de um arquivo PDB: pdbcopy mysymbols.pdb publicsymbols.pdb -p Este código pega um arquivo mysymbols.pdb e cria um arquivo publicsymbols.pdb sem os dados de símbolo privados. |
Want to create your own Flashcards for free with GoConqr? Learn more.