Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Zusammenfassung
In diesem Artikel wird erläutert, wie Sie live monitor zusammen mit der Ablaufverfolgungsfunktion verwenden, um Probleme in Microsoft Power Apps-Canvas-Apps zu diagnostizieren. Dieser Ansatz hilft Ihnen bei der Behandlung von Problemen, die nur für bestimmte Benutzer oder in bestimmten Umgebungen auftreten. Livemonitor zeigt Echtzeitereignisse wie Netzwerkaufrufe, Datenvorgänge, Fehler und Leistungsdetails an. Die Trace-Funktion ermöglicht es Ihnen, benutzerdefinierte Diagnosedatensätze hinzuzufügen, um Werte aus Verhaltensformeln zu wichtigen Momenten zu erfassen.
Hinweis
Livemonitor ist in jedem Szenario keine praktische Option, wie z. B. SharePoint Formulare, benutzerdefinierte Portaleinbettungen oder Probleme, die nur zeitweise auftreten. In diesen Fällen finden Sie Informationen zu Debug-Canvas-Apps ohne Livemonitor für alternative Ansätze.
Voraussetzungen
Dieser Artikel baut auf Debugging-Canvas-Apps mit Live-Monitor und collaborative troubleshooting using Live monitor auf. Wenn Sie noch nicht mit Live Monitor arbeiten, lesen Sie diese Artikel, bevor Sie fortfahren.
Kombinieren von Live-Monitor und Ablaufverfolgung
Livemonitor zeigt Aktivitäten auf Plattformebene an: Datenvorgänge (getRows, createRow, patch), Steuerungsauswertungen, Fehler wie die HTTP-Statuscodes 404 oder 429Timing- und Delegierungsindikatoren .
Wenn Sie Ablaufverfolgungsaufrufe in Ihren Verhaltensformeln (OnSelect, , OnStart) hinzufügen, OnVisibleerfassen Sie den Kontext wie folgt:
- Der Benutzer, der die App ausführt
- Die aktuelle Umgebung
- Der aktive Bildschirm
- Entitätsanzahl (Zeilen in Sammlungen, verknüpfte Datensätze)
- Business-Flags (VIP-Status, Rabattberechtigung)
- Verstrichene Zeiten für Vorgänge
- Alle anderen Informationen, die Ihnen helfen, das App-Verhalten zu verstehen
Gemeinsam beantworten Livemonitor und Trace sowohl "was passiert" als auch "warum".
Anzeigen von Daten, die über das Netzwerk fließen
Der Livemonitor zeigt jedes Datenvorgangsereignis an, indem Folgendes bereitgestellt wird:
- Vorgangstyp (
getRows,createRow,patch,removeRow) - Datenquelle (Dataverse-Tabelle oder Connectorname)
- Zeitplanung (Start, Ende, Dauer)
- Ergebnis (Erfolgs- oder Fehlerstatuscode)
- Delegierungshinweise (nicht delegierbare Operationen lösen clientseitige Verarbeitung aus)
Um die Details anzuzeigen, wählen Sie ein Ereignis aus. Um zu verstehen, warum der Vorgang aufgetreten ist, korrelieren Sie die Ereignisse mit nahegelegenen Trace-Datensätzen. Beispielsweise kann ein Anstieg der getRows Aufrufe nach einem Ablaufverfolgungsvorgang, der die phase: "ApplyFilters" Eigenschaft enthält, auf einen ineffizienten Filterausdruck hinweisen.
Tipp
Wenn (Drosselung) angezeigt wird HTTP 429 , überprüfen Sie vorherige Ereignisse, um zu überprüfen, ob eine Schleife oder wiederholte Auswertung übermäßige Vorgänge ausgelöst hat. Optimieren Sie Formeln, oder verwenden Sie Sammlungen , um Daten zwischenzuspeichern und Netzwerkaufrufe zu reduzieren.
Effektive Verwendung von Trace
Die Ablaufverfolgungsfunktion schreibt einen strukturierten Datensatz auf den Live-Monitor.
Wichtigste Funktionen:
- Funktioniert nur in Verhaltenseigenschaften (
OnSelect,OnChange,OnVisible,OnStart). - Akzeptiert eine Sms und eine optionale Datensatznutzlast für zusätzliche Details.
-
TraceSeverityhilft Ihnen beim Filtern von Ereignissen (Information, Warnung, Fehler). Verwenden Sie Fehlermeldungen sparsam. - Hat minimalen Leistungseffekt, wenn er entsprechend verwendet wird. Entfernen oder schützen Sie ausführliche Trace-Aufrufe, bevor Sie eine umfassende Bereitstellung ausführen.
Eigenschaftswerte von Daten mithilfe von Debug-Schaltflächen verfolgen
Da Die Ablaufverfolgung nicht in Dateneigenschaften wie der Eigenschaft einer Bezeichnung Text platziert werden kann, verwenden Sie temporäre Debugschaltflächen, um diese Werte zu erfassen.
So erstellen Sie eine Debugschaltfläche:
Fügen Sie eine Schaltfläche hinzu, die
btnDebugSnapshotgenannt wird und deren Visible-Eigenschaft aufParam("debug") = "true"festgelegt ist.Weitere Informationen zum Übergeben von Parametern finden Sie unter Param-Funktion.
Rufen Sie die Ablaufverfolgung in
OnSelectauf, und fügen Sie einen Schnappschussdatensatz ein.Wenn Sie testen, fügen Sie
&debug=trueder App-URL hinzu, um die Schaltfläche anzuzeigen.
Tipp
Verfolgen Sie die Eingabewerte, die Sie zum Berechnen einer Dateneigenschaft verwenden. Diese Werte zeigen oft, warum das Ergebnis nicht das ist, was Sie erwarten.
Das folgende Beispiel zeigt die Sichtbaren und OnSelect Formeln für eine Debugmomentaufnahmeschaltfläche.
// Visible property: Param("debug") = "true"
// OnSelect:
Trace(
"Debug: Label value: " & Label1.Text,
TraceSeverity.Information,
{
kind: "DataSnapshot",
user: User().Email,
customerCount: CountRows(Customers),
productCount: CountRows(Products),
maxPrice: Max(Products, Price),
selectedProductId: If(!IsBlank(galProducts.Selected), galProducts.Selected.ProductId)
}
);
Hinweis
Schützen Sie Debugsteuerelemente mithilfe von Abfragezeichenfolgenparametern oder Rollenüberprüfungen, damit Endbenutzer sie nicht sehen. Entfernen Sie diese Steuerelemente, bevor Sie die App abschließen.
Debugprüfliste
Verwenden Sie diese Checkliste bei der Problembehandlung von Canvas-App-Problemen:
- Reproduzieren Sie das Problem, dass live monitor in Studio oder in einer veröffentlichten Sitzung geöffnet ist.
- Fügen Sie Trace-Aufrufe in entscheidenden Phasen hinzu (Anfang, Entscheidungspunkte, Ende, Fehlerbehandlung).
- Verwenden Sie Abfragezeichenfolgenparameter (
Param), um die Umgebung zu markieren oder Debugsteuerelemente anzuzeigen. - Vergleichen Sie Ablaufverfolgungen über Benutzer oder Umgebungen hinweg. Suchen Sie nach unterschiedlichen Markierungen oder Anzahlen.
- Korrelation von Trace-Ereignissen mit Netzwerkereignissen (Drosselung, Fehler, zusätzliche Anrufe).
- Entfernen oder schützen Sie ausführliche Trace-Aufrufe, bevor Sie eine umfassende Bereitstellung ausführen.
Beispielszenarien
Die App funktioniert für einen Benutzer, aber nicht für einen anderen
Benutzer A sendet Aufträge erfolgreich, benutzer B sieht jedoch Fehler und ein anderes Benutzeroberflächenverhalten, z. B. ein deaktiviertes Rabattkontrollkästchen. Sie vermuten, dass sich die zugrunde liegenden Daten zwischen ihren Konten unterscheiden.
Ziel
Erfassen Sie, was die App für jeden Benutzer sieht, einschließlich E-Mail, Rollen, Kundenauswahl und Rabattberechtigung. Vergleichen Sie sie dann mit den Datenvorgängen im Live-Monitor.
Steps
- Öffnen Sie die App in Power Apps Studio.
- Fügen Sie Ablaufverfolgungsaufrufe in der
OnSelectEigenschaft der Senden-Schaltfläche hinzu. - Sichern und veröffentlichen Sie die App.
- Öffnen Sie den Livemonitor für die veröffentlichte App.
- Wählen Sie "Benutzer verbinden" aus, um Benutzer A einzuladen. Wenn Benutzer A die App durchläuft, werden sowohl die integrierten Ereignisse als auch Ihre benutzerdefinierten Ablaufverfolgungsaufrufe angezeigt.
- Öffnen Sie eine neue Livemonitorinstanz, und verbinden Sie dann Benutzer B auf die gleiche Weise.
- Vergleichen Sie die Werte, um den Unterschied zu finden, der das Problem verursacht.
Beispiel für eine OnSelect-Formel zusammen mit der Trace-Funktion.
// Emit pre-submit context
Trace(
"Debug: Before Submit",
TraceSeverity.Information,
{
user: User().Email,
customerId: ddCustomer.Selected.Id,
cartCount: CountRows(colCart),
orderCountForCustomer: CountIf(Orders, Customer = ddCustomer.Selected),
isVIP: ddCustomer.Selected.'VIP Flag',
env: Param("env"),
screen: App.ActiveScreen.Name
}
);
// Perform data operations (simplified)
ForAll(colCart,
Patch(Orders, Defaults(Orders), {
Customer: ddCustomer.Selected,
Product: ThisRecord.Product,
Quantity: ThisRecord.Quantity
})
);
// Post-submit trace
Trace(
"Debug: After Submit",
TraceSeverity.Information,
{
orderCountForCustomer: CountIf(Orders, Customer = ddCustomer.Selected)
}
);
Ergebnisse analysieren
Filtern Sie im Livemonitor nach Trace-Ereignissen oder Schaltflächennamen, oder suchen Sie in den Ereignisdaten nach "Debug:". Benutzer A mit Benutzer B vergleichen:
- Haben sie unterschiedliche
isVIPWerte? Dieser Unterschied könnte Rabattberechnungen ändern. - Sind Einkaufswagenanzahlen identisch? Wenn nicht, unterscheidet sich die upstream-Logik.
- Sind Fehlerspuren nur für Benutzer B vorhanden? Erweitern Sie das Ereignis, um die Fehlerdetails zu überprüfen.
Korrelieren Sie Ablaufverfolgungsereignisse mit benachbarten getRows- oder patch-Vorgängen. Wenn Benutzer B zusätzliche Datenaufrufe auslöst, z. B. einen nicht delegierbaren Filter, der mehrere Netzwerkanforderungen erzwingt, wird diese in der Ereignistabelle angezeigt.
App funktioniert in einer Umgebung, aber nicht in einer anderen Umgebung
Ihre App funktioniert im Test ordnungsgemäß, schlägt aber in der Produktion fehl. Beispielsweise lädt ein Katalog keine Elemente, und die Übermittlung ist langsam. Obwohl die App identisch ist, können sich die Daten in jeder Umgebung unterscheiden. Fehlende Tabellen, unterschiedliche Spaltenwerte, größere Datasets, die Delegierungsbeschränkungen auslösen, oder Berechtigungsunterschiede können dazu führen, dass sich die App anders verhält.
Ziel
Sammeln Sie umgebungsspezifische Metadaten und Anzahlen, und vergleichen Sie dann die Sequenz- und Statuscodes von Datenvorgängen zwischen Umgebungen. In diesem Beispiel verfügt die App über einen Bildschirm, der ein Formular enthält. Dieses Formular enthält ein Produkt, das aus einem Katalog ausgewählt ist und aktualisiert werden kann. Das Update funktioniert im Test , schlägt aber in der Produktion fehl.
Steps
Fügen Sie eine
OnVisibleAblaufverfolgung auf dem betroffenen Bildschirm hinzu:Trace( "Debug: OnVisible on " & App.ActiveScreen.Name, TraceSeverity.Information, { recordId: varSelectedProduct.Id, hasDiscount: varSelectedProduct.HasDiscount, relatedOrders: CountIf(Orders, ProductId = varSelectedProduct.Id) } );Stellen Sie die App mit den neuen Ablaufverfolgungen für die Produktion bereit.
Öffnen Sie den Livemonitor im Test und dann in der Produktion. Exportieren Sie die Protokolle bei Bedarf.
Ergebnisse analysieren
In der Ereignisliste:
- Vergleichen Sie
getRowsEreignisse für Produkte in allen Umgebungen. Gibt man null Ergebnisse oder Fehlercodes zurück? Ein404Code bedeutet, dass die Tabelle fehlt, bedeutet,403dass der Zugriff verweigert wird und429bedeutet, dass die Anforderungen gedrosselt werden. - Suchen Sie nach wiederholten
getRowsAufrufen. Diese Aufrufe deuten möglicherweise auf eine nicht delegierbare Formel hin. - Vergleichen Sie die Ablaufverfolgungswerte. Haben Produkte unterschiedliche Werte für
relatedOrdersoderhasDiscount?
Wenn Sie einen Unterschied finden, fügen Sie weitere Trace-Aufrufe hinzu, in denen die Variable festgelegt ist, und überprüfen Sie dann, wie die Aufrufe implementiert werden.
Wenn Netzwerkfehler wie 4xx Antworten angezeigt werden, überprüfen Sie, ob Tabellen, Flüsse und Connectors in beiden Umgebungen ordnungsgemäß eingerichtet sind.