Tasks

Java Stack Trace Erzeugen

Mit dem Task jstack wird ein Stack-Trace von Java Prozessen gemacht welche auf dem System des Benutzers laufen. Dabei kannst du mit einem Regulären Ausdruck steuern, welche Prozesse erfasst werden. Die Resultate werden dabei in ein gewünschtes Verzeichnis geschrieben. Neben dem Stack Trace wird auch eine aktuelle übersicht aller laufenden Prozesse in die Datei geschrieben.

Du kannst für diesen Task mehrere Anwendungen definieren, für welche du individuelle Prozesse erfassen kannst. Zudem kannst du eine Abfrage nach dem Grund des Aufrufs mit individuellen Optionen einblenden. Alle diese Funktionen lassen sich individuell aktivieren oder deaktivieren.

../_images/task-jstack-window.jpg

Die Ausgabedatei mit dem Stack Trace sieht beispielsweise so aus:

Java Stack Trace
==============================================================================
- Executed command: c:\Program Files\Java\jdk-17.0.2\bin\jstack.exe -l -e 1856
- Time: 2022-02-01T11:48:22Z
- Host: example
- User: EDUCATEIT\TestUser
- User Reason Code: no-input-possible
- User Reason Text: Application does not react on input

Process List:
------------------------------------------------------------------------------
┌────┬─────────────────────────────┬────────────────┬──────────────────────────┬────────────────────────────────────────────┬───────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│PID │Process Name                 │Kernel/User CPU │Working Set/Virtual Memory│SID                                         │Path                                                                                                           │
╞════╪═════════════════════════════╪════════════════╪══════════════════════════╪════════════════════════════════════════════╪═══════════════════════════════════════════════════════════════════════════════════════════════════════════════╡
│660 │smss.exe                     │04.125/00.015   │1.03 MB/279 KB            │S-1-5-18                                    │C:\Windows\System32\smss.exe                                                                                   │
├────┼─────────────────────────────┼────────────────┼──────────────────────────┼────────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│756 │csrss.exe                    │00.671/00.156   │4.12 MB/1.84 MB           │S-1-5-18                                    │C:\Windows\System32\csrss.exe                                                                                  │
├────┼─────────────────────────────┼────────────────┼──────────────────────────┼────────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│808 │csrss.exe                    │01.437/00.140   │11.1 MB/2.19 MB           │S-1-5-18                                    │C:\Windows\System32\csrss.exe                                                                                  │
├────┼─────────────────────────────┼────────────────┼──────────────────────────┼────────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
(...)
├────┼─────────────────────────────┼────────────────┼──────────────────────────┼────────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│3968│QuickUserTasks_d.exe         │00.343/00.359   │39.3 MB/8.61 MB           │S-1-5-21-4195922218-160653008-1318508223-500│\\WORKGREEN\QuickUserTasks\QuickUserTasks\bin\x64\QuickUserTasks_d.exe                                         │
└────┴─────────────────────────────┴────────────────┴──────────────────────────┴────────────────────────────────────────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

Program Output:
------------------------------------------------------------------------------
2022-02-01 12:48:22
Full thread dump Java HotSpot(TM) 64-Bit Server VM (17.0.2+8-LTS-86 mixed mode, sharing):

Threads class SMR info:
_java_thread_list=0x00000009f6f863d0, length=12, elements={
0x00000009e98eb010, 0x00000009f5951340, 0x00000009f59545e0, 0x00000009f5966080,
0x00000009f5966c30, 0x00000009f59677e0, 0x00000009f59680a0, 0x00000009f5968e30,
0x00000009f596d320, 0x00000009f5973a60, 0x00000009f6fb4f90, 0x00000009f6fc00d0
}

"main" #1 prio=5 os_prio=0 cpu=859.38ms elapsed=10806.26s allocated=1170K defined_classes=7 tid=0x00000009e98eb010 nid=0x111c waiting on condition  [0x00000009e902f000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
    at java.lang.Thread.sleep(java.base@17.0.2/Native Method)
    at HelloWorld.main(HelloWorld.java:9)

   Locked ownable synchronizers:
    - None
(...)
------------------------------------------------------------------------------
End of output


Features

  • Optimiert für die Bedienung von Anwendern.

  • Erstellt automatisch ein Java Stack-Trace für alle Prozesse eine Anwendung.

  • Die erfassten Prozesse lassen sich flexibel mit einem Regulären Ausdruck auswählen.

  • Die Resultate des Stack-Traces werden in eine Datei geschrieben.

  • Optional wird eine Prozessliste mit allen aktuellen Prozessen in die Datei geschrieben.

  • Optional kann der Anwendung nach dem Grund des Starts befragt werden.

  • Es lassen sich mehrere Anwendungen konfigurieren.

  • Das Resultat wird dem Anwender verständlich mit verschiedenen Farben visualisiert.

  • Optional kann dem Anwender eine Notiz bei Erfolg oder einem Fehler angezeigt werden.

  • Die Notizen können HTML code und Links auf Dokumente oder Webseiten enthalten.

Alternative Startoptionen für mehrere Anwendungen

Konfigurierst du mehrere verschiedene Anwendungen kannst du wählen wie der Benutzer die Anwendung auswählt.

Mehrere Konfigurationen und Knöpfe

Setzt du den Konfigurationswert applicationSelectionEnabled auf No, wird für jede Anwendung eine individuelle Konfiguration erstellt. Dadurch erscheint auf dem Startbildschirm für jede Anwendung ein individueller Knopf.

../_images/jstack-main-multi-button.jpg

Die Texte auf den Startknöpfen kannst du mit dem Konfigurationswert title anpassen.

Anstatt über das Startfenster kannst du auch alternativ für jede Anwendung eine Verknüpfung erstellen, indem du das Tool mit der Option --start-task startest:

QuickUserTasks.exe --start-task=jstack:0
QuickUserTasks.exe --start-task=jstack:1
QuickUserTasks.exe --start-task=jstack:2
...

Ein einzelner Knopf mit vorgeschalteter Auswahl der Anwendung

Setzt du den Konfigurationswert applicationSelectionEnabled auf Yes, hat der Task unabhängig von der Anzahl der konfigurierten Anwendungen nur eine Konfiguration und damit ein einzelner Startknopf:

../_images/jstack-main-one-button.jpg

Startet der Anwender den Task, indem er auf den Knopf klickt, erscheint als erstes eine Auswahl mit den betroffenen Anwendungen:

../_images/jstack-app-selection.jpg

Diese Auswahl erscheint nur, wenn mehrere Anwendungen konfiguriert sind. Genau wie die Auswahl der Gründe nur angezeigt wird, falls diese konfiguriert sind.

Die angezeigten Anwendungsnamen kannst du mit dem Konfigurationswert name anpassen.

Alternativ kannst du das Tool auch mit einer Verknüpfung und der Option --start-task starten:

QuickUserTasks.exe --start-task=jstack
...