Compartilhar via


Usar mapas de código para depurar seus aplicativos

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 realizar a depuração, talvez seja necessário examinar o código em vários arquivos 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 controlar esse código na cabeça ou desenhar um diagrama separado. Portanto, quando seu trabalho é interrompido, os mapas de código ajudam a atualizar sua memória sobre o código no qual você está trabalhando.

Mapa de código – Mapear relações no 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 a 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 Do Visual Studio Community e Professional, você pode abrir diagramas que foram gerados na edição Enterprise, mas não é possível editá-los.

Compreender o problema

Suponha que haja 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é você desenhar a próxima linha.

Mapa de código – Repro bug

Portanto, você começa a investigar pesquisando o Undo método. Você o encontra na PaintCanvas classe.

Mapa de código – Localizar código

Comece a mapear o código

Agora comece a mapear o undo método e suas relações. No editor de código, você adiciona o undo método e os campos que 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

Dica

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

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 se move entre os itens no mapa. O cursor no editor de código também é movido automaticamente.

Captura de tela de uma janela de mapa de código com o campo histórico selecionado e uma janela do editor de código em que 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 em que todas as instâncias de paintObjects são realçadas.

Dica

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

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

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

Mapa de código – Localizar todas as referências

Abrir um mapa de código do editor de código

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 executadas com um item no mapa se aplicam somente aos itens que compartilham o mesmo contexto.

Altere o layout para reorganizar o fluxo de relações e facilitar a leitura do mapa. Você também pode mover itens ao redor do mapa arrastando-os.

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

Dica

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 você adicionar novos itens, desative o Layout Incremental.

Captura de tela de uma janela de mapa de código com as setas relationshiop entre os campos que apontam 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ê aprenderá 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 snippet 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, ele 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 snippet 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. Ele também invoca Repaint.

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

Localize 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, mesmo que undo modifique os mesmos campos. Portanto, você acha que pode corrigir esse problema chamando Repaint de undo.

Mapa de código – Localizar chamada de método ausente

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

Compartilhar sua descoberta e as próximas etapas

Antes que você ou outra pessoa corrija 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 aos itens de mapa e sinalizador usando cores.

Mapa de código – Itens com comentários e sinalizados

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

Mapa de código – Compartilhar, exportar, enviar email

Corrigir o problema e mostrar o que você fez

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

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

Para confirmar a correção, reinicie a sessão de debug e tente reproduzir o bug. Agora, escolher Desfazer meu último traço funciona conforme o esperado e confirma que você fez a correção correta.

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

Você pode atualizar o mapa para mostrar a correção feita.

Mapa de código – Atualizar o mapa com a chamada de método ausente

Agora, o mapa mostra um vínculo entre desfazer e repintar.

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

Observação

Ao atualizar o mapa, você poderá ver uma mensagem informando que o índice de código usado para criar seu 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 com êxito. Você também tem um mapa que ajuda você a navegar pelo código, lembrar o que aprendeu e mostra as etapas que tomou para corrigir o problema.