다음을 통해 공유


특수 진단

디버깅이나 가시성이 충분하지 않은 경우 .NET은 추가 진단 메커니즘을 지원합니다.

이벤트 원본으로 추적

이벤트 원본은 .NET 프로세스 내부에서 발생하는 상황에 대한 자세한 진단 정보를 수집하는 기능을 제공합니다. 여기에는 런타임, GC, 라이브러리 및 애플리케이션 코드에 대한 원격 분석 정보가 포함됩니다.

이벤트 원본 데이터는 System.Diagnostics.Tracing.EventListener API를 사용하거나 Visual Studio, dotnet-monitor, dotnet-trace, PerfViewPerfcollect 스크립트와 같은 외부 진단 도구를 사용하여 처리 중에 수집할 수 있습니다. 외부 도구를 사용하여 추적의 이벤트 원본 데이터를 수집하는 것은 일반적으로 성능 분석에 사용됩니다.

컨테이너에서 진단 정보 수집

컨테이너화되지 않은 Linux 환경에서 사용되는 것과 동일한 진단 도구를 사용하여 컨테이너에서 진단 정보를 수집할 수도 있습니다. 도구가 Docker 컨테이너에서 작동하는지 확인하는 데 필요한 몇 가지 사용 변경 내용만 있습니다.

EventPipe

EventPipe는 ETW 또는 LTTng처럼 추적 데이터를 수집하는 데 사용할 수 있는 런타임 구성 요소입니다. EventPipe의 목표는 .NET 개발자가 ETW 또는 LTTng처럼 플랫폼별 OS 네이티브 구성 요소를 사용하지 않고도 .NET 애플리케이션을 쉽게 추적할 수 있도록 하는 것입니다.

EventPipe는 많은 진단 도구의 메커니즘입니다. 런타임에서 발생하는 이벤트와 EventSource로 작성된 사용자 지정 이벤트를 사용하는 데 사용할 수 있습니다.

덤프

덤프는 덤프 만들기 당시 프로세스의 스냅샷을 포함하는 파일입니다. 덤프는 디버깅을 위해 애플리케이션의 상태를 검사하는 데 유용할 수 있습니다.

기호

기호는 컴파일러가 생성한 소스 코드와 이진 간의 매핑입니다. 이는 일반적으로 .NET 디버거 및 추적 도구에서 원본 줄 번호, 지역 변수 이름 및 기타 형식의 진단 정보를 확인하는 데 사용됩니다.

진단 포트

.NET 런타임은 다른 프로세스가 진단 명령을 보내고 IPC 채널을 통해 응답을 받을 수 있도록 하는 서비스 엔드포인트를 노출합니다. 이 엔드포인트를 진단 포트라고 합니다. 다음을 위해 진단 포트로 명령을 보낼 수 있습니다.

  • 메모리 덤프를 캡처합니다.
  • EventPipe 추적을 시작합니다.
  • 앱을 시작하는 데 사용되는 명령줄을 요청합니다.

DiagnosticSource 및 DiagnosticListener

DiagnosticSource는 계측된 프로세스 내에서 사용할 풍부한 데이터 페이로드의 프로덕션 시간 로깅을 위해 코드를 계측할 수 있는 모듈입니다. 런타임 시 소비자는 데이터 원본을 동적으로 발견하고 관심 있는 원본을 구독할 수 있습니다. System.Diagnostics.DiagnosticSourceOpenTelemetry 계측 라이브러리와 같은 처리 중인 도구가 풍부한 데이터에 액세스할 수 있도록 설계되었습니다. DiagnosticSource 데이터는 전용 도구를 통해 풍부한 진단 데이터를 수집할 수 있는 EventPipe를 통해 송신될 수도 있습니다. |

참고 항목