Condividi tramite


DebugSettings.LayoutCycleTracingLevel Proprietà

Definizione

Ottiene o imposta un valore che indica se la traccia del ciclo di layout viene scritta nel debugger nativo e il livello di dettaglio registrato.

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

Valore della proprietà

Valore dell'enumerazione che indica se la traccia del ciclo di layout viene scritta nel debugger nativo e il livello di dettaglio registrato. Il valore predefinito è None.

Commenti

Quando viene visualizzato un arresto anomalo del ciclo di layout imminente, questo livello di traccia viene usato per determinare la quantità di informazioni di debug mantenute nei dump di arresto anomalo e se restituire eventuali informazioni al debugger nativo.

  • None - Le informazioni minime del ciclo di layout vengono mantenute nelle eccezioni scomponite nei dump di arresto anomalo. Non è disponibile alcun output nel debugger nativo.
  • Low - Le informazioni minime del ciclo di layout vengono mantenute nelle eccezioni scomponite nei dump di arresto anomalo. Le stesse informazioni vengono restituite anche al debugger nativo.
  • High- Sono disponibili ulteriori informazioni sul ciclo di layout dettagliato che includono tutte Measure e le chiamate con i relativi availableSize valori e ArrangefinalSize. L'output viene mantenuto nelle eccezioni in caso di arresto anomalo. Le stesse informazioni vengono restituite anche al debugger nativo.

È anche possibile impostare DebugSettings.LayoutCycleDebugBreakLevel per attivare un debugger nativo collegato per interrompere durante eventi interessanti che portano a un potenziale arresto anomalo del ciclo di layout.

Layout XAML

Il layout XAML è il processo in cui gli elementi vengono assegnati a una dimensione e alla posizione. Ad esempio, in un layout verticale StackPanel , ogni figlio viene dato una posizione in modo che si allineano orizzontalmente e vengano visualizzati in senso verticale.

La configurazione di tutti gli elementi nell'albero XAML è iterativa, in cui il processo di layout può causare una modifica che attiva un altro passaggio di layout. Questo processo dovrebbe convergere, con un passaggio finale di layout che produce un risultato senza attivare alcun nuovo passaggio di layout. Se il processo non riesce a convergere (ogni passaggio di layout attiva un altro passaggio di layout), il processo viene terminato e l'app si arresta in modo anomalo con un'eccezione del ciclo di layout.

Errori del ciclo di layout

Per impostazione predefinita, le app XAML che riscontrano un arresto anomalo del ciclo di layout forniscono informazioni minime per trovare e risolvere il problema:

È possibile impostare LayoutCycleTracingLevel per inviare informazioni sulla traccia del ciclo di layout all'output del debugger nativo, che semplifica l'accesso rispetto all'uso di eccezioni stowed e per aumentare la verbosità della registrazione del ciclo di layout per fornire altre informazioni.

Ecco un esempio di output per un arresto anomalo del ciclo di layout che coinvolge il controllo 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"

Questo output del log mostra che le Width dimensioni desiderate (e risultanti) dell'elemento HorizontalDecreaseRect sono attivate tra 866.400024 e 865.5999976. È possibile usare queste informazioni per esaminare ulteriormente, incluso l'uso di DebugSettings.LayoutCycleDebugBreakLevel per interrompere il debugger per analizzare le variabili, per trovare eventuali problemi nel codice di layout.

Queste sono alcune delle proprietà comuni elencate nell'output di traccia:

  • LayoutCycleCountdown: Specifica il numero di pass count del layout corrente. Il numero di passaggi di layout inizia al massimo consentito e conta fino a 0. Se il processo di layout non converge alla fine del passaggio 0, si verifica un'eccezione del ciclo di layout.
  • Classname: Nome della classe della FrameworkElement sottoclasse associata al messaggio.
  • Nome: Oggetto FrameworkElement.Name dell'oggetto FrameworkElement associato al messaggio, se presente.
  • Istanza: Indirizzo di memoria della rappresentazione interna dell'oggetto FrameworkElement associato al messaggio. Ciò è particolarmente utile per filtrare in modo da tracciare i messaggi per singole istanze.
  • TypeIndex: Rappresenta l'indice FrameworkElement interno del tipo di classe. Questo può in genere essere ignorato.
  • SetValue: Quando viene impostata una proprietà che influisce sul layout, questo elenca il nome della proprietà e elenca anche il nuovo valore per alcuni tipi di valore.
  • Desiredsize: Quando il risultato della misurazione di un FrameworkElement oggetto è una dimensione diversa rispetto a quando è stata misurata in precedenza, questo mostra la modifica delle dimensioni desiderate.

Si applica a

Vedi anche