Partilhar via


Usando arquivos de origem

O mecanismo do depurador mantém um caminho de origem, que é uma lista de diretórios e servidores de origem que contêm arquivos de código-fonte associados aos destinos atuais. O motor de depuração pode buscar esses diretórios e servidores de origem para os ficheiros de origem. Com a ajuda de ficheiros de símbolos, a ferramenta de depuração consegue corresponder linhas nos ficheiros de origem com locais na memória do alvo.

Para obter uma visão geral do uso de arquivos de origem com depuradores, consulte Depuração no modo de origem. Para obter uma visão geral dos caminhos de origem, consulte Caminho de origem. Para obter uma visão geral do uso de servidores de origem a partir do mecanismo de depurador, consulte Usando um servidor de origem.

Caminho de origem

Para adicionar um diretório ou servidor de origem ao caminho de origem, use o método AppendSourcePath. Todo o caminho de origem é retornado por GetSourcePath e pode ser alterado usando SetSourcePath. Um único diretório ou servidor de origem pode ser recuperado do caminho de origem usando GetSourcePathElement.

Para localizar um arquivo de origem relativo ao caminho de origem, use FindSourceFile ou, para opções mais avançadas ao usar servidores de origem, use FindSourceFileAndToken. FindSourceFileAndToken também pode ser usado junto com GetSourceFileInformation para recuperar variáveis relacionadas a um arquivo em um servidor de origem.

Correspondência de arquivos de origem com código na memória

O motor de depuração fornece três métodos para localizar os endereços de memória que correspondem às linhas em um arquivo de origem. Para mapear uma única linha de código-fonte para um local de memória, use GetOffsetByLine. Para procurar locais de memória para mais de uma linha de origem ou para linhas de origem próximas, use GetSourceEntriesByLine. O método GetSourceFileLineOffsets retornará o local da memória de cada linha em um arquivo de origem.

Para executar a operação oposta e localizar a linha de um arquivo de origem que corresponde a um local na memória do destino, use GetLineByOffset.

Observação A relação entre locais de memória e linhas em um arquivo de origem não é necessariamente um-para-um. É possível que uma única linha de código-fonte corresponda a vários locais de memória e que um único local de memória corresponda a várias linhas de código-fonte.