Partilhar via


Instruções passo a passo: depurando um aplicativo do SharePoint usando o IntelliTrace

Usando IntelliTrace, você pode facilmente depurar aplicativos, incluindo aqueles que incorporam Web pages, como soluções do SharePoint.Depuradores tradicionais oferecem somente um instantâneo do estado do aplicativo no momento atual.No entanto, você pode usar IntelliTrace para examinar, e navega até mesmo a, os eventos passados que ocorreram em seu aplicativo e no contexto no qual os eventos ocorreram.

Essa explicação passo a passo demonstra como usar o coletor de dados autônoma de IntelliTrace para depurar um projeto do SharePoint 2010 no Visual Studio.O coletor de dados autônoma de IntelliTrace é uma ferramenta que é usada para coletar dados de IntelliTrace de aplicativos que estão executando em ambientes de produção.Para analisar os dados que são coletados, você deve usar o Visual Studio 2012 final.Este projeto insere um receptor de recurso que, quando o recurso é ativado, adicionar uma tarefa à lista de tarefas e um comunicado para os anúncios listem.Quando o recurso é desativado, a tarefa é marcada como concluída, e um segundo comunicado é adicionado à lista de anúncios.No entanto, o procedimento contém um erro lógico que impede o projeto seja executado corretamente.Usando, você IntelliTrace permanecerá e corrigir o erro.

Se aplica: as informações contidas neste tópico aplica ao SharePoint 2010 soluções criadas no Visual Studio.

Essa explicação passo a passo mostra as seguintes tarefas:

  • Crie um receptor de recurso

  • Adicione código para o receptor de recurso

  • Testar Project

  • Instalar o coletor de dados autônoma

  • Definir permissões para o diretório do coletor de dados

  • Instalação IntelliTrace PowerShell Cmdlets

  • Crie a pasta de .iTrace e defina suas permissões

  • Deploy the SharePoint Solution.

  • Coletar dados de depuração da solução do SharePoint

  • Depuração e corrigir a solução do SharePoint

ObservaçãoObservação

Seu computador pode mostrar nomes ou locais diferentes para alguns dos elementos da interface do usuário do Visual Studio nas instruções a seguir. A edição do Visual Studio que você possui e as configurações que você usa determinam esses elementos. Para obter mais informações, consulte Configurações de Visual Studio.

Pré-requisitos

Para completar este passo-a-passo, são necessários os seguintes componentes:

Crie um receptor de recurso

Primeiro, você cria um projeto vazio do SharePoint com um receptor de recurso.

Para criar um receptor de recurso

  1. Início Visual Studio usando a opção de Executar como administrador .

  2. Na barra de menu, escolha Arquivo, Novo, Projeto.

    A caixa de diálogo Novo Projeto é exibida.

  3. No idioma que você deseja usar, expanda o nó de SharePoint , e então escolha o nó de 2010 .

  4. No painel de Modelos , escolha o modelo de SharePoint 2010 –Projeto , altere o nome do projeto para IntelliTraceTest, e então escolha o botão de OK .

    Assistente de personalização do SharePoint aparece, em que você pode especificar o site da web do SharePoint para o seu projeto e o nível de confiança de solução.

  5. Escolha o botão de opção de Implantar como uma solução de farm , e então escolha o botão de Concluir .

    IntelliTrace funciona apenas em soluções de farm.

  6. Em Gerenciador de Soluções, abra o menu de atalho para o nó de Recursos , e então escolha Adicionar o recurso.

    Feature1.feature aparece.

  7. Abra o menu de atalho de Feature1.feature, escolha e então Adicione o receptor de eventos para adicionar um módulo de código para o recurso.

Adicione código para o receptor de recurso

Em seguida, adicione o código para dois métodos no receptor de recurso: FeatureActivated e FeatureDeactivating.Disparador desses métodos sempre que um recurso está ativado ou desativado no SharePoint, respectivamente.

Para adicionar código ao receptor de recurso

  1. Na parte superior da classe de Feature1EventReceiver , adicione o seguinte código para declarar variáveis que especificam o site da web do SharePoint e o subsite:

    ' SharePoint site and subsite.
    Private siteUrl As String = "https://localhost"
    Private webUrl As String = "/"
    
    // SharePoint site and subsite.
    private string siteUrl = "https://localhost";
    private string webUrl = "/";
    
  2. Substitua o método FeatureActivated pelo seguinte código.

    Public Overrides Sub FeatureActivated(ByVal properties As SPFeatureReceiverProperties)
        Try
            Using site As New SPSite(siteUrl)
                Using web As SPWeb = site.OpenWeb(webUrl)
                    ' Reference the lists.
                    Dim announcementsList As SPList = web.Lists("Announcements")
                    Dim taskList As SPList = web.Lists("Tasks")
    
                    ' Add a new announcement to the Announcements list.
                    Dim listItem As SPListItem = announcementsList.Items.Add()
                    listItem("Title") = "Activated Feature: " & Convert.ToString(properties.Definition.DisplayName)
                    listItem("Body") = Convert.ToString(properties.Definition.DisplayName) & " was activated on: " & DateTime.Now.ToString()
                    listItem.Update()
    
                    ' Add a to-do task to the Task list.
                    Dim newTask As SPListItem = taskList.Items.Add()
                    newTask("Title") = "Deactivate feature: " & Convert.ToString(properties.Definition.DisplayName)
                    newTask.Update()
                End Using
            End Using
    
        Catch e As Exception
            Console.WriteLine("Error: " & e.ToString())
        End Try
    
    End Sub
    
    public override void FeatureActivated(SPFeatureReceiverProperties properties)
    {
        try
        {
            using (SPSite site = new SPSite(siteUrl))
            {
                using (SPWeb web = site.OpenWeb(webUrl))
                {
                    // Reference the lists.
                    SPList announcementsList = web.Lists["Announcements"];
                    SPList taskList = web.Lists["Tasks"];
    
                    // Add a new announcement to the Announcements list.
                    SPListItem listItem = announcementsList.Items.Add();
                    listItem["Title"] = "Activated Feature: " + properties.Definition.DisplayName;
                    listItem["Body"] = properties.Definition.DisplayName + " was activated on: " + DateTime.Now.ToString();
                    listItem.Update();
    
                    // Add a to-do task to the Task list.
                    SPListItem newTask = taskList.Items.Add();
                    newTask["Title"] = "Deactivate feature: " + properties.Definition.DisplayName;
                    newTask.Update();
                }
            }
        }
    
        catch (Exception e)
        {
            Console.WriteLine("Error: " + e.ToString());
        }
    
    }
    
  3. Substitua o método FeatureDeactivating pelo seguinte código.

    Public Overrides Sub FeatureDeactivating(ByVal properties As SPFeatureReceiverProperties)
        ' The following line induces an error to demonstrate debugging.
        ' Remove this line later for proper operation.
        Throw New System.InvalidOperationException("Serious error occurred!")
        Try
            Using site As New SPSite(siteUrl)
                Using web As SPWeb = site.OpenWeb(webUrl)
                    ' Reference the lists.
                    Dim taskList As SPList = web.Lists("Tasks")
                    Dim announcementsList As SPList = web.Lists("Announcements")
    
                    ' Add an announcement stating that the feature was deactivated.
                    Dim listItem As SPListItem = announcementsList.Items.Add()
                    listItem("Title") = "Deactivated Feature: " & Convert.ToString(properties.Definition.DisplayName)
                    listItem("Body") = Convert.ToString(properties.Definition.DisplayName) & " was deactivated on: " & DateTime.Now.ToString()
                    listItem.Update()
    
                    ' Find the task the feature receiver added to the Task list when the
                    ' feature was activated.
                    Dim qry As New SPQuery()
                    qry.Query = "<Where><Contains><FieldRef Name='Title' /><Value Type='Text'>Deactivate</Value></Contains></Where>"
                    Dim taskItems As SPListItemCollection = taskList.GetItems(qry)
    
                    For Each taskItem As SPListItem In taskItems
                        ' Mark the task as complete.
                        taskItem("PercentComplete") = 1
                        taskItem("Status") = "Completed"
                        taskItem.Update()
                    Next
                End Using
    
            End Using
    
        Catch e As Exception
            Console.WriteLine("Error: " & e.ToString())
        End Try
    
    
    End Sub
    
    public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
    {
        // The following line induces an error to demonstrate debugging.
        // Remove this line later for proper operation.
        throw new System.InvalidOperationException("Serious error occurred!"); 
        try
        {
            using (SPSite site = new SPSite(siteUrl))
            {
                using (SPWeb web = site.OpenWeb(webUrl))
                {
                    // Reference the lists.
                    SPList taskList = web.Lists["Tasks"];
                    SPList announcementsList = web.Lists["Announcements"];
    
                    // Add an announcement stating that the feature was deactivated.
                    SPListItem listItem = announcementsList.Items.Add();
                    listItem["Title"] = "Deactivated Feature: " + properties.Definition.DisplayName;
                    listItem["Body"] = properties.Definition.DisplayName + " was deactivated on: " + DateTime.Now.ToString();
                    listItem.Update();
    
                    // Find the task the feature receiver added to the Task list when the
                    // feature was activated.
                    SPQuery qry = new SPQuery();
                    qry.Query = "<Where><Contains><FieldRef Name='Title' /><Value Type='Text'>Deactivate</Value></Contains></Where>";
                    SPListItemCollection taskItems = taskList.GetItems(qry);
    
                    foreach (SPListItem taskItem in taskItems)
                    {
                        // Mark the task as complete.
                        taskItem["PercentComplete"] = 1;
                        taskItem["Status"] = "Completed";
                        taskItem.Update();
                    }
                }
            }
    
        }
    
        catch (Exception e)
        {
            Console.WriteLine("Error: " + e.ToString());
        }
    }
    

Testar Project

Agora que o código é adicionado para o receptor de recurso e o coletor de dados autônoma está sendo executado, implantar e executar o aplicativo do SharePoint testar se funcionar corretamente.

Observação importanteImportante

Para esse exemplo, um erro é apresentado no manipulador de eventos de FeatureDeactivating.Posteriormente neste passo-a-passo, você usa o arquivo de .iTrace criado pelo coletor de dados autônoma para encontrar esse erro.

Para testar o projeto

  1. Escolha Compilar, Implantar solução para implantar o aplicativo ao SharePoint.

  2. Abra o site da web do SharePoint no navegador.

    O recurso ativa automaticamente, fazendo com que o receptor de recurso adicione um comunicado e uma tarefa.

  3. Certifique-se de que o recurso de solução do SharePoint ative.No painel Início Rápido, escolha o link Listas e então escolha ambos a lista Anúncios e a lista Tarefas para exibir seu conteúdo. A lista Anúncios deve ter um novo anúncio denominado Recurso ativado: IntelliTraceTest_Feature1, e a lista Tarefas deve ter uma tarefa chamada Desativar o recurso: IntelliTraceTest_Feature1.Se esses estão faltando, verifique se o recurso é ativado.Se não estiver ativada, então ativa-a.

  4. Desativar o recurso abrindo o menu de Ações do Site , escolhendo Configurações do Sitee em seguida, escolhendo o link de Gerenciar recursos do site em Ações do Site.Escolha o botão de Desativar ao lado de IntelliTraceTest Feature1, e então escolha o link de Desativar este recurso na página de aviso.

    Ocorre um erro, por causa do erro gerado no manipulador de eventos de FeatureDeactivating() .

Instalar o coletor de dados autônoma

Instalar o coletor de dados autônoma no sistema que está executando o SharePoint para dados de depuração catch.Quando você programas de depuração usando IntelliTrace no Visual Studio, genérico somente informações de depuração é retornado.O SharePoint, no entanto, fornece informações adicionais que é útil para depurar soluções do SharePoint.Usando o coletor de dados autônoma, você pode acessar essas informações SharePoint- específica de depuração.Os trabalhos autônomos o coletor de dados fora do Visual Studio usando cmdlets de PowerShell para capturar informações de depuração quando sua solução do SharePoint executar.Esta seção ajuda você a instalar o coletor de dados autônoma no servidor do SharePoint.

ObservaçãoObservação

Informações de configuração fornecido aqui é específica para esse exemplo.Para obter mais informações sobre outras opções para configurar o coletor de dados autônoma, consulte Coletar dados do IntelliTrace fora do Visual Studio com o coletor autônomo.

Para instalar o coletor de dados autônoma

  1. No computador que está executando o SharePoint, crie um novo diretório para arquivos autônomos o coletor de dados: c:\IntelliTraceCollectorFiles.

  2. Baixar o coletor de dados do Microsoft Download Center: Atualização 1 Visual Studio 2012.Salve o arquivo no diretório que você criou na etapa anterior c:\IntelliTraceCollectorFiles ().

  3. Executar IntelliTraceCollector.exe para extrair o arquivo de IntelliTraceCollection.cab.

  4. Expanda IntelliTraceCollection.cab.

    1. No servidor que está executando o SharePoint, abra uma janela de prompt de comando como administrador.

    2. Procure pelo diretório autônomo o coletor c:\IntelliTraceCollectorFiles ().

    3. Expanda IntelliTraceCollection.cab usando o comando de expand .(Não se esqueça incluir o período no final de linha de comando.)

      expand /f:* IntelliTraceCollection.cab .

      ObservaçãoObservação

      O período cria as subpastas que contêm planos de coleção localizados.

Definir permissões para o diretório do coletor de dados

Antes que o coletor de dados autônoma pode ser usado, você deve dar aos administradores do servidor permissão para acessar sua pasta de modo que eles podem executar os cmdlets de PowerShell do coletor.

As permissões definidas de diretório

  1. No computador que está executando o SharePoint, abra uma janela de prompt de comando como administrador.

  2. No prompt de comando, use o seguinte comando do Windows icacls dar ao administrador do sistema permissões completas para o diretório do coletor.

    icacls “C:\IntelliTraceCollectorFiles” /grant”Domínio \ AdministratorID“: F

    (Certifique-se substituir Domínio \ AdministratorID com o domínio e a identificação de usuário)

  3. Para coletar dados para a solução do SharePoint, da pessoa que irá executar as permissões completas de cmdlets de PowerShell para o diretório do coletor.

    icacls “C:\IntelliTraceCollectorFiles” /grant”Domínio \ UserID“: F

  4. Pool de aplicativos para a leitura de solução do SharePoint e executar as permissões para o diretório do coletor.Por exemplo, para dar uma solução do SharePoint no acesso do pool de aplicativos de SharePoint-80 , uso

    icacls “C:\IntelliTraceCollectorFiles” /grant “IIS APPPOOL \ SharePoint-80”: RX

Instalação IntelliTrace PowerShell Cmdlets

Agora você instala os cmdlets de PowerShell que são usados para executar o coletor de dados autônoma de IntelliTrace.

Para instalar os cmdlets

  1. No servidor que está executando o SharePoint, certifique-se de que PowerShell está habilitado.Na maioria das versões do Windows Server, você pode adicionar esse recurso pela ferramenta administrativo do gerenciador do servidor.A ilustração a seguir mostra o gerenciador do servidor.

    Adicionando o PowerShell usando o Gerenciador de servidores

  2. Instalar os cmdlets de IntelliTrace PowerShell.

    1. Abra uma janela de comando do PowerShell como administrador.

      1. Vá para Iniciar, Todos os Programas, Acessórios, Windows PowerShell.

      2. Escolha uma das seguintes etapas:

        • Em sistemas operacionais de 64 bits, abra o menu de atalho para Windows PowerShell, e então escolha Executar como administrador.

        • Em sistemas operacionais de 32 bits, abra o menu de atalho para Windows PowerShell (x86), e então escolha Executar como administrador.

  3. Na janela de comando de PowerShell, use o comando de Import-Module importar os cmdlets de IntelliTrace PowerShell de Microsoft.VisualStudio.IntelliTrace.PowerShell.dll.Por exemplo:

    Importação-módulo “C:\IntelliTraceCollectorFiles\Microsoft.VisualStudio .IntelliTrace.PowerShell.dll”

Crie a pasta de .iTrace e defina suas permissões

Crie uma pasta para manter os arquivos de .iTrace gerados pelo coletor de dados autônoma, e defina suas permissões.

Para criar uma pasta e conjunto de permissões

  1. No seu computador, crie uma pasta de C:\IntelliTraceLogFiles .

    ObservaçãoObservação
    • Para evitar diminuir o seu aplicativo, escolha um local em um disco de alta velocidade local que não é muito ativo.

    • Você pode colocar arquivos de .iTrace e os arquivos do coletor no mesmo lugar.No entanto, se você tiver um aplicativo web ou um aplicativo do SharePoint, certifique-se de que esse local está fora do diretório que hospeda o aplicativo.

    Observação de segurançaObservação de segurança
    • Restrinja o acesso para a pasta de .iTrace apenas 2 os usuários devem funcionar com que o coletor.Porque IntelliTrace pode registrar todos os dados que transmitirem em parâmetros do método, um arquivo de .iTrace pode conter informações sigilosas, como dados de usuários, bancos de dados, outros locais de origem, e cadeias de conexão.

    • Certifique-se de que os usuários que podem abrir arquivos de .iTrace têm autoridade para exibir dados confidenciais.Use cuidados para compartilhar .iTrace arquivos.Se as pessoas sem autoridade para exibir dados confidenciais devem ter acesso, copiar os arquivos em um local compartilhado seguro.

  2. Dê o pool de aplicativos do SharePoint permissões completas para a pasta de .iTrace usando o comando do Windows icacls .Por exemplo, para um aplicativo do SharePoint no pool de aplicativos SharePoint - 80, você usaria: icacls "C:\IntelliTraceLogFiles" /grant "IIS APPPOOL\SharePoint - 80":F.

Coletar dados de depuração da solução do SharePoint

Agora que o código e os cmdlets e as permissões necessárias estão prontos, você pode coletar dados de depuração da solução do SharePoint usando o cmdlet de IntelliTraceCollection .

Para coletar dados de depuração da solução do SharePoint

  1. Para iniciar coletar dados, use essa sintaxe:

    Iniciar-IntelliTraceCollection ApplicationPoolPathToCollectionPlanFullPathToITraceFileFolder

    Por exemplo, para coletar dados de uma solução do SharePoint no pool de aplicativos de SharePoint - 80 , você usaria o seguinte comando:

    Iniciar - o SharePoint IntelliTraceCollection “- " 80 “C:\IntelliTraceCollectorFiles\collection _plan.ASP.NET.de fault.xml” “C:\IntelliTraceLogFiles”

    A tabela a seguir explica os parâmetros do comando.

    Parâmetro

    Descrição

    PooldeAplicativos

    O nome do pool de aplicativos em que o aplicativo for executado.

    PathToCollectionPlan

    O caminho para um plano de coleção.

    Use este parâmetro para especificar um plano que vêm com o coletor de dados.Os seguintes planos funcionam em soluções do SharePoint:

    • collection_plan.ASP.NET.default.xml

      Coleção somente os eventos de IntelliTrace e os eventos do SharePoint, incluindo exceções, chamadas de banco de dados, e solicitações da web server.

    • collection_plan.ASP.NET.trace.xml

      Coleta chamadas de função e todos os dados especificados em collection_plan.ASP.NET.de fault.xml.Este é um bom plano para análise detalhada, mas devido aos dados coletados adicionais, pode diminuir a solução do SharePoint mais do que collection_plan.ASP.NET.de fault.xml faria.

    Para evitar diminuir a solução, personalizar um plano existente ou criar seus próprios.Para segurança, coloque todos os planos personalizados no mesmo local seguro que os arquivos do coletor.Para obter mais informações, consulte Alterando um plano de coleção de IntelliTrace para o coletor autônomo.

    ObservaçãoObservação
    Por padrão, o tamanho máximo do arquivo de .iTrace é 100 MB.Quando o arquivo de .iTrace atinge esse limite, o coletor exclui as entradas mais adiantadas de arquivo para fazer espaço para mais recentes entradas.Para alterar esse limite, edite o atributo de MaximumLogFileSize de plano de coleção.Se você precisar versões localizadas de planos de coleção, você poderá encontrá-las em subpastas do coletor.

    FullPathToITraceFileFolder

    O caminho completo da pasta que .iTrace arquivos é salvo.

    Observação de segurançaObservação de segurança
    Fornecer um caminho completo para este parâmetro, não um caminho relativo.

    Quando você executa esse comando, o coletor anexar para o pool de aplicativos e começa coletar dados.

    ObservaçãoObservação

    Porque o arquivo de .iTrace é bloqueado durante a coleção de dados, você não pode abri-lo quando coletar dados.No entanto, você pode tomar instantâneos do arquivo quando a operação coletando ainda está em andamento e então abra os instantâneos.Para obter mais informações, consulte Coletar dados do IntelliTrace fora do Visual Studio com o coletor autônomo.

  2. Desativar o recurso abrindo o menu de Ações do Site no SharePoint, escolhendo Configurações do Sitee em seguida, escolhendo o link de Gerenciar recursos do site em Ações do Site.Escolha o botão de Desativar ao lado de IntelliTraceTest Feature1, e então escolha o link de Desativar este recurso na página de aviso.

    Um erro ocorrerá (neste caso, por causa do erro gerado no manipulador de eventos de FeatureDeactivating() ).

  3. Parar de coletar dados executando o seguinte cmdlet na janela de PowerShell:

    Stop-IntelliTraceCollection "SharePoint - 80"

    Os dados de depuração são salvos no arquivo de .iTrace.

Depuração e corrigir a solução do SharePoint

Agora você exibe o arquivo de dados de depuração de .iTrace no Visual Studio para localizar e corrigir o erro na solução do SharePoint.

Para depurar e corrigir a solução do SharePoint

  1. Na pasta \ IntelliTraceLogFiles, abra o arquivo de .iTrace, ou abri-lo no Visual Studio.

    A página de Resumo do IntelliTrace aparece.Porque o erro não foi tratado, uma identificação de correlação do SharePoint (GUID) aparece na área de exceção sem tratamento da seção de Análise .Escolha o botão de Pilha de Chamadas se você deseja exibir a pilha de chamadas onde ocorreu o erro.

  2. Escolha o botão para Depurar a exceção .

    Se você for solicitado para carregar arquivos do símbolo, vá frente e fazê-lo.Na janela de IntelliTrace , a exceção é realçada, “lançada: Ocorreu erro sério!”.

    Escolha a exceção na janela de IntelliTrace para exibir o código que falhou.

  3. Para corrigir o erro, abra a solução do SharePoint e para comentário para fora ou remova a instrução de throw na parte superior do procedimento de FeatureDeactivating ().

  4. Recriar a solução no Visual Studio e reimplantar o aplicativo ao SharePoint.

  5. Desativar o recurso abrindo o menu de Ações do Site no SharePoint, escolhendo Configurações do Sitee em seguida, escolhendo o link de Gerenciar recursos do site em Ações do Site.Escolha o botão de Desativar ao lado de IntelliTraceTest Feature1, e então escolha o link de Desativar este recurso na página de aviso.

  6. Abra a lista de tarefas, e verifique se o valor de Status de tarefa de desactivação está definida corretamente agora “completada” e seu valor de % Conclusão é 100%.

    O código é corrigido agora e funcionando corretamente.

Consulte também

Conceitos

Verificando e depurando código do SharePoint

Depurar seu aplicativo gravando execução de código com o IntelliTrace

Outros recursos

Passo a passo: Verifique se o código do SharePoint por meio de testes de unidade