Diagnostic Monitor ist ein integriertes Diagnosewerkzeug innerhalb von ArcGIS Pro. Während der Ausführung von ArcGIS Pro werden Statusinformationen, Protokolle und Ereignisse bereitgestellt und innerhalb von Diagnostic Monitor aktualisiert. Diagnostic Monitor enthält verschiedene Registerkarten und Statusindikatoren. Aktuell enthält Diagnostic Monitor die Registerkarten Zähler, Tasks und Log.
Mithilfe der Informationen im Dialogfeld Diagnostic Monitor kann die Diagnose verschiedener Anwendungsprobleme wie z. B. nicht reagierende Systeme, übermäßiger Ressourcenverbrauch, Funktionsfehler und Performance-Verschlechterungen unterstützt werden.
Hinweis:
Diagnostic Monitor ist in allen ArcGIS Pro-basierten Produkten verfügbar und sollte nicht mit ArcGIS Monitor verwechselt werden.
Starten von Diagnostic Monitor
Sie können Diagnostic Monitor auf eine der folgenden Arten öffnen:
- Drücken Sie Strg+Alt+M, während ArcGIS Pro geöffnet ist.
- Starten Sie ArcGIS Pro mit dem Befehlszeilenparameter /enablediagnostics.
Bei Verwendung der Befehlszeilenoption können Sie auch einen /loglevel=debug-Parameter einbinden, um den Debugmodus in Diagnostic Monitor zu aktivieren. Der Debugmodus bleibt während der nachfolgenden ArcGIS Pro-Sitzungen aktiviert, bis Sie ihn über die Registerkarte Log deaktivieren.
Hinweis:
Wenn Diagnostic Monitor über die Befehlszeile aktiviert wird, wird das Dialogfeld in der Microsoft Windows-Taskleiste zunächst minimiert angezeigt.
Um Probleme eines bestimmten Workflows mit Diagnostic Monitor zu beheben, öffnen Sie den Monitor, bevor Sie mit der Arbeit am betreffenden Problembereich beginnen. Um das Dialogfeld Diagnostic Monitor so zu konfigurieren, dass es in ArcGIS Pro stets vor allen anderen Fenstern angezeigt wird, klicken Sie mit der rechten Maustaste auf den Titelbereich des Dialogfeldes, und klicken Sie dann auf Immer im Vordergrund. Dies kann nützlich sein, wenn Sie Aktivitäten bei Verwendung anderer Anwendungs-Features in Diagnostic Monitor genau überwachen möchten.
Ein Überblick über die Architektur von ArcGIS Pro
ArcGIS Pro ist eine modulare 64-Bit-Multi-Thread-Anwendung. Funktionale Subsysteme werden bei Bedarf geladen und führen Arbeiten wie die Berechnung von Puffern oder das Rendern einer Karte innerhalb von Worker-Threads oder separaten Worker-Prozessen aus. Meistens werden logische Arbeitsblöcke (Vorgänge) bei der Ausführung in einen oder mehrere Tasks aufgeteilt. Tasks sind für die Verarbeitung in ArcGIS Pro von zentraler Bedeutung und stehen innerhalb von Diagnostic Monitor im Vordergrund.
Für das Rendern der Benutzeroberflächenelemente der Anwendung und für die Verarbeitung von Benutzereingaben in Form von Tastatureingaben und Mausklicks ist ein dedizierter Thread verantwortlich. Während ein Vorgang in einem der Worker-Threads ausgeführt wird, gibt der Thread der grafischen Benutzeroberfläche (GUI) Feedback über den Fortschritt des Vorgangs und bietet ggf. die Möglichkeit, diesen abzubrechen. Diagnostic Monitor selbst wird in einem gesonderten Thread ausgeführt, der von der GUI unabhängig ist. Aus diesem Grund kann das Dialogfeld Diagnostic Monitor auch dann angesprochen werden, wenn der GUI-Thread hängt.
Worker-Threads innerhalb von ArcGIS Pro sind in Familien unterteilt, die jeweils für bestimmte Funktionsbereiche zuständig sind.
- Vordergrund-Threads: Eine Gruppe von vier Worker-Threads, die das kartografische Informationssystem (Cartographic Information Model, CIM) steuern, das primäre Repository des Konfigurationsstatus innerhalb des aktuell geladenen Projekts. Diese Threads tragen auch dazu bei, das Karten-Rendering zu beschleunigen. Während Vorgänge in Vordergrund-Threads ausgeführt werden, sind bestimmte Arten von Benutzerinteraktionen unzulässig.
- Hintergrund-Threads: Mit diesen Threads werden ganz unterschiedliche Vorgänge ausgeführt, die nicht vom Status des CIM abhängig sind und unabhängig im Hintergrund ausgeführt werden können, während der Benutzer andere Aktionen ausführt. Tasks, die Hintergrund-Threads mit hoher Priorität zugewiesen sind, werden schneller ausgeführt und haben Priorität gegenüber Tasks, die Hintergrund-Threads mit niedriger Priorität zugewiesen sind. Der Thread Gemeinsamer Hintergrund wird in besonderen Fällen verwendet, in denen mehrere Tasks über einen längeren Zeitraum im selben konsistenten Thread ausgeführt werden müssen.
- Geoverarbeitungs-Thread: Dieser Thread wird für die Durchführung von Geoverarbeitungsvorgängen im Hintergrund verwendet. Intern arbeitet der Geoverarbeitungs-Thread häufig mit anderen Threads zusammen, um einen Vorgang abzuschließen.
Statusbereich
Der Bereich Status enthält Indikatoren für den Status und die Thread-Aktivität. Indikatoren für den Status werden in Abhängigkeit vom aktuellen Anwendungsstatus in verschiedenen Farben angezeigt. Sie sind hilfreich, wenn es darum geht, Probleme einzugrenzen, die innerhalb der Anwendung auftreten. Indikatoren für die Thread-Aktivität werden je nach Status der entsprechenden Threads in verschiedenen Farben angezeigt.
Statusindikatoren
Element | Beschreibung |
---|---|
Rot zeigt an, dass der GUI-Thread keine Nachrichten mehr sendet und nicht auf Maus- oder Tastatureingaben reagieren kann. Wenn der GUI-Thread nicht reagiert, wird die Darstellung der Benutzeroberfläche möglicherweise fehlerhaft gerendert. Wenn die Benutzeroberfläche nicht reagiert, wird dies im entsprechenden Protokoll (Unresponsive Log) aufgezeichnet. | |
Gelb zeigt an, dass für den aktiven Task keine zugehörige Verlaufsanzeige vorhanden ist und dem Benutzer daher beim Ausführen des Tasks kein passendes Feedback angezeigt wird. In diesem Fall werden zugehörige Tasks im Task-Protokoll ebenfalls gelb gekennzeichnet. | |
Gelb zeigt an, dass die Ausgaberate für Tasks 10 pro Sekunde überschritten hat. | |
Grün bedeutet, dass aktuell mindestens eine HTTP-Anforderung innerhalb der Anwendung aktiv ist. | |
Grün bedeutet, dass aktuell ein Task im Vordergrund-Thread ausgeführt wird. Während der Ausführung eines Vordergrund-Tasks sind möglicherweise verschiedene Schaltflächen und Werkzeuge nicht verfügbar. | |
Gelb bedeutet, dass eine Ansicht – die üblicherweise eine Karte, einen Globus, eine Szene oder ein Layout enthält – derzeit ausgelastet ist. Während eine Ansicht ausgelastet ist, sind möglicherweise verschiedene Schaltflächen und Werkzeuge nicht verfügbar. | |
Gelb bedeutet, dass ein Bereich derzeit ausgelastet ist. Während ein Bereich ausgelastet ist, sind möglicherweise verschiedene Schaltflächen und Werkzeuge nicht verfügbar. | |
Gelb bedeutet, dass ein Task aufgrund von Darstellungsvorgängen, die derzeit in einem der Vordergrund-Threads ausgeführt werden, angehalten wird. Während die Anwendung wartet, sind möglicherweise verschiedene Schaltflächen und Werkzeuge nicht verfügbar. | |
Ein Task wird angehalten, während ein zuvor angehaltener Darstellungsvorgang fortgesetzt wird. Während die Anwendung fortgesetzt wird, sind möglicherweise verschiedene Schaltflächen und Werkzeuge nicht verfügbar. | |
Grün zeigt an, dass aktuell ein Geoverarbeitungsvorgang ausgeführt wird. Dieser Indikator leuchtet auf, unabhängig davon, ob es sich um einen Hintergrund- oder Vordergrund-Geoverarbeitungsvorgang handelt. |
Indikatoren für die Thread-Aktivität
Jeder der genannten Threads verfügt innerhalb des Statusbereichs von Diagnostic Monitor über einen entsprechenden Aktivitätsindikator. Indikatoren für den Thread-Status sind grün, wenn der zugehörige Thread derzeit ausgeführt wird und grau, wenn der Thread nicht aktiv (im Ruhezustand) ist. Die Indikatoren für den Thread-Status können dunkelgrau angezeigt werden, wenn die CPU des Host-Computers nicht genügend Kerne besitzt, um zusätzliche Threads zu unterstützen.
Diagnostic Monitor-Registerkarten
Diagnostic Monitor enthält die Registerkarten Zähler, Tasks, und Log. Auf der Registerkarte Zähler werden die internen Zähler aufgeführt. Auf der Registerkarte Tasks werden die letzten Tasks angezeigt. Die Registerkarte Log enthält eine Ereignisprotokollanzeige.
Registerkarte "Zähler"
Die Registerkarte Zähler enthält eine Liste benannter interner Zähler. Jeder Zähler ist mit dem Graphen oberhalb der Liste verknüpft. Bei Auswahl eines bestimmten Zählers in der Liste wird der Graph aktualisiert und zeigt die historischen Werte für den betreffenden Zähler während der letzten 20 Sekunden an.
Die Liste der Zähler enthält nützliche Kennwerte, wie z. B. den Speicherbedarf, die Anzahl der Threads, die Anzahl der HTTP-Anforderungen und die Anzahl geladener DLLs. Einige der Zähler müssen näher erläutert werden:
- Aktuelle Task-Rate: Die aktuelle Rate, mit der Tasks in die Warteschlange der Vordergrund-Threads gestellt werden. Ein hoher Wert kann hier darauf hinweisen, dass eine unnötig große Anzahl von Tasks für die Durchführung des Vorgangs ausgegeben wird. Vorgänge mit einer großen Anzahl von Tasks können weniger effizient sein.
- CIM-Zähler: Diese Zähler werden verwendet, um die Gesamtzahl der Lese- und Schreibvorgänge im CIM zu erfassen. Lese- und Schreibvorgänge für die Darstellung werden separat gezählt. Da jeder Vorgang mit Overhead verbunden ist, sind kleinere Sprünge gegenüber größeren innerhalb einer bestimmten Zeitspanne zu bevorzugen.
- IRequest-Zähler: Diese Zähler sind für die interne Verwendung reserviert.
Registerkarte "Tasks"
Die Registerkarte Tasks enthält ein Protokoll für Tasks, die vor kurzem in Folge von Benutzerinteraktionen ausgegeben wurden, und ein anderes Protokoll für alle Reaktionsfehler, die im GUI-Thread aufgetreten sind.
Protokoll der zuletzt verwendeten UI-Tasks
Das Protokoll der zuletzt verwendeten UI-Tasks stellt eine Aufzeichnung der neuesten Tasks zur Verfügung, die aufgrund von Benutzerinteraktionen ausgegeben wurden. Aufgrund des mit der Identifikation von Tasks verbundenen Overheads ist dieses Protokoll nicht verfügbar, wenn das Dialogfeld Diagnostic Monitor geschlossen ist. Standardmäßig werden Tasks in chronologischer Reihenfolge sortiert, wobei der zuletzt ausgeführte Task ganz oben in der Liste aufgeführt ist. Innere Tasks (die innerhalb des ausführenden äußeren Tasks in die Warteschlange gestellt werden) werden in dieser Liste nicht angezeigt. Tasks, die sich in der Warteschlange befinden oder gerade ausgeführt werden, werden grün angezeigt. Jeder Task verfügt über eine Reihe zugehöriger Eigenschaften:
- Task Nr.: Eine Zahl, mit der die Ausführungsreihenfolge eines Tasks angegeben wird. Task Nr. 42 würde beispielsweise den zweiundvierzigsten Task angeben, der innerhalb des laufenden Prozesses ausgeführt wird.
- Zeit in Warteschlange: Die Wanduhrzeit, als der Task zuerst in die Warteschlange gestellt wurde. Tasks, die ausgelöst werden, während ein anderer Task noch ausgeführt wird, werden in die Warteschlange gestellt und erst nach Abschluss des aktuellen Tasks ausgeführt. Schaltflächen und Steuerelemente sind normalerweise deaktiviert, während ein Vordergrund-Task ausgeführt wird, um zu verhindern, dass zusätzliche Tasks in die Warteschlange gestellt werden, während der Zustand der Anwendung wechselt.
- Task-Zeit: Die mit der tatsächlichen Ausführung des Tasks verbundene Zeitspanne in Millisekunden.
- Zeit zum Fortsetzen: Die Wartezeit in Millisekunden bis die Darstellung fortgesetzt wurde.
- Wartezeit: Die Wartezeit in Millisekunden bis zum Abschluss darstellungsbezogener Vorgänge.
- Gesamtzeit: Die insgesamt benötigte Zeit in Millisekunden, um den Task auszuführen, von dem Moment an, als der Task in die Warteschlange gestellt wurde, bis zum Abschluss des Tasks (einschließlich der für die Fortsetzung der Darstellung benötigten Zeit).
- Funktion: Der Name der äußersten Funktion, die am besten mit dem Task verknüpft ist.
Bei Tasks, die sich in der Warteschlange befinden oder noch ausgeführt werden, wird "-1" für die Zeitwerte angezeigt. Die tatsächliche Zeit wird in Millisekunden angezeigt, wenn der Task abgeschlossen oder abgebrochen wird.
Es wird eine Heuristik verwendet, um die Funktion anzuzeigen, die für den Task in der Warteschlange am relevantesten ist. Die Heuristik durchläuft den Stapel der Aufrufe und sucht nach einem Rahmen, der Funktionen enthält, die nicht zum Betriebssystem gehören.
Das Protokoll der zuletzt verwendeten UI-Tasks kann nach jeder Spalte in aufsteigender oder absteigender Reihenfolge sortiert werden. Diese Funktion kann verwendet werden, um z. B. schnell den Task mit der längsten Ausführungszeit zu ermitteln. Wenn Sie mit der rechten Maustaste auf eine beliebige Stelle in der Liste klicken, können Sie den Inhalt des Protokolls in die Zwischenablage kopieren oder löschen, indem Sie auf Kopieren bzw. Löschen klicken.
Protokoll für GUI ohne Reaktion
Immer wenn der GUI-Thread nicht mehr reagiert, wird ein entsprechendes Ereignis protokolliert, das die Startzeit und die gesamte Dauer des Ereignisses enthält. Der Inhalt dieses Protokolls kann in die Zwischenablage kopiert werden, indem Sie mit der rechten Maustaste auf eine beliebige Stelle in der Liste klicken und dann auf Kopieren klicken.
Registerkarte "Log"
Die Registerkarte Log ist eine Live-Ereignisprotokollanzeige mit Sortier- und Filterfunktionen. Bei der Ausführung im Diagnosemodus werden von zahlreichen Subsystemen innerhalb von ArcGIS Pro Diagnoseinformationen in das Ereignisprotokoll geschrieben. Der Diagnosemodus kann mithilfe eines Befehlszeilenarguments aktiviert werden. Er wird jedoch auch automatisch aktiviert, wenn Diagnostic Monitor angezeigt wird.
Es gibt vier Ereignistypen:
- Fehler: Dient zum Anzeigen signifikanter Fehler während der Ausführung von Vorgängen
- Warnung: Weniger kritisch – kann ggf. ignoriert werden
- Information: Dient der Bereitstellung zusätzlicher Kontextinformationen zum derzeit ausgeführten Vorgang
- Debug: Detaillierte Informationen zur Implementierung, in erster Linie für Esri Mitarbeiter
Die Ereignistypen innerhalb der Liste können mithilfe der entsprechenden Kontrollkästchen oberhalb der Liste gefiltert werden. Aufgrund ihrer Bedeutung sind Fehlerereignisse immer in der Liste enthalten und können nicht herausgefiltert werden. Mithilfe des Filters ist eine genauere Auswahl möglich. Wenn hier Text eingegeben wird, werden nur Ereignisse angezeigt, bei denen mindestens eine der Spalten diesen Text (ohne Beachtung der Groß-/Kleinschreibung) enthält.
Die Gesamtzahl übereinstimmender Ereignisse wird rechts oben auf der Registerkarte Log angezeigt.
Protokolldateien
Protokolldateien werden unter dem Ordner "Dokumente" des Benutzers im Unterordner ArcGIS\Diagnostics angelegt. In ArcGIS Pro sehen die Protokolldateien folgendermaßen aus: ArcGISProLog-16360~89343E4F-74E8-4F26-A705-B805E8C92BB0, und sie haben die folgenden Eigenschaften:
- ArcGISProLog ist der Name der ausführbaren Hostdatei.
- 16360 ist die Prozess-ID.
- 89343E4F-74E8-4F26-A705-B805E8C92BB0 ist die eindeutige ID, die für die betreffende Instanz erstellt wurde.