이 문서의 적용 대상: ✔️ .NET Core 3.0 SDK 이상 버전
Linux에서 덤프를 수집하다
팁 (조언)
덤프 수집, 분석 및 기타 주의 사항에 대한 질문과 대답은 덤프: FAQ를 참조하세요.
Linux에서 덤프를 수집하는 두 가지 권장 방법은 다음과 같습니다.
-
dotnet-dumpCLI 도구 - 크래시 시 덤프를 수집하는 환경 변수
Linux에서 덤프를 분석하다
덤프가 수집되면 dotnet-dump 도구를 사용하여 dotnet-dump analyze 명령으로 분석할 수 있습니다. 이 분석 단계는 덤프가 캡처된 환경과 동일한 아키텍처 및 Linux 배포판이 있는 컴퓨터에서 실행되어야 합니다.
이 도구는 dotnet-dump .NET 코드에 대한 정보 표시를 지원하지만 C 및 C++와 같은 다른 언어의 코드 문제를 이해하는 데는 유용하지 않습니다.
또는 LLDB 를 사용하여 Linux에서 덤프를 분석하여 관리 코드와 네이티브 코드를 모두 분석할 수 있습니다. LLDB는 SOS 확장을 사용하여 관리 코드를 디버그합니다.
dotnet-sos CLI 도구를 사용하여 관리 코드를 디버깅하는 데 유용한 명령이 많은 SOS를 설치할 수 있습니다. .NET Core 덤프를 분석하기 위해 LLDB 및 SOS에는 덤프가 만들어진 환경에서 다음 .NET Core 이진 파일이 필요합니다.
- libmscordaccore.so
- libcoreclr.so
- dotnet(앱을 시작하는 데 사용되는 호스트)
대부분의 경우 dotnet-symbol 도구를 사용하여 이진 파일을 다운로드할 수 있습니다.
dotnet-symbol와 함께 필요한 바이너리를 다운로드할 수 없는 경우(예: 소스에서 빌드된 .NET Core의 개인 버전을 사용 중인 경우) 덤프가 생성된 환경에서 위에 나열된 파일을 복사해야 할 수 있습니다. 파일이 덤프 파일 옆에 없는 경우 LLDB/SOS 명령을 setclrpath <path> 사용하여 로드 setsymbolserver -directory <path> 할 경로를 설정하고 기호 파일을 찾을 경로를 설정할 수 있습니다.
필요한 파일을 사용할 수 있게 되면 dotnet 호스트를 디버그할 실행 파일로 지정하여 덤프를 LLDB에 로드할 수 있습니다.
lldb --core <dump-file> <host-program>
이전 명령 <dump-file> 에서 분석할 덤프의 경로이며 <host-program> .NET Core 애플리케이션을 시작한 네이티브 프로그램입니다. 앱이 자체 포함되지 않는 한 일반적으로 dotnet 이진 파일이며, 이 경우 .dll 확장이 없는 애플리케이션의 이름입니다.
LLDB가 시작되면 명령을 사용하여 setsymbolserver 올바른 기호 위치를 가리킬 수 있습니다(setsymbolserver -ms Microsoft의 기호 서버를 사용하거나 setsymbolserver -directory <path> 로컬 경로를 지정하려면). 네이티브 기호를 로드하려면 loadsymbols을(를) 실행합니다. 이 시점에서 SOS 명령을 사용하여 덤프를 분석할 수 있습니다.
비고
명령을 사용하여 LLDB를 설치할 수 있습니다. sudo apt-get install lldb
Windows에서 덤프 분석
Linux 컴퓨터에서 수집된 덤프는 Visual Studio, Windbg 또는 dotnet-dump 도구를 사용하여 Windows 컴퓨터에서 분석할 수도 있습니다. Visual Studio와 Windbg는 모두 네이티브 코드와 관리 코드를 분석할 수 있지만 dotnet-dump는 관리 코드만 분석합니다.
비고
Visual Studio 버전 16.8 이상을 사용하면 .NET Core 3.1.7 이상에서 생성된 Linux 덤프를 열고 분석 할 수 있습니다.
- Visual Studio - Visual Studio 덤프 디버깅 가이드를 참조하세요.
- Windbg - Windows 사용자 모드 덤프를 디버그하는 데 사용하는 것과 동일한 지침을 사용하여 Windbg에서 Linux 덤프를 디버그할 수 있습니다. Linux x64 또는 Arm64 환경에서 수집된 덤프에는 x64 버전의 windbg를 사용하고, Linux x86 환경에서 수집된 덤프에는 x86 버전을 사용합니다.
- dotnet-dump - dotnet-dump analyze 명령을 사용하여 덤프를 봅니다. Linux x64 또는 Arm64 환경에서 수집된 덤프에는 x64 버전의 dotnet-dump를 사용하고, Linux x86 환경에서 수집된 덤프에는 x86 버전을 사용합니다.
참고하십시오
- SOS 확장 설치에 대한 자세한 내용은 dotnet-sos입니다.
- 기호 다운로드 도구를 설치하고 사용하는 방법에 대한 자세한 내용은 dotnet-symbol입니다.
- 유용한 FAQ를 포함하여 디버깅에 대한 자세한 내용을 보려면 .NET Core 진단 리포지토리입니다.
- LLDB 설치하기: Linux 또는 Mac에 LLDB를 설치하는 방법에 대한 지침을 따르세요.
- Linux에서 크래시 덤프를 디버깅하는 자습서를 준비하기 위해 Linux에서 연습하고 문제를 해결하세요
.NET