DebugSettings.LayoutCycleTracingLevel プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
レイアウト サイクル トレースをネイティブ デバッガーと記録される詳細レベルに書き込むかどうかを示す値を取得または設定します。
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
値を含む、より詳細なレイアウト サイクル情報がavailableSize
finalSize
提供されます。 出力は、クラッシュ ダンプに 格納された例外 に保持されます。 同じ情報がネイティブ デバッガーにも出力されます。
DebugSettings.LayoutCycleDebugBreakLevel を設定して、興味深いイベント中にアタッチされたネイティブ デバッガーが中断し、レイアウト サイクルがクラッシュする可能性があります。
XAML レイアウト
XAML レイアウトは、要素にサイズと位置が与えられるプロセスです。 たとえば、垂直 StackPanel
レイアウトでは、各子には水平方向に揃えて垂直方向に順番に表示されるように位置が与えられる。
XAML ツリー内のすべての要素をレイアウトすることは反復的であり、レイアウトのプロセスによって、別のレイアウト パスをトリガーする変更が発生する可能性があります。 このプロセスは収束すると予想され、最終的なレイアウト パスを使用すると、新しいレイアウト パスをトリガーすることなく結果が生成されます。 プロセスが収束に失敗した場合 (すべてのレイアウト パスによって別のレイアウト パスがトリガーされます)、プロセスは終了し、レイアウト サイクル例外でアプリがクラッシュします。
レイアウト サイクル エラー
既定では、レイアウト サイクルのクラッシュが発生する XAML アプリは、問題を見つけて修正するのに役立つ最小限の情報を提供します。
- Application.UnhandledException イベントが発生し、レイアウト サイクルの問題が原因でクラッシュしたことを通知します。
- 一部の情報は 、積み込まれた例外に保存されます。
レイアウト サイクル トレース情報をネイティブ デバッガー出力に送信するように設定 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
した場合とは異なるサイズである場合、これは目的のサイズの変化を示します。