Bagikan melalui


DebugSettings.LayoutCycleTracingLevel Properti

Definisi

Mendapatkan atau menetapkan nilai yang menunjukkan apakah pelacakan siklus tata letak ditulis ke debugger asli dan tingkat detail yang direkam.

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

Nilai Properti

Nilai enumerasi yang menunjukkan apakah pelacakan siklus tata letak ditulis ke debugger asli dan tingkat detail yang dicatat. Default adalah None.

Keterangan

Ketika siklus tata letak crash muncul segera, tingkat pelacakan ini digunakan untuk menentukan berapa banyak informasi penelusuran kesalahan yang dipertahankan dalam crash dump dan apakah akan menghasilkan informasi apa pun ke debugger asli.

  • None - Informasi siklus tata letak minimal dipertahankan dalam pengecualian tersimpan dalam crash dump. Tidak ada output untuk debugger asli.
  • Low - Informasi siklus tata letak minimal dipertahankan dalam pengecualian tersimpan dalam crash dump. Informasi yang sama juga dihasilkan ke debugger asli.
  • High- Lebih banyak informasi siklus tata letak verbose disediakan yang mencakup semua Measure dan Arrange panggilan dengan nilai dan finalSize merekaavailableSize. Output dipertahankan dalam pengecualian tersimpan dalam crash dump. Informasi yang sama juga dihasilkan ke debugger asli.

Anda juga dapat mengatur DebugSettings.LayoutCycleDebugBreakLevel untuk memicu debugger asli yang terpasang untuk istirahat selama peristiwa menarik yang mengarah ke potensi crash siklus tata letak.

Tata letak XAML

Tata letak XAML adalah proses di mana elemen diberi ukuran dan posisi. Misalnya, dalam tata letak vertikal StackPanel , setiap anak diberi posisi sehingga mereka selaras secara horizontal dan muncul secara berurutan secara vertikal.

Meletakkan semua elemen di pohon XAML bersifat berulang, di mana proses tata letak dapat menyebabkan perubahan yang memicu tata letak lain berlalu. Proses ini diharapkan bertemu, dengan tata letak akhir lulus menghasilkan hasil tanpa memicu lolos tata letak baru. Jika proses gagal bertemu (setiap kode tata letak memicu kode tata letak lain), proses dihentikan dan aplikasi mengalami crash dengan pengecualian siklus tata letak.

Kesalahan siklus tata letak

Secara default, aplikasi XAML yang mengalami crash siklus tata letak memberikan informasi minimal untuk membantu Anda menemukan dan memperbaiki masalah:

Anda dapat mengatur LayoutCycleTracingLevel untuk mengirim informasi pelacakan siklus tata letak ke output debugger asli, yang membuatnya lebih mudah diakses daripada menggunakan pengecualian bertingkat, dan untuk meningkatkan verbositas pengelogan siklus tata letak untuk memberikan informasi lebih lanjut.

Berikut adalah beberapa contoh output untuk crash siklus tata letak yang melibatkan kontrol 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"

Output log ini menunjukkan bahwa Width (dan menghasilkan ukuran yang diinginkan) dari HorizontalDecreaseRect elemen ini beralih antara 866.400024 dan 865.599976. Anda dapat menggunakan informasi ini untuk menyelidiki lebih lanjut, termasuk menggunakan DebugSettings.LayoutCycleDebugBreakLevel untuk masuk ke debugger untuk menyelidiki variabel, untuk menemukan masalah dalam kode tata letak Anda.

Ini adalah beberapa properti umum yang tercantum dalam output pelacakan:

  • LayoutCycleCountdown: Menentukan jumlah lolos tata letak saat ini. Jumlah pass tata letak dimulai pada batas maksimum yang diizinkan dan dihitung ke bawah hingga 0. Jika proses tata letak tidak bertemu pada akhir pass 0, maka pengecualian siklus tata letak terjadi.
  • ClassName: Nama FrameworkElement kelas subkelas yang terkait dengan pesan.
  • Nama:FrameworkElement.Name dari yang FrameworkElement terkait dengan pesan, jika ada.
  • Sebagai contoh: Alamat memori representasi internal yang FrameworkElement terkait dengan pesan. Ini sangat berguna untuk memfilter untuk melacak pesan untuk instans individual.
  • TypeIndex: Mewakili indeks internal jenis FrameworkElement kelas. Ini biasanya dapat diabaikan.
  • SetValue: Saat properti yang memengaruhi tata letak diatur, ini mencantumkan nama properti dan juga mencantumkan nilai baru untuk beberapa jenis nilai.
  • DesiredSize: Ketika hasil pengukuran adalah ukuran yang berbeda dari ketika sebelumnya diukur, ini menunjukkan perubahan ukuran yang FrameworkElement diinginkan.

Berlaku untuk

Lihat juga