이 문서에서는 .NET에서 덤프를 수집하는 방법에 대한 일반적인 질문에 답변합니다.
[dotnet-dump](dotnet-dump.md) 또는 [크래시가 발생한 프로세스](dumps.md#collect-dumps-on-crash)가 관리자 권한으로 실행되는 경우에만 Linux에서 덤프를 가져오는 이유는 무엇인가요?
Linux 기반 시스템에서는 /proc/sys/kernel/ptrace_scope
가 ptrace
를 호출할 수 있는 사용자 및 추적할 수 있는 프로세스를 제어합니다. 동일한 상위 체인의 프로세스만 추적할 수 있음을 의미하는 1
로 설정하는 것이 좋습니다. 이 값보다 높은 값은 권한 상승이 필요하거나 ptrace
를 완전히 비활성화할 수 있습니다.
컨테이너 내에서 실행할 때 덤프를 수집할 수 없는 이유는 무엇인가요?
Open Container Initiative 기술로 실행되는 애플리케이션의 경우 seccomp
프로필에서 ptrace
에 대한 호출을 허용해야 합니다. 예를 들어 Docker
는 내부적으로 containerd를 컨테이너 런타임으로 사용합니다. 런타임을 초기화할 때 컨테이너 호스트에 있는 커널 버전이 4.8보다 높거나 CAP_SYS_PTRACE
기능이 지정된 경우에만 ptrace
를 허용하는 기본 seccomp 프로필을 지정합니다.
macOS에서 덤프를 수집할 수 없는 이유는 무엇인가요?
macOS에서 ptrace
를 사용하려면 대상 프로세스의 호스트에 적절한 자격이 있어야 합니다. 필요한 최소 자격에 대한 자세한 내용은 기본 자격을 참조하세요.
덤프를 활용하여 .NET 애플리케이션의 문제를 진단하는 방법에 대해 자세히 알아볼 수 있는 위치는 어디인가요?
다음은 몇 가지 추가 리소스입니다.
"호환되는 프레임워크 버전을 찾을 수 없음" 오류를 해결하려면 어떻게 해야 하나요?
Linux에서 DOTNET_ROOT
환경 변수가 설정되면 올바른 폴더를 가리켜야 합니다. 다른 .NET 버전을 가리키면 dotnet-dump
은(는) 항상 이 오류가 발생됩니다. DOTNET_ROOT
환경 변수가 설정되지 않으면 다른 오류가 발생합니다("이 애플리케이션을 실행하려면 .NET을 설치해야 함").