다음을 통해 공유


DebugSettings.LayoutCycleTracingLevel 속성

정의

레이아웃 주기 추적이 네이티브 디버거에 기록되는지 여부와 기록되는 세부 정보 수준을 나타내는 값을 가져오거나 설정합니다.

public:
 property LayoutCycleTracingLevel LayoutCycleTracingLevel { LayoutCycleTracingLevel get(); void set(LayoutCycleTracingLevel value); };
LayoutCycleTracingLevel LayoutCycleTracingLevel();

void LayoutCycleTracingLevel(LayoutCycleTracingLevel value);
public LayoutCycleTracingLevel LayoutCycleTracingLevel { get; set; }
var layoutCycleTracingLevel = debugSettings.layoutCycleTracingLevel;
debugSettings.layoutCycleTracingLevel = layoutCycleTracingLevel;
Public Property LayoutCycleTracingLevel As LayoutCycleTracingLevel

속성 값

레이아웃 주기 추적이 네이티브 디버거에 기록되는지 여부와 기록되는 세부 정보 수준을 나타내는 열거형 값입니다. 기본값은 None입니다.

설명

레이아웃 주기 크래시가 임박한 것으로 나타나면 이 추적 수준을 사용하여 크래시 덤프에서 유지되는 디버깅 정보의 양과 네이티브 디버거에 정보를 출력할지 여부를 결정합니다.

  • None - 최소 레이아웃 주기 정보는 크래시 덤프의 보관된 예외 에서 유지됩니다. 네이티브 디버거에 대한 출력이 없습니다.
  • Low - 최소 레이아웃 주기 정보는 크래시 덤프의 보관된 예외 에서 유지됩니다. 네이티브 디버거에도 동일한 정보가 출력됩니다.
  • High - 및 값이 있는 모든 MeasureArrange 호출 availableSizefinalSize 을 포함하는 자세한 레이아웃 주기 정보가 제공됩니다. 출력은 크래시 덤프에서 보관된 예외 에서 유지됩니다. 네이티브 디버거에도 동일한 정보가 출력됩니다.

또한 DebugSettings.LayoutCycleDebugBreakLevel 을 설정하여 잠재적인 레이아웃 주기 크래시로 이어지는 흥미로운 이벤트 중에 연결된 네이티브 디버거가 중단되도록 트리거할 수 있습니다.

XAML 레이아웃

XAML 레이아웃은 요소에 크기와 위치가 부여되는 프로세스입니다. 예를 들어 세 StackPanel 로 레이아웃에서 각 자식은 가로로 정렬되고 순차적으로 세로로 표시되도록 위치를 지정합니다.

XAML 트리의 모든 요소를 배치하는 것은 반복적입니다. 레이아웃 프로세스로 인해 다른 레이아웃 패스를 트리거하는 변경이 발생할 수 있습니다. 이 프로세스는 새 레이아웃 패스를 트리거하지 않고 결과를 생성하는 최종 레이아웃 패스와 함께 수렴될 것으로 예상됩니다. 프로세스가 수렴되지 않으면(모든 레이아웃 패스가 다른 레이아웃 패스를 트리거함) 프로세스가 종료되고 앱이 레이아웃 주기 예외와 충돌합니다.

레이아웃 주기 오류

기본적으로 레이아웃 주기 크래시가 발생하는 XAML 앱은 문제를 찾고 해결하는 데 도움이 되는 최소한의 정보를 제공합니다.

레이아웃 주기 추적 정보를 네이티브 디버거 출력으로 보내도록 설정할 LayoutCycleTracingLevel 수 있습니다. 이렇게 하면 허용된 예외를 사용하는 것보다 쉽게 액세스할 수 있으며 레이아웃 주기 로깅의 세부 정보를 늘려 자세한 정보를 제공할 수 있습니다.

다음은 슬라이더 컨트롤과 관련된 레이아웃 주기 크래시의 출력 예제입니다.

[LayoutCycleTracing] "SetValue(Width=866.400024)","LayoutCycleCountdown: 7","ClassName: Microsoft.UI.Xaml.Shapes.Rectangle","Name: HorizontalDecreaseRect","Instance: 0x000001C67FB0EE70","TypeIndex: 701"
[LayoutCycleTracing] "DesiredSize changed, old: 865.599976x0.000000 new: 866.400024x0.000000","LayoutCycleCountdown: 6","ClassName: Microsoft.UI.Xaml.Shapes.Rectangle","Name: HorizontalDecreaseRect","Instance: 0x000001C67FB0EE70","TypeIndex: 701"
[LayoutCycleTracing] "SetValue(Width=865.599976)","LayoutCycleCountdown: 4","ClassName: Microsoft.UI.Xaml.Shapes.Rectangle","Name: HorizontalDecreaseRect","Instance: 0x000001C67FB0EE70","TypeIndex: 701"
[LayoutCycleTracing] "DesiredSize changed, old: 866.400024x0.000000 new: 865.599976x0.000000","LayoutCycleCountdown: 3","ClassName: Microsoft.UI.Xaml.Shapes.Rectangle","Name: HorizontalDecreaseRect","Instance: 0x000001C67FB0EE70","TypeIndex: 701"
[LayoutCycleTracing] "SetValue(Width=866.400024)","LayoutCycleCountdown: 1","ClassName: Microsoft.UI.Xaml.Shapes.Rectangle","Name: HorizontalDecreaseRect","Instance: 0x000001C67FB0EE70","TypeIndex: 701"
[LayoutCycleTracing] "DesiredSize changed, old: 865.599976x0.000000 new: 866.400024x0.000000","LayoutCycleCountdown: 0","ClassName: Microsoft.UI.Xaml.Shapes.Rectangle","Name: HorizontalDecreaseRect","Instance: 0x000001C67FB0EE70","TypeIndex: 701"

이 로그 출력은 요소의 WidthHorizontalDecreaseRect (및 결과 원하는 크기)가 866.400024에서 865.599976 사이로 전환되고 있음을 보여 줍니다. DebugSettings.LayoutCycleDebugBreakLevel을 사용하여 변수를 조사하기 위해 디버거에 침입하여 레이아웃 코드에서 문제를 찾는 등 이 정보를 사용하여 추가 조사를 수행할 수 있습니다.

다음은 추적 출력에 나열된 몇 가지 일반적인 속성입니다.

  • LayoutCycleCountdown: 현재 레이아웃 패스 수를 지정합니다. 레이아웃 패스 수는 허용되는 최대 패스에서 시작하여 0까지 카운트다운됩니다. 레이아웃 프로세스가 통과 0이 끝날 때까지 수렴되지 않으면 레이아웃 주기 예외가 발생합니다.
  • Classname: 메시지와 연결된 하위 클래스의 FrameworkElement 클래스 이름입니다.
  • 이름:FrameworkElement.Name 메시지와 연결된 의 FrameworkElement 입니다(있는 경우).
  • 인스턴스: 메시지와 연결된 의 내부 표현의 FrameworkElement 메모리 주소입니다. 이는 개별 인스턴스에 대한 메시지를 추적하기 위해 를 필터링하는 데 특히 유용합니다.
  • TypeIndex: 클래스 형식의 내부 인덱스를 FrameworkElement 나타냅니다. 일반적으로 무시될 수 있습니다.
  • Setvalue: 레이아웃에 영향을 주는 속성이 설정되면 속성의 이름이 나열되고 일부 값 형식에 대한 새 값도 나열됩니다.
  • Desiredsize: 측정 결과가 이전에 측정 FrameworkElement 된 것과 다른 크기인 경우 원하는 크기의 변화를 보여 줍니다.

적용 대상

추가 정보