Partilhar via


Use mapas de código para depurar seus aplicativos

Os mapas de código no Visual Studio podem ajudá-lo a evitar se perder em grandes bases de código, código desconhecido ou código herdado. Por exemplo, ao fazer debug, pode ser necessário examinar o código em muitos ficheiros e projetos. Use mapas de código para navegar por partes de código e entender as relações entre eles. Dessa forma, você não precisa acompanhar esse código em sua cabeça, ou desenhar um diagrama separado. Assim, quando seu trabalho é interrompido, os mapas de código ajudam a atualizar sua memória sobre o código em que você está trabalhando.

Mapa de código - Mapear relações em código

Uma seta verde mostra onde o cursor aparece no editor

Para obter detalhes dos comandos e ações que você pode usar ao trabalhar com mapas de código, consulte Procurar e reorganizar mapas de código.

Saiba mais sobre depuração no Visual Studio com a ferramenta Depurador.

Observação

Para criar e editar mapas de código, você precisa do Visual Studio Enterprise edition. Nas edições Comunidade e Professional do Visual Studio, você pode abrir diagramas que foram gerados na edição Enterprise, mas não pode editá-los.

Entenda o problema

Suponha que há um bug em um programa de desenho no qual você está trabalhando. Para reproduzir o bug, abra a solução no Visual Studio e pressione F5 para iniciar a depuração.

Quando você desenha uma linha e escolhe Desfazer meu último traço, nada acontece até desenhar a próxima linha.

Mapa de código - Repro bug

Então você começa a investigar procurando o método Undo. Encontra-o na classe PaintCanvas.

Mapa de código - Encontrar código

Comece a mapear o código

Agora comece a mapear o undo método e seus relacionamentos. No editor de códigos, você adiciona o undo método e os campos aos quais ele faz referência a um novo mapa de código. Quando você cria um novo mapa, pode levar algum tempo para indexar o código. Isso ajuda as operações posteriores a serem executadas mais rapidamente.

Mapa de código - Mostrar método e campos relacionados

Sugestão

O realce verde mostra os últimos itens que foram adicionados ao mapa. A seta verde mostra a posição do cursor no código. As setas entre itens representam relações diferentes. Você pode obter mais informações sobre os itens no mapa movendo o mouse sobre eles e examinando suas dicas de ferramentas.

Mapa de código - Mostrar dicas de ferramentas

Para ver a definição de código para cada campo, clique duas vezes no campo no mapa ou selecione o campo e pressione F12. A seta verde move-se entre itens no mapa. O cursor no editor de códigos também se move automaticamente.

Captura de tela de uma janela de mapa de código com o campo de histórico selecionado e uma janela do editor de código onde todas as instâncias do histórico são realçadas.

Captura de tela de uma janela de mapa de código com o campo paintObjects selecionado e uma janela do editor de código onde todas as instâncias de paintObjects são realçadas.

Sugestão

Você também pode mover a seta verde no mapa movendo o cursor no editor de códigos.

Compreender as relações entre partes de código

Agora você quer saber qual outro código interage com os history campos e paintObjects . Você pode adicionar todos os métodos que fazem referência a esses campos ao mapa. Você pode fazer isso a partir do mapa ou do editor de código.

Mapa de código - Encontrar todas as referências

Abrir um mapa de código a partir do editor de códigos

Observação

Se você adicionar itens de um projeto compartilhado em vários aplicativos, como Windows Phone ou Windows Store, esses itens sempre aparecerão com o projeto de aplicativo atualmente ativo no mapa. Portanto, se você alterar o contexto para outro projeto de aplicativo, o contexto no mapa também será alterado para quaisquer itens recém-adicionados do projeto compartilhado. As operações que você executa com um item no mapa aplicam-se somente aos itens que compartilham o mesmo contexto.

Altere o layout para reorganizar o fluxo de relações e tornar o mapa mais fácil de ler. Você também pode mover itens pelo mapa arrastando-os.

Captura de tela de uma janela de mapa de código com o menu Layout aberto e o comando Left to Rgiht selecionado.

Sugestão

Por padrão, o Layout Incremental está ativado. Isso reorganiza o mapa o mínimo possível quando você adiciona novos itens. Para reorganizar todo o mapa sempre que adicionar novos itens, desative o Layout Incremental.

Captura de tela de uma janela de mapa de código com as setas de relações entre os campos apontando da esquerda para a direita.

Vamos examinar esses métodos. No mapa, clique duas vezes no método PaintCanvas ou selecione esse método e pressione F12. Você aprende que esse método cria history e paintObjects como listas vazias.

Captura de tela de uma janela de mapa de código com o método PaintCanvas selecionado e uma imagem de trecho de código mostrando o nome do método PainCanvas realçado.

Agora, repita as mesmas etapas para examinar a definição do clear método. Você aprende que clear executa algumas tarefas com paintObjects e history. Em seguida, chama o Repaint método.

Captura de tela de uma janela de mapa de código com o método Clear selecionado e uma imagem de trecho de código mostrando o código para o método Clear.

Agora examine a definição do addPaintObject método. Ele também executa algumas tarefas com history e paintObjects. Também chama Repaint.

Captura de tela de uma janela de mapa de código com o método addPaintObject selecionado e uma imagem de trecho de código mostrando o código para o método addPaintObject.

Encontre o problema examinando o mapa

Parece que todos os métodos que modificam history e paintObjects chamam Repaint. No entanto, o undo método não chama Repaint, embora undo modifique os mesmos campos. Então tu achas que podes resolver este problema ligando para Repaint a partir de undo.

Mapa de código - Encontrar chamada de método ausente

Se você não tinha um mapa para mostrar essa chamada ausente, talvez tenha sido mais difícil encontrar esse problema, especialmente com códigos mais complexos.

Partilhe a sua descoberta e os próximos passos

Antes de você ou outra pessoa corrigir esse bug, você pode fazer anotações no mapa sobre o problema e como corrigi-lo.

Mapa de código - Comentar e sinalizar itens para acompanhamento

Por exemplo, você pode adicionar comentários ao mapa e sinalizar itens usando cores.

Mapa de código - Itens comentados e sinalizados

Se você tiver o Microsoft Outlook instalado, você pode enviar o mapa por e-mail para outras pessoas. Você também pode exportar o mapa como uma imagem ou outro formato.

Mapa de código - Partilhar, exportar, enviar correio

Corrija o problema e mostre o que você fez

Para corrigir esse bug, adicione a chamada de Repaint para undo.

Mapa de código - Adicionar chamada de método ausente

Para confirmar a correção, reinicias a sessão de depuração e tentas reproduzir o bug. Agora, ao escolheres Desfazer o meu último traço, funciona como esperas e confirma que fizeste a correção apropriada.

Mapa de código - Confirmar correção de código

Você pode atualizar o mapa para mostrar a correção que você fez.

Mapa de código - Atualizar mapa com a chamada de método que estava ausente

O seu mapa agora mostra um link entre desfazer e repintar.

Mapa de código - Mapa atualizado com chamada de método

Observação

Ao atualizar o mapa, você pode ver uma mensagem informando que o índice de código usado para criar o mapa foi atualizado. Isso significa que alguém alterou o código, o que faz com que seu mapa não corresponda ao código atual. Isso não impede que você atualize o mapa, mas talvez seja necessário recriar o mapa para confirmar se ele corresponde ao código.

Agora você terminou sua investigação. Você encontrou e corrigiu o problema mapeando o código. Você também tem um mapa que ajuda você a navegar pelo código, lembrar o que você aprendeu e mostra as etapas que você tomou para corrigir o problema.