Ü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:

  1. Wählen Sie in der Menüleiste der Softwareentwicklungsplattform Fenster > Perspektive öffnen > Andere... aus, um das Dialogfenster "Perspektive auswählen" zu öffnen.
  2. Klicken Sie unten links im Dialogfenster auf Alle anzeigen. In dem Markierungsfeld erscheint eine Markierung.
  3. Wählen Sie in der Liste der Perspektiven Profilermittlung und Protokollierung aus und klicken Sie auf OK.
  4. 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.
  5. 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:

  1. 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.
  2. Erstellen Sie wie folgt eine Profilerstellungskonfiguration:
    1. Wählen Sie in der Menüleiste Ausführen > Profil ermitteln... aus, um das Dialogfenster "Profil ermitteln" zu öffnen.
    2. Klicken Sie in der Konfigurationsliste doppelt auf den Eintrag Java-Anwendung. Daraufhin erscheint ein Eintrag Neue_Konfiguration.
    3. Geben Sie im Namensfeld PhilosopherThreads ein.
    4. Falls auf der Hauptregisterseite philosopher noch nicht im Projektfeld angegeben ist, gehen Sie wie folgt vor:
      1. Klicken Sie neben dem Projektfeld auf Durchsuchen. Daraufhin wird das Dialogfenster "Projektauswahl" geöffnet.
      2. Wählen Sie philosopher aus und klicken Sie auf OK.
    5. Klicken Sie neben dem Feld "Klasse main" auf Suchen.
    6. Wählen Sie im Dialogfenster "main-Typ auswählen" MaitreDHote aus und klicken Sie auf OK.
    7. Falls Sie die IBM JVM (Java Virtual Machine) verwenden, gehen Sie wie folgt vor:
      1. Klicken Sie im Dialogfenster "Profil ermitteln" auf das Register "Argumente".
      2. Geben Sie unter VM-Argumente -Xj9 ein, um die richtige JVM-Version anzugeben.
    8. Klicken Sie im Dialogfenster "Profil ermitteln" auf das Register "Profilerstellung".
    9. 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.)
  3. Klicken Sie auf Profil ermitteln. Die Anwendung wird ausgeführt und die Anzeige ändert sich wie folgt:

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.

Nutzungsbedingungen | Feedback
(C) Copyright IBM Corporation 2000, 2005. Alle Rechte vorbehalten.