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 - 在損毀傾印的 Stowed 例外 狀況中,會保留最小版面配置周期資訊。 原生調試程式沒有輸出。
  • Low - 在損毀傾印的 Stowed 例外 狀況中,會保留最小版面配置周期資訊。 相同的資訊也會輸出至原生調試程式。
  • High- 提供更詳細的版面配置周期資訊,其中包含其 和值的所有 MeasureArrangefinalSize 呼叫availableSize。 輸出會保留在損毀傾印的 stowed 例外 狀況中。 相同的資訊也會輸出至原生調試程式。

您也可以設定 DebugSettings.LayoutCycleDebugBreakLevel 來觸發附加的原生調試程式,以在有趣的事件期間中斷,導致潛在的配置週期損毀。

XAML 版面配置

XAML 版面配置是指定元素大小和位置的程式。 例如,在垂直 StackPanel 版面配置中,每個子系都會獲得一個位置,以便水準對齊並依序顯示。

在 XAML 樹狀結構中配置所有元素是反覆的,其中配置程式可能會導致觸發另一個版面配置傳遞的變更。 此程式預期會交集,最終版面配置傳遞會產生結果,而不會觸發任何新的版面配置傳遞。 如果進程無法交集 (每個版面配置傳遞都會觸發另一個版面配置傳遞) ,進程就會終止,且應用程式因版面配置週期例外狀況而損毀。

版面配置周期錯誤

根據預設,遇到版面配置循環當機的 XAML 應用程式會提供最少的資訊,以協助您找出並修正問題:

您可以將 設定 LayoutCycleTracingLevel 為將版面配置迴圈追蹤資訊傳送至原生調試程序輸出,這可讓您比使用存根例外狀況更容易存取,以及增加配置週期記錄的詳細資訊,以提供詳細資訊。

以下是涉及 Slider 控制件之版面配置週期損毀的一些範例輸出:

[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"

此記錄輸出顯示元素 Width (和產生的所需大小) HorizontalDecreaseRect 在866.400024和865.599976之間切換。 您可以使用這項資訊進一步調查,包括使用 DebugSettings.LayoutCycleDebugBreakLevel 來中斷調試程式以調查變數,以找出配置程式代碼中的任何問題。

以下是追蹤輸出中所列的一些常見屬性:

  • LayoutCycleCountdown: 指定目前的版面配置傳遞計數。 版面配置傳遞計數從允許的傳遞上限開始,並計算為 0。 如果版面配置程式未交集於傳遞 0 的結尾,則會發生版面配置迴圈例外狀況。
  • ClassName: 與訊息相關聯之子類別的 FrameworkElement 類別名稱。
  • 名字:FrameworkElement.NameFrameworkElement如果有任何,則為與訊息相關聯的 。
  • 實例: 與訊息相關聯之 之內部表示的 FrameworkElement 記憶體位址。 這特別適合用來篩選,以便追蹤個別實例的訊息。
  • TypeIndex: 表示類別型別的內部索引 FrameworkElement 。 這通常可以忽略。
  • SetValue: 當影響配置的屬性設定時,這會列出屬性的名稱,也會列出某些實值類型的新值。
  • DesiredSize: 當測量 FrameworkElement 的結果與先前測量的大小不同時,這會顯示所需的大小變更。

適用於

另請參閱