Übung 1.2: Thread-Daten sammeln
Bevor Sie mit dieser Übung beginnen, sollten Sie Übung 1.1: Erforderliche Ressource importieren ausgeführt haben.
Szenario: Das zu untersuchende Programm wird kurze Zeit ausgeführt und stoppt dann abrupt. Dies geschieht jedes Mal, wenn Sie das Programm ausführen. Dieses Verhalten ist typisch für gegenseitige Thread-Sperren.
Sie müssen somit untersuchen, wie die Threads in diesem Programm interagieren.
Für die Suche nach möglichen gegenseitigen Thread-Sperren werden Sie zunächst Thread-Daten sammeln, die Sie dann in der Thread-Ansicht der Perspektive "Profilermittlung und Protokollierung" analysieren werden.
Anhand der gesammelten Thread-Daten können Sie die gegenseitige Sperre identifizieren oder Threads als Ursache für den Anwendungsfehler ausschließen.
Sammlung von Thread-Daten vorbereiten
Für das Sammeln von Thread-Daten müssen Sie die Perspektive "Profilermittlung und Protokollierung" aufgerufen haben.
Schalten Sie wie folgt auf die Perspektive um:
- Wählen Sie in der Menüleiste der Softwareentwicklungsplattform Fenster > Perspektive öffnen > Andere... aus, um das Dialogfenster "Perspektive auswählen" zu öffnen.
- Klicken Sie unten links im Dialogfenster auf Alle anzeigen. In dem Markierungsfeld erscheint eine Markierung.
- Wählen Sie in der Liste der Perspektiven Profilermittlung und Protokollierung aus und klicken Sie auf OK.
- Falls das Dialogfenster "Aktivierung bestätigen" geöffnet wird,
klicken Sie auf Funktionalitäten immer aktivieren und Frage nicht erneut stellen. Klicken Sie dann auf OK.
- Die Softwareentwicklungsplattform schaltet auf die
Perspektive "Profilermittlung und Protokollierung" um.
Thread-Daten für die Anwendung philosopher sammeln
Gehen Sie zum Sammeln der Daten wie folgt vor:
- Wählen Sie in der Menüleiste der Softwareentwicklungsplattform Fenster > Sicht anzeigen > Konsole aus, um die Konsolansicht zu öffnen. In der Konsolansicht können Sie die Verarbeitung der Anwendung verfolgen.
- Erstellen Sie wie folgt
eine Profilerstellungskonfiguration:
- Wählen Sie in der Menüleiste Ausführen > Profil ermitteln... aus, um das Dialogfenster "Profil ermitteln" zu öffnen.
- Klicken Sie in der Konfigurationsliste doppelt auf den Eintrag Java-Anwendung. Daraufhin erscheint
ein Eintrag Neue_Konfiguration.
- Geben Sie im Namensfeld PhilosopherThreads ein.
- Falls auf der Hauptregisterseite philosopher noch nicht im Projektfeld angegeben ist, gehen Sie wie folgt vor:
- Klicken Sie neben dem Projektfeld auf Durchsuchen. Daraufhin
wird das Dialogfenster "Projektauswahl" geöffnet.
- Wählen Sie philosopher aus und klicken Sie auf OK.
- Klicken Sie neben dem Feld "Klasse main" auf Suchen.
- Wählen Sie im Dialogfenster "main-Typ auswählen" MaitreDHote aus und klicken Sie auf OK.
- Falls Sie die IBM JVM (Java Virtual Machine) verwenden, gehen Sie wie folgt vor:
- Klicken Sie im Dialogfenster "Profil ermitteln" auf das Register "Argumente".
- Geben Sie unter VM-Argumente -Xj9 ein, um die richtige JVM-Version anzugeben.
- Klicken Sie im Dialogfenster "Profil ermitteln" auf das Register "Profilerstellung".
- Markieren Sie auf dem untergeordneten Register "Übersicht" die Profilgruppe
"Thread-Analyse". (Eine Profilgruppe definiert den Typ der
Profilerstellungsdaten, die für den Durchgang gesammelt werden sollen.)
- Klicken Sie auf Profil ermitteln. Die Anwendung wird ausgeführt und die Anzeige ändert sich wie folgt:
- Im Monitor für Profilerstellung erscheint eine Profilerstellungsressource.
- Die Konsolansicht
zeigt die Ausgabe für den Durchgang an.
Anmerkung: Falls die Sicherheitsnachricht angezeigt wird, dass der Agent Controller nicht verfügbar ist,
lesen Sie den Abschnitt Datenerfassung nicht möglich.
Wenn die Anwendung einen gewissen Punkt erreicht hat, wird die Verarbeitung gestoppt. Die Ausgabe sieht in etwa wie folgt aus:
. . .
philo#3: waiting for right fork#3
philo#2: waiting for right fork#2
philo#1: waiting for right fork#1
philo#0: waiting for right fork#0
HeadWaiter: all philosophers are locked for 6 times.
exiting application.
An dieser Stelle wird das Programm gestoppt. Für diesen Durchgang haben Sie jedoch Thread-Daten gesammelt, so dass Sie jetzt die Ursache
für das Stoppen des Programms analysieren können.
Datenerfassung nicht möglich
Vor dem Sammeln von Profilerstellungsdaten muss der Agent Controller aktiviert werden. Falls Sie eine Nachricht empfangen,
dass der Agent Controller nicht verfügbar ist, vergewissern Sie sich, dass der Agent Controller installiert ist.
Starten Sie den Agent Controller manuell und wiederholen Sie den Vorgang. Diesbezügliche Anweisungen finden
Sie im Installationshandbuch. Auf das Installationshandbuch können Sie vom Launchpad aus zugreifen. Sie finden es auch auf
der Produkt-CD unter disk1/install.html.
Nachdem Sie die Daten erfasst haben, können Sie mit Übung 1.3: Thread-Engpass feststellen beginnen.