Partilhar via


Solucionar erros de criação de perfil e corrigir problemas

Este artigo fornece soluções para alguns dos erros mais comuns que podem impedir o uso ou obtenção de dados suficientes do Performance Profiler no Visual Studio.

Sem resultados

Erro: "Não há dados no conjunto atual de filtros"

Ao abrir um arquivo de diagsession , certos filtros são aplicados, como ocultar código nativo ou ocultar código de não-usuário para tornar o rastreamento mais fácil de entender. Além disso, existem outros filtros que podem ser aplicados, como seleção de tempo e thread, que reduzem ainda mais os dados mostrados. Se esses filtros forem aplicados de uma forma que não haja dados restantes para mostrar, você verá este aviso.

Como corrigir

  • Certifique-se de que a sua seleção de tempo contém dados. Se você alterou sua seleção de tempo no gráfico acima dos dados, selecione Limpar seleção para redefini-la.
  • Em seguida, se ainda não houver dados, verifique se todas as categorias e tópicos estão habilitados nos respetivos menus suspensos.
  • Se a aplicação que está a fazer perfil for código nativo, certifique-se de ativar a opção Mostrar código nativo na lista suspensa Configurações.
  • Se você ainda não tiver dados, o rastreamento coletado provavelmente foi muito curto para que quaisquer dados estivessem presentes. Certifique-se de que o programa para o qual está a recolher dados não é concluído demasiado rapidamente (menos de um segundo).

Consulte também: Mostrar código externo

Demorando muito tempo para que os resultados sejam concluídos

Se a análise da pilha após a coleta parecer lenta para carregar, consulte as seguintes soluções possíveis que podem ajudar a resolver problemas de tempo de espera.

Como corrigir Às vezes, pode levar mais tempo ao tentar analisar instantâneos de aplicativos que consomem muita memória, mas atualizar para uma versão mais recente do Visual Studio deve reduzir o tempo de espera da análise. Se esse problema for persistente após a atualização, pode haver um bug de desempenho na ferramenta. Crie um tíquete de feedback e partilhe o arquivo de sessão de diagnóstico que foi criado. Com o arquivo, podemos determinar por que os dados são lentos para analisar e encontrar onde podemos fazer melhorias de desempenho.

Certifique-se de fornecer um registro de rastreamento e arquivos de despejo de pilha no pedido de feedback.

Ver também:

Erro "Não foi possível criar um arquivo de manifesto para esta diagsession" ou "erro não pôde criar um arquivo de manifesto para diagsession, o Visual Studio não poderá reabrir esta sessão."

Esse problema significa que houve um problema ao preparar os dados do instantâneo de memória para serem analisados e exibidos após a interrupção da coleta de dados. Há várias causas potenciais para o problema aparecer, desde uma falha em obter as informações corretas dos agentes de coleta até o processamento de dados real. Portanto, não será possível diagnosticar qual é o problema sem mais registros.

Como corrigir Responda ao seu tíquete de feedback com informações adicionais de registro para que possamos diagnosticar o problema. Você pode obter as informações de log executando os seguintes comandos em um prompt de comando elevado:

reg add HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\DiagnosticsHub /v LogLevel /t REG_SZ /d All /reg:32
reg add HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\DiagnosticsHub /v LogDirectory /t REG_SZ /d [directory of your choice] /reg:32

Depois de executar esses comandos, inicie o Visual Studio, reproduza seu cenário, feche o Visual Studio, compacte o diretório de log do DiagnosticsHub escolhido e anexe-o a esse tíquete. A partir daí, devemos ser capazes de diagnosticar melhor o que está a acontecer.

Depois de adicionar o log ao seu ticket, execute estes comandos para desativar o registro:

reg delete HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\DiagnosticsHub /f /v LogLevel /reg:32
reg delete HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\DiagnosticsHub /f /v LogDirectory /reg:32

Erro: "Informações de origem não disponíveis."

Para visualizar as informações de origem, é necessário ter PDBs disponíveis desde o momento da coleta. Assim, por exemplo, se você coletar um arquivo de diagsession de uso da CPU, fizer algumas alterações no seu código, recompilar (que substitui o PBD antigo) e, em seguida, abrir o .diagsession novamente, provavelmente não será capaz de ver as informações de origem para os módulos do seu código que você atualizou.

Como corrigir A solução mais fácil para esse problema é coletar uma nova sessão de diagnóstico depois de fazer alterações. Desta forma, pode ter a certeza de que os seus PDBs estão atualizados.

Erro: "A análise de memória falhou devido a um erro interno."

Após uma longa sessão de análise de memória, qualquer tentativa de analisar o resultado encontra um erro.

Houve uma incompatibilidade entre as informações de instantâneo capturadas pela ferramenta de memória e as do agente de coleta. Esse resultado significa que a ferramenta de memória não foi capaz de encontrar o arquivo de estado do heap para um instantâneo nativo. Ou, este resultado, a ferramenta de memória não pôde corresponder a hora de início do GC do instantâneo àquela registrada no arquivo de diagsession para recuperar o GCStats.

Como corrigir Esse problema foi devido a um bug na ferramenta que foi corrigido no Visual Studio 2022 versão 17.3. A atualização para uma versão posterior deve resolver o problema. Se o problema persistir após a atualização, crie um tíquete de feedback e anexe ao tíquete:

  • O arquivo diagsession
  • Um minidump do Visual Studio
  • Uma captura de tela dos instantâneos de memória que foram tirados.

Não há uma solução alternativa para esse problema e a sessão de criação de perfil precisará ser reiniciada.

Erro: "X eventos de diagnóstico descartados, algumas informações no relatório podem estar faltando ou imprecisas"

Às vezes, durante a captura de dados, eventos podem ser descartados que podem fazer com que o relatório de criação de perfil resultante seja impreciso ou inutilizável. Eventos descartados podem acontecer por muitos motivos diferentes, mas ocorrem principalmente quando o sistema não consegue liberar eventos para o disco mais rápido do que a taxa de entrada.

Como corrigir Para ajudar a reduzir eventos descartados, você pode fechar outras operações com uso intensivo de disco e CPU durante a criação de perfil. Ao fechar essas operações, o sistema pode dedicar mais recursos a esvaziar os eventos recebidos. Você também pode tentar reduzir as frequências de amostragem nas ferramentas que oferecem suporte a essas definições de configuração, como a ferramenta Uso da CPU e a ferramenta de Alocação do .NET e, assim, reduzir a sobrecarga.

Erro: Os recursos do ETW foram esgotados

A ferramenta de criação de perfis do Visual Studio usa o Rastreamento de Eventos para Windows (ETW) para coletar informações de desempenho. Há um número finito de sessões ETW disponíveis para uso em um sistema e se todas as sessões já estiverem em uso, você receberá o seguinte erro: ETW resources have been exhausted. Essas sessões são usadas por outros programas, como o conjunto de ferramentas SysInternals, outros criadores de perfil e outras ferramentas de diagnóstico. Você pode resolver esse problema da seguinte forma:

  • Fechar os programas que estão usando as sessões para liberar recursos, ou

  • Separe mais recursos executando o seguinte a partir de um prompt de comando elevado e, em seguida, reinicializando:

    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI" /v EtwMaxLoggers /t REG_DWORD /d 128
    

    Executar este comando aumenta o número padrão de sessões de 64 para 128 (256 é o número máximo de sessões permitidas em um sistema).

Erro: A ferramenta de uso da CPU não funciona na VM ARM64

O profiler do Visual Studio usa o Rastreamento de Eventos para Windows (ETW) para coletar informações de desempenho. Atualmente, a coleta de amostras de perfil usando ETW não é suportada no Windows para ARM64 quando executado em uma máquina virtual (VM). Para contornar essa limitação, você pode usar a ferramenta Uso da CPU em um dispositivo ARM64 real ou usar a ferramenta Instrumentação para capturar informações de temporização.

Erro: A ferramenta de uso de memória não funciona no .NET 7 e no .NET Runtime 8.0.0-8.0.1 com o GC do servidor habilitado

Devido a um problema introduzido com o tempo de execução do .NET 7 e propagado para as versões 8.0.0 e 8.0.1 do .NET 8, não é possível enumerar objetos ao usar a coleta de lixo do servidor. A coleta de lixo do servidor é habilitada por padrão para aplicativos ASP.NET Core.

Como corrigir

Para contornar esse problema:

  • Desative a recolha de lixo do servidor ao tirar um snapshot ou ao recolher um dump da sua aplicação.
  • Use uma versão não afetada do .NET Runtime.

Ver também: