次の方法で共有


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- すべての Measure 呼び出しと 呼び出しとそのArrange値を含む、より詳細なレイアウト サイクル情報が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"

このログ出力は、要素の Width (および結果として得られる目的の HorizontalDecreaseRect サイズ) が 866.400024 と 865.599976 の間で切り替わることを示しています。 この情報を使用して、 DebugSettings.LayoutCycleDebugBreakLevel を使用してデバッガーに侵入して変数を調査するなど、さらに調査し、レイアウト コード内の問題を見つけることができます。

トレース出力に一覧表示される一般的なプロパティの一部を次に示します。

  • LayoutCycleCountdown: 現在のレイアウト パス数を指定します。 レイアウト パス数は、許可される最大パスから始まり、0 までカウントされます。 レイアウト プロセスがパス 0 の終わりまでに収束しない場合は、レイアウト サイクル例外が発生します。
  • Classname: メッセージに関連付けられているサブクラスの FrameworkElement クラス名。
  • 名前:FrameworkElement.NameメッセージにFrameworkElement関連付けられている の 。存在する場合は 。
  • インスタンス: メッセージに関連付けられている の内部表現の FrameworkElement メモリ アドレス。 これは、個々のインスタンスのメッセージをトレースするために をフィルター処理する場合に特に便利です。
  • TypeIndex: クラス型の内部インデックスを FrameworkElement 表します。 通常、これは無視できます。
  • Setvalue: レイアウトに影響するプロパティが設定されると、プロパティの名前が一覧表示され、一部の値型の新しい値も一覧表示されます。
  • DesiredSize: を測定した結果が、以前に測定 FrameworkElement した場合とは異なるサイズである場合、これは目的のサイズの変化を示します。

適用対象

こちらもご覧ください