Configurar sua versão para diagnosticar problemas após a implantação

Para diagnosticar problemas no seu aplicativo da web ASP.NET após a implantação usando o IntelliTrace, inclua informações de compilação com a versão para permitir que o Visual Studio localize automaticamente os arquivos de origem e símbolos corretos que são necessárias para depurar o log do IntelliTrace.

Se você estiver usando o Microsoft Monitoring Agent para controlar o IntelliTrace, também precisará configurar o monitoramento de desempenho do aplicativo no servidor da web. Ele registra eventos de diagnóstico enquanto seu aplicativo é executado e salva os eventos em um arquivo de log do IntelliTrace. Em seguida, você poderá observar os eventos no Visual Studio Ultimate; vá para o código onde ocorreu o evento, observe os valores gravados naquele momento e avance ou retorne através do código executado. Depois de encontrar e resolver o problema, repita o ciclo apenas para compilar, liberar e monitorar seu aplicativo para que você possa corrigir problemas potenciais futuros o quanto antes e com mais rapidez.

Código, desenvolvimento, versão, monitorar, diagnosticar e corrigir

Itens necessários:

  • Visual Studio 2013 ou Team Foundation Server 2013, 2012 ou 2010 para configurar sua compilação

  • Para monitorar seu aplicativo e registrar dados de diagnóstico use o Microsoft Monitoring Agent

  • Para revisar dados de diagnóstico e depurar seu código com IntelliTrace use o Visual Studio Ultimate 2013

Etapa 1: inclua informações de compilação com sua liberação

Configure seu processo de compilação para criar um manifesto de compilação (BuildInfo.config file) de seu projeto Web e inclua esse manifesto em sua liberação. Esse manifesto contém informações sobre o projeto, sobre o controle do código-fonte e o sistema de compilação utilizados para criar uma compilação específica. Essas informações ajudam o Visual Studio a encontrar o código-fonte e os símbolos correspondentes após abrir o log do IntelliTrace para revisar os eventos registrados.

Crie o manifesto de compilação de uma compilação automatizada usando Team Foundation Server

Siga essas etapas caso use Team Foundation Version Control ou Git.

Team Foundation Server 2013

Configure sua definição de compilação para adicionar os locais de seu código-fonte, compilação e símbolos ao manifesto de compilação (BuildInfo.config file). O Team Foundation Build automaticamente cria esse arquivo e coloca-o em sua pasta de saída do projeto.

  1. Edite a definição da compilação ou crie uma nova definição de compilação.

    Exibição build definition no TFS 2013

  2. Escolha o modelo padrão (TfvcTemplate.12.xaml) ou seu próprio modelo personalizado.

    Escolha o modelo de processo de compilação - TFS 2013

  3. Especifique onde salvar o arquivo de símbolos (PDB) de forma que o código-fonte seja indexado automaticamente.

    Se você usar um modelo personalizado, verifique se o modelo tem uma atividade para indexar o código-fonte. Posteriormente, adicione um argumento de MSBuild para especificar onde salvar o arquivo de símbolos.

    Configurar o caminho de símbolos na definição de compilação TFS 2013

    Para obter mais informações sobre símbolos, consulte Publicar dados de símbolos.

  4. Adicione este argumento de MSBuild para incluir os locais do TFS e de símbolos ao arquivo de manifesto da compilação:

    /p:IncludeServerNameInBuildInfo=True

    Qualquer um que possa acessar seu servidor Web pode ver esses locais no manifesto de compilação. Certifique-se de que o servidor de código-fonte é seguro.

  5. Se você usa um modelo personalizado, adicione este argumento de MSBuild para especificar onde salvar o arquivo de símbolos:

    /p:BuildSymbolStorePath=<caminho para símbolos>

    Incluir informações do servidor de compilação na definição de compilação TFS 2013

    E adicione estas linhas ao arquivo de seu projeto da Web (.csproj, .vbproj):

    <!-- Import the targets file. Change the folder location as necessary. -->
       <Import Project=""$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\BuildInfo\Microsoft.VisualStudio.ReleaseManagement.BuildInfo.targets" />
    
  6. Execute uma nova compilação.

Step 2: Release your app

Team Foundation Server 2012 ou 2010

Siga estas etapas para criar automaticamente o arquivo de manifesto de compilação (BuildInfo.config) para seu projeto e colocá-lo na pasta de saída do projeto. O arquivo aparece como "ProjectName.BuildInfo.config" na pasta de saída, mas é renomeado "BuildInfo.config" na pasta de implantação, após publicar seu aplicativo.

  1. Instale o Visual Studio 2013 (qualquer edição) no servidor do Team Foundation Build.

  2. Em sua definição de compilação, especifique onde salvar os símbolos de forma que o código-fonte seja indexado automaticamente.

    Se você usar um modelo personalizado, verifique se o modelo tem uma atividade para indexar o código-fonte.

  3. Adicionar estes argumentos de MSBuild à definição de compilação:

    • /p:VisualStudioVersion=12.0

    • /p:MSBuildAssemblyVersion=12.0

    • /tv:12.0

    • /p:IncludeServerNameInBuildInfo=True

    • /p:BuildSymbolStorePath=<caminho para símbolos>

  4. Execute uma nova compilação.

Step 2: Release your app

Crie o manifesto de compilação para uma compilação manual usando o Visual Studio 2013

Siga estas etapas para criar automaticamente o arquivo de manifesto de compilação (BuildInfo.config) para seu projeto e colocá-lo na pasta de saída do projeto. O arquivo aparece como "ProjectName.BuildInfo.config" na pasta de saída, mas é renomeado "BuildInfo.config" na pasta de implantação, após publicar seu aplicativo.

  1. No Gerenciador de Soluções, descarregue seu projeto Web.

  2. Abra o arquivo de projeto (.csproj, .vbproj). Adicione as seguintes linhas:

    <!-- **************************************************** -->
    <!-- Build info -->
    <PropertyGroup>
       <!-- Generate the BuildInfo.config file -->
       <GenerateBuildInfoConfigFile>True</GenerateBuildInfoConfigFile>
       <!-- Include server name in build info --> 
       <IncludeServerNameInBuildInfo>True</IncludeServerNameInBuildInfo> 
       <!-- Include the symbols path so Visual Studio can find the matching deployed code when you start debugging. -->
       <BuildSymbolStorePath><path to symbols></BuildSymbolStorePath>
    </PropertyGroup>
    <!-- **************************************************** -->
    
  3. Faça check-in do arquivo de projeto atualizado.

  4. Execute uma nova compilação.

Step 2: Release your app

Crie o manifesto de compilação para uma compilação manual usando o MSBuild.exe

Adicione estes argumentos de compilação ao executar uma compilação:

/p:GenerateBuildInfoConfigFile=True

/p:IncludeServerNameInBuildInfo=True

/p:BuildSymbolStorePath=<caminho para símbolos>

Etapa 2: Release your app

Se você usa o pacote Web.Deploy que foi criado por seu processo de compilação para implantar seu aplicativo, o manifesto de compilação é renomeado automaticamente de "ProjectName.BuildInfo.config" para "BuildInfo.config" e é colocado na mesma pasta com seu arquivo Web.config do aplicativo no seu servidor Web.

Se você usa outros métodos para implantar seu aplicativo, certifique-se de que o manifesto de compilação seja renomeado de "ProjectName.BuildInfo.config" para "BuildInfo.config" e que seja colocado na mesma pasta com seu arquivo Web.config do aplicativo no seu servidor Web.

Etapa 3: monitorar seu aplicativo

Configure o monitoramento do desempenho de aplicativos no seu servidor Web para que você possa monitorar a ocorrência de problemas em seu aplicativo, registrar eventos de diagnóstico e salvar esses eventos em um arquivo de log do IntelliTrace. Consulte Monitoramento de problemas de implantação na liberação.

Etapa 4: Encontre o problema

Você precisará do Visual Studio Ultimate 2013 no seu computador de desenvolvimento ou em outro computador para revisar os eventos registrados e depurar seu código usando o IntelliTrace. Você também pode usar ferramentas como CodeLens, mapas do depurador e mapas de código para ajudar no diagnóstico do problema.

Abrir o log do IntelliTrace e a solução correspondente

  1. Abra o log do IntelliTrace (.iTrace file) no Visual Studio Ultimate 2013. Ou apenas clique duas vezes no arquivo se você tiver o Visual Studio Ultimate 2013 no mesmo computador.

  2. Escolha Abrir solução para fazer com que o Visual Studio abra automaticamente a solução ou o projeto correspondente, caso o projeto não tenha sido compilado como parte de uma solução. O log do IntelliTrace não contém todas as informações sobre meu aplicativo implantado. Por que isso ocorreu? O que devo fazer?

    O Visual Studio faz automaticamente um check-in particular de todas as alterações pendentes quando abre a solução ou o projeto correspondente. Para obter mais detalhes sobre esse check-in particular, procure na janela Saída ou no Team Explorer.

    Assim, antes de fazer qualquer alteração, confirme se você tem o código-fonte correto. Se você usa ramificação, pode estar trabalhando em uma ramificação diferente daquela em que o Visual Studio encontra o código-fonte, como sua ramificação de versão.

    Abrir a solução de log do IntelliTrace

    Se você já tem um espaço de trabalho mapeado para essa solução ou projeto, o Visual Studio seleciona esse espaço de trabalho para colocar o código-fonte encontrado.

    Abrir do controle de fonte mapeado espaço de trabalho

    Caso contrário, escolha outro espaço de trabalho ou crie um novo espaço de trabalho. O Visual Studio mapeará a ramificação inteira para esse espaço de trabalho.

    Abrir do controle de origem — criar novo espaço de trabalho

    Para criar um espaço de trabalho com mapeamentos específicos ou com um nome que não seja o nome de seu computador, escolha Gerenciar.

    Por que o Visual Studio diz que meu espaço de trabalho selecionado é inelegível?

    Por que não consigo continuar até escolher uma coleção de equipe ou uma coleção diferente?

Diagnosticar um problema de desempenho

  1. Em Violações de Desempenho, revise os eventos de desempenho gravados, o tempo de execução total e outras informações dos eventos. Em seguida, verifique um pouco mais os métodos que foram chamados durante um evento de desempenho específico.

    Exibir detalhes do evento de desempenho

    Você também pode clicar duas vezes no evento.

  2. Na página de eventos, revise o tempo de execução dessas chamadas. Localize uma chamada lenta na árvore de execução.

    As chamadas mais lentas aparecem em sua própria seção quando você tem várias chamadas, aninhadas ou de outra maneira.

    Expanda essa chamada para revisar qualquer chamada aninhada e os valores gravados nesse momento. Em seguida, inicie a depuração dessa chamada.

    Iniciar a depuração de chamada de método

    Você também pode clicar duas vezes na chamada.

    Se o método estiver no código do aplicativo, o Visual Studio irá para esse método.

    Ir para o código do aplicativo do evento de desempenho

    Agora você pode revisar outros valores gravados, a pilha de chamadas, navegar por código, ou usar a janela do IntelliTrace para avançar ou retornar "no tempo" entre outros métodos que foram chamados durante esse evento de desempenho. O que são todos esses outros eventos e informações no log do IntelliTrace? O que mais posso fazer aqui? Deseja mais informações sobre os eventos de desempenho?

Diagnosticar uma exceção

  • Em Dados da Exceção, revise os eventos de exceção gravados, seus tipos, mensagens e quando as exceções aconteceram. Para se aprofundar no código, comece com a depuração do evento mais recente em um grupo de exceções.

    Iniciar a depuração de eventos de exceção

    Você também pode clicar duas vezes no evento.

    Se a exceção ocorreu no código do aplicativo, o Visual Studio irá para o local onde a exceção ocorreu.

    Ir para o código do aplicativo de um evento de exceção

    Agora você pode revisar outros valores gravados, a pilha de chamadas, ou usar a janela do IntelliTrace para avançar ou retornar "no tempo" entre outros eventos gravados, o código relativo e os valores gravados nesses momentos. O que são todos esses outros eventos e informações no log do IntelliTrace?

O que mais posso fazer aqui?

Perguntas e respostas

P: Por que incluir informações sobre meu projeto, controle do código-fonte, compilação e símbolos com minha liberação?

O Visual Studio usa essas informações para encontrar a solução e o código-fonte correspondentes para a versão que está tentando depurar. Após abrir o log do IntelliTrace e selecionar um evento para iniciar a depuração, o Visual Studio usa símbolos para encontrar e mostrar o código onde ocorreu o evento. Você pode então visualizar os valores que estão registrados e avançar ou retornar através da execução do seu código.

Se estiver usando o TFS e essas informações não estiverem no manifesto de compilação (BuildInfo.config file), o Visual Studio procura pelo código-fonte e símbolos correspondentes em seu TFS conectado no momento. Você recebe uma solicitação para escolher um TFS diferente caso o Visual Studio não encontre o TFS correto ou o código-fonte correspondente.

P: O log do IntelliTrace não contém todas as informações sobre meu aplicativo implantado.Por que isso ocorreu?O que devo fazer?

Isso pode ter acontecer quando ao implantar do seu computador de desenvolvimento ou quando não está conectado ao TFS durante a implantação.

  1. Vá para sua pasta de implantação do projeto.

  2. Encontre e abra o manifesto de compilação (BuildInfo.config file).

  3. Certifique-se de que o arquivo tem as informações necessárias:

Field

Especifica

ProjectName

O nome de seu projeto no Visual Studio. Por exemplo:

<ProjectName>FabrikamFiber.Extranet.Web</ProjectName>

SourceControl

Informações sobre seu sistema de controle do código-fonte e as seguintes propriedades necessárias:

  • TFS

    • ProjectCollectionUri: o URI para seu Team Foundation Server e coleção de projetos

    • ProjectItemSpec: o caminho para seu arquivo de projeto do aplicativo (.csproj ou .vbproj)

    • ProjectVersionSpec: a versão para seu projeto

    Por exemplo:

    <SourceControl type="TFS">
       <TfsSourceControl>
          <ProjectCollectionUri>http://fabrikamfiber:8080/tfs/FabrikamFiber</ProjectCollectionUri>
          <ProjectItemSpec>$/WorkInProgress/FabrikamFiber/FabrikamFiber.CallCenter/FabrikamFiber.Web/FabrikamFiber.Web.csproj</ProjectItemSpec>
          <ProjectVersionSpec>LFabrikamFiber_BuildAndPublish_20130813@$/WorkInProgress</ProjectVersionSpec>
       </TfsSourceControl>
    </SourceControl>
  • Git

    • GitSourceControl: o local de esquema de GitSourceControl

    • RepositoryUrl: o URI para seu Team Foundation Server, a coleção de projetos e o repositório Git

    • ProjectPath: o caminho para seu arquivo de projeto do aplicativo (.csproj ou .vbproj)

    • CommitId: o id para sua confirmação

    Por exemplo:

    <SourceControl type="Git"> 
       <GitSourceControl xmlns="https://schemas.microsoft.com/visualstudio/deploymentevent_git/2013/09">
          <RepositoryUrl>http://gittf:8080/tfs/defaultcollection/_git/FabrikamFiber</RepositoryUrl>
          <ProjectPath>/FabrikamFiber.CallCenter/FabrikamFiber.Web/FabrikamFiber.Web.csproj</ProjectPath>
          <CommitId>50662c96502dddaae5cd5ced962d9f14ec5bc64d</CommitId>
       </GitSourceControl>
    </SourceControl>

Compilação

Informações sobre seu sistema de compilação, "TeamBuild" ou "MSBuild" e as seguintes propriedades necessárias:

  • BuildLabel (para TeamBuild): o nome e o número da compilação. Esse rótulo também é usado como o nome do evento de implantação. Para obter mais informações sobre números de compilação, consulte Usar números de compilação para dar nomes significativos a compilações concluídas.

  • SymbolPath(Recomendado): a lista dos URIs dos locais de seus símbolos (arquivo PDB) separados por ponto-e-vírgula. Esses URIs podem ser URLs ou UNCs (caminhos de rede). Isso facilita para o Visual Studio encontrar os símbolos correspondentes para ajudar com sua depuração.

  • BuildReportUrl (para TeamBuild): o local do relatório de compilação no TFS

  • BuildId (para TeamBuild): o URI para os detalhes da compilação no TFS. Esse URI também é usado como a ID do evento de implantação. Deve ser uma ID exclusiva caso não esteja usando o TeamBuild.

  • BuiltSolution: o caminho para seu arquivo de solução que o Visual Studio usa para localizar e abrir a solução correspondente. Esse é o conteúdo da propriedade SolutionPath do MsBuild.

Por exemplo:

  • TFS

    <Build type="TeamBuild">
       <MsBuild>
          <BuildLabel kind="label">FabrikamFiber_BuildAndPublish_20130813.1</BuildLabel>
          <SymbolPath>\\fabrikamfiber\FabrikamFiber.CallCenter\Symbols</SymbolPath>
          <BuildReportUrl kind="informative, url" url="http://fabrikamfiber:8080/tfs/FabrikamFiber/_releasePipeline/FindRelease?buildUri=fabrikamfiber%3a%2f%2f%2fBuild%2fBuild%2f448">Build Report Url</BuildReportUrl>
          <BuildId kind="id">1c4444d2-518d-4673-a590-dce2773c7744,fabrikamfiber:///Build/Build/448</BuildId>
          <BuiltSolution>$/WorkInProgress/FabrikamFiber/FabrikamFiber.CallCenter/FabrikamFiber.CallCenter.sln</BuiltSolution>
       </MsBuild>
    </Build>
  • Git

    <Build type="MSBuild"> 
       <MSBuild>
          <SymbolPath>\\gittf\FabrikamFiber.CallCenter\Symbols</SymbolPath>
          <BuiltSolution>/FabrikamFiber.CallCenter/FabrikamFiber.CallCenter.sln</BuiltSolution>
       </MSBuild>
    </Build>

P: Por que o Visual Studio diz que meu espaço de trabalho selecionado é inelegível?

R: O espaço de trabalho selecionado não tem mapeamento entre a pasta de controle do código-fonte e uma pasta local. Para criar um mapeamento para esse espaço de trabalho, escolha Gerenciar. Caso contrário, escolha um espaço de trabalho já mapeado ou crie um novo espaço de trabalho.

Abrir do controle de origem com nenhum espaço de trabalho mapeado

P: Por que não consigo continuar até escolher uma coleção de equipe ou uma coleção diferente?

R: Isso pode acontecer por qualquer um destes motivos:

  • O Visual Studio não está conectado ao TFS.

    Abrir do controle de origem - não conectado

  • O Visual Studio não encontrou a solução ou o projeto em sua coleção de equipe atual.

    Quando o arquivo de manifesto de compilação (<ProjectName>.BuildInfo.config) não especifica onde o Visual Studio pode encontrar o código-fonte compatível, o Visual Studio usa o TFS atualmente conectado para localizar a solução ou projeto correspondente. Se sua coleção de equipe atual não tiver o código-fonte correspondente, o Visual Studio solicitará que você se conecte a uma coleção de equipe diferente.

  • O Visual Studio não encontrou a solução ou o projeto na coleção especificada pelo arquivo de manifesto de compilação (<ProjectName>.BuildInfo.config).

    O TFS especificado pode não ter mais o código-fonte compatível ou nem mesmo existir, talvez porque você migrou para um novo TFS. Se o TFS especificado não existir, o Visual Studio poderá atingir o tempo limite depois de cerca de um minuto e depois será solicitado que você se conecte a uma coleção diferente. Para prosseguir, conecte-se ao servidor TFS correto.

    Abrir do controle de origem - migrado

P: O que é um espaço de trabalho?

R: Seu espaço de trabalho armazena uma cópia do código-fonte para que você possa desenvolvê-lo e testá-lo separadamente antes de fazer o check-in de seu trabalho. Se você ainda não tem um espaço de trabalho mapeado especificamente para a solução ou o projeto encontrado, o Visual Studio solicitará a escolha de um espaço de trabalho disponível ou a criação de um novo espaço de trabalho com o nome do computador como o nome padrão do espaço de trabalho.

P: Por que recebo esta mensagem sobre símbolos não confiáveis?

Depurar com o caminho de símbolos não confiáveis?

R: Esta mensagem aparece quando o caminho de símbolos no arquivo de manifesto de compilação (<ProjectName>.BuildInfo.config) não está incluído na lista de caminhos confiáveis de símbolos. Você pode adicionar o caminho à lista de caminhos de símbolos nas opções do depurador.