디버깅 및 프로파일링을 위한 런타임 구성 옵션
이 문서에서는 .NET 디버깅 및 프로파일링을 구성하는 데 사용할 수 있는 설정을 자세히 설명합니다.
참고 항목
.NET 6은 .NET 런타임 동작을 구성하는 환경 변수에 대해 COMPlus_
대신 접두사 DOTNET_
을 표준화합니다. 그러나 COMPlus_
접두사도 계속 작동합니다. 이전 버전의 .NET 런타임을 사용하는 경우에도 환경 변수에 COMPlus_
접두사를 사용해야 합니다.
진단 사용
- 디버거, 프로파일러 및 EventPipe 진단이 사용 또는 사용하지 않도록 설정되는지 여부를 구성합니다.
- 이 설정을 생략하면 진단이 사용됩니다. 이는 값을
1
으로 설정하는 것과 같습니다.
설정 이름 | 값 | |
---|---|---|
runtimeconfig.json | 해당 없음 | 해당 없음 |
환경 변수 | COMPlus_EnableDiagnostics 또는 DOTNET_EnableDiagnostics |
1 - 사용0 - 사용 안 함 |
프로파일링 사용
- 현재 실행 중인 프로세스에서 프로파일링이 사용하도록 설정되는지 여부를 구성합니다.
- 이 설정을 생략하면 프로파일링을 사용할 수 없습니다. 이는 값을
0
으로 설정하는 것과 같습니다.
설정 이름 | 값 | |
---|---|---|
runtimeconfig.json | 해당 없음 | 해당 없음 |
환경 변수 | CORECLR_ENABLE_PROFILING |
0 - 사용 안 함1 - 사용 |
프로파일러 GUID
- 현재 실행 중인 프로세스에 로드할 프로파일러의 GUID를 지정합니다.
설정 이름 | 값 | |
---|---|---|
runtimeconfig.json | 해당 없음 | 해당 없음 |
환경 변수 | CORECLR_PROFILER |
string-guid |
프로파일러 위치
- 현재 실행 중인 프로세스(또는 32비트 또는 64비트 프로세스)에 로드할 프로파일러 DLL의 경로를 지정합니다.
- 변수가 둘 이상 설정된 경우, 비트 수 관련 변수가 우선적으로 적용됩니다. 이들 변수는 프로파일러의 어느 비트 수를 로드할지 지정합니다.
- 자세한 내용은 Finding the profiler library(프로파일러 라이브러리 찾기)를 참조하세요.
설정 이름 | 값 | |
---|---|---|
환경 변수 | CORECLR_PROFILER_PATH |
string-path |
환경 변수 | CORECLR_PROFILER_PATH_32 |
string-path |
환경 변수 | CORECLR_PROFILER_PATH_64 |
string-path |
perf 맵 및 jit 덤프 내보내기
- perf 맵 또는 jit 덤프의 선택적 사용을 사용하거나 사용하지 않도록 설정합니다. 이러한 파일을 사용하면 Linux
perf
도구와 같은 타사 도구가 동적으로 생성된 코드 및 미리 컴파일된 R2R(ReadyToRun) 모듈에 대한 호출 사이트를 식별할 수 있습니다. - 이 설정을 생략하면 perf 맵 및 jit 덤프 파일 작성이 모두 비활성화됩니다. 이는 값을
0
으로 설정하는 것과 같습니다. - perf 맵을 사용하지 않도록 설정하면 관리되는 모든 호출 사이트를 제대로 확인할 수 없습니다.
- Linux 커널 버전에 따라 두 형식 모두
perf
도구가 지원합니다. - 성능 perf 또는 jit 덤프를 사용하도록 설정하면 10~20% 오버헤드를 발생시킵니다. 성능 영향을 최소화하려면 perf 맵 또는 jit 덤프를 선택적으로 사용하도록 설정하는 것이 좋지만 둘 다 사용하도록 설정하는 것이 좋습니다.
다음 표에서는 perf 맵과 jit 맵을 비교합니다.
서식 | 설명 | 다음에서 지원됨 |
---|---|---|
Perf 맵 | 동적으로 생성된 코드에 대한 기호 정보가 포함된 /tmp/perf-<pid>.map 을(를) 내보냅니다.R2R(ReadyToRun) 모듈 기호 정보를 포함하고 PerfCollect가 사용하는 /tmp/perfinfo-<pid>.map 을(를) 내보냅니다. |
Perf 맵은 모든 Linux 커널 버전에서 지원됩니다. |
Jit 덤프 | jit 덤프 형식은 perf 맵을 대체하고 보다 자세한 기호 정보를 포함합니다. 사용하도록 설정하면 jit 덤프가 /tmp/jit-<pid>.dump 파일에 출력됩니다. |
Linux 커널 버전 5.4 이상. |
설정 이름 | 값 | |
---|---|---|
runtimeconfig.json | 해당 없음 | 해당 없음 |
환경 변수 | COMPlus_PerfMapEnabled 또는 DOTNET_PerfMapEnabled |
0 - 사용 안 함1 - perf 맵 및 jit 덤프 모두 사용2 - jit 덤프 사용3 - perf 맵 사용 |
Perf 로그 마커
- Perf 로그에서 마커로 사용되거나 무시될 지정된 신호를 사용하거나 사용하지 않도록 설정합니다.
- 이 설정을 생략하면 지정된 신호는 무시되지 않습니다. 이는 값을
0
으로 설정하는 것과 같습니다.
설정 이름 | 값 | |
---|---|---|
runtimeconfig.json | 해당 없음 | 해당 없음 |
환경 변수 | COMPlus_PerfMapIgnoreSignal 또는 DOTNET_PerfMapIgnoreSignal |
0 - 사용 안 함1 - 사용 |
참고 항목
DOTNET_PerfMapEnabled를 생략하거나 0
(즉, 사용 안 함)으로 설정하면 이 설정은 무시됩니다.
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET