Pergunta

Basicamente o que eu quero fazer é isso:um arquivo pdb contém um local de arquivos de origem (por exemplo C:\dev\proj1\helloworld.cs).É possível modificar esse arquivo pdb para que contenha um local diferente (por exemplo, \more\differenter\location\proj1\helloworld.cs)?

Foi útil?

Solução

Você pode usar o recurso de indexação de origem das Ferramentas de depuração para Windows, que salvará referências às revisões apropriadas dos arquivos em seu repositório de origem como um fluxo alternativo no arquivo PDB.

Outras dicas

Se você deseja ser mais genérico sobre os caminhos incorporados em um arquivo pdb, você pode primeiro usar o MS-DOS subst comando para mapear uma pasta específica para uma letra de unidade.

subst N: <MyRealPath>

Em seguida, abra seu projeto em relação ao N:dirija e reconstrua-o.Seus arquivos PDB farão referência aos arquivos de origem em N:.Agora não importa onde você coloca esse conjunto específico de arquivos de origem, desde que você posteriormente chame o diretório raiz de "N:" como fez quando o construiu.

Esta prática é recomendada por John Robbins em seu excelente livro, Depurando aplicativos para Microsoft .NET e Microsoft Windows.

Eu queria encontrar a resposta para isso para depurar um crash dump que ocorreu em um executável que não construí em minha máquina, portanto, o caminho para o código-fonte referenciado no PDB era inválido, assim como o caminho para o PDB referenciado no executável.

Depois de pesquisar e não encontrar algo que funcionasse, descobri que se você colocar o executável e o PDB ao lado do arquivo de despejo de memória (ou seja,no mesmo diretório) e abra e execute o despejo de memória no VS, o VS encontrará e usará o PDB/EXE localmente.Além disso, também solicitará a localização do código-fonte ao clicar em uma entrada na pilha de chamadas:apontando para qualquer código-fonte relevante, tudo funciona bem, o que é ótimo!

De qualquer forma, espero que isso ajude alguém... :)

É certamente possível, como On Freund já salientou.Mas se for apenas para que as fontes possam ser localizadas e carregadas durante a depuração, então a melhor maneira seria definir o caminho da fonte de forma correspondente.Uma vez definido em um depurador, ele irá antecipar todos os caminhos codificados dentro dos PDBs.

No windbg (por exemplo):

.srcpath+ caminho_para_source_root
ou isto (caso você esteja depurando remotamente):
.lsrcpath+ caminho_para_source_root

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top