Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este artigo aplica-se a: ✔️ SDK do .NET Core 3.0 e versões posteriores
Recolher dumps em Linux
Sugestão
Para perguntas frequentes sobre a coleta de dumps, análise e outros detalhes, consulte Perguntas Frequentes sobre Dumps.
As duas maneiras recomendadas de coletar dumps no Linux são:
-
dotnet-dumpFerramenta CLI - Variáveis de ambiente que recolhem registos em caso de falhas
Analise dumps em Linux
Depois que um despejo é coletado, ele pode ser analisado usando a dotnet-dump ferramenta com o dotnet-dump analyze comando. Esta etapa de análise precisa ser executada em uma máquina que tenha a mesma arquitetura e distro Linux do ambiente em que o dump foi capturado.
A dotnet-dump ferramenta suporta a exibição de informações sobre o código .NET, mas não é útil para entender problemas de código para outras linguagens como C e C++.
Como alternativa, o LLDB pode ser usado para analisar dumps no Linux, o que permite a análise de código gerenciado e nativo. LLDB usa a extensão SOS para depurar código gerenciado. A dotnet-sos ferramenta CLI pode ser usada para instalar o SOS, que tem muitos comandos úteis para depurar código gerenciado. Para analisar dumps do .NET Core, LLDB e SOS exigem os seguintes binários do .NET Core do ambiente em que o dump foi criado:
- libmscordaccore.so
- libcoreclr.so
- dotnet (o host usado para iniciar o aplicativo)
Na maioria dos casos, esses binários podem ser baixados usando a dotnet-symbol ferramenta. Se os binários necessários não puderem ser baixados ( dotnet-symbol por exemplo, se uma versão privada do .NET Core criada a partir do código-fonte estiver em uso), pode ser necessário copiar os arquivos listados acima do ambiente em que o dump foi criado. Se os arquivos não estiverem localizados ao lado do arquivo de despejo, você poderá usar o comando setclrpath <path> LLDB/SOS para definir o caminho a partir do qual eles devem ser carregados e setsymbolserver -directory <path> definir o caminho para procurar arquivos de símbolo.
Uma vez que os arquivos necessários estejam disponíveis, o dump pode ser inserido no LLDB especificando o host do dotnet como executável para depuração.
lldb --core <dump-file> <host-program>
No comando anterior, <dump-file> é o caminho do dump a ser analisado e <host-program> é o programa nativo que iniciou o aplicativo .NET Core. Normalmente, esse é o dotnet binário, a menos que o aplicativo seja independente, caso em que é o nome do aplicativo sem a extensão .dll .
Depois que o LLDB for iniciado, pode ser necessário usar o setsymbolserver comando para apontar para o local correto do símbolo (setsymbolserver -ms para usar o servidor de símbolos da Microsoft ou setsymbolserver -directory <path> para especificar um caminho local). Para carregar símbolos nativos, execute loadsymbols. Neste ponto, você pode usar comandos SOS para analisar o dump.
Observação
LLDB pode ser instalado com o comando sudo apt-get install lldb
Analisar despejos no Windows
Os despejos coletados de uma máquina Linux também podem ser analisados em uma máquina Windows usando o Visual Studio, o Windbg ou a ferramenta dotnet-dump . O Visual Studio e o Windbg podem analisar código nativo e gerenciado, enquanto o dotnet-dump analisa apenas o código gerenciado.
Observação
O Visual Studio versão 16.8 e posterior permite que você abra e analise dumps do Linux gerados no .NET Core 3.1.7 ou posterior.
- Visual Studio - Consulte o guia de depuração de dumps do Visual Studio.
- Windbg - Você pode depurar dumps do Linux no windbg usando as mesmas instruções que você usaria para depurar um dump de modo de usuário do Windows. Use a versão x64 do windbg para dumps coletados de um ambiente Linux x64 ou Arm64 e a versão x86 para dumps coletados de um ambiente Linux x86.
- dotnet-dump - Exiba o dump usando o comando dotnet-dump analyze . Use a versão x64 do dotnet-dump para dumps recolhidos de um ambiente Linux x64 ou Arm64 e a versão x86 para dumps recolhidos de um ambiente Linux x86.
Ver também
- dotnet-sos para obter mais detalhes sobre a instalação da extensão SOS.
- dotnet-symbol para mais detalhes sobre como instalar e usar a ferramenta de download de símbolos.
- Repositório de diagnóstico do .NET Core para mais detalhes sobre depuração, incluindo uma FAQ útil.
- Instalando LLDB para obter instruções sobre como instalar LLDB no Linux ou Mac.
- Pratique e solucione problemas no Linux para tutorial sobre depuração de despejos de memória no Linux