![Page 1: 174 erdogan verteiltes-debugging- · PDF fileJPDA – Java Platform Debugger Architecture](https://reader034.vdocuments.pub/reader034/viewer/2022051721/5a78fd017f8b9a9d218ca38e/html5/thumbnails/1.jpg)
Verteiltes Debugging
Gemeinsames Debuggen in Saros
![Page 2: 174 erdogan verteiltes-debugging- · PDF fileJPDA – Java Platform Debugger Architecture](https://reader034.vdocuments.pub/reader034/viewer/2022051721/5a78fd017f8b9a9d218ca38e/html5/thumbnails/2.jpg)
Motivation
• Saros unterstützt bislang nur das gemeinsame editieren von Quelltext‐> Support auf Compile‐Time Ebene
• Softwaredesign‐Fehler (Anw‐Logik) erst zur Laufzeit ersichtlich ‐> Logging, Debugging
• Debugging nur für Single‐User Modus konzipiert:Debugger erlaubt nur ein ihn steuerndes UI.
• Gewünscht: Multi‐UI, dass jedem Benutzer einen selektiven Einblick auf den Debugger erlaubt
![Page 3: 174 erdogan verteiltes-debugging- · PDF fileJPDA – Java Platform Debugger Architecture](https://reader034.vdocuments.pub/reader034/viewer/2022051721/5a78fd017f8b9a9d218ca38e/html5/thumbnails/3.jpg)
Ziel:Debugger‐Multi‐UI
• Individuelles Abfragen von Debugging‐Strukturen soll Einblick in Programmzustand ermöglichen
• Breakpoints und Watchpoints erstellt und ausgetauscht werden können
• Beobachtung und Steuerung von Threads durch verschiedene Benutzer (abwechselnd oder simultan) erlaubt RunTime‐Brainstorming
• Parallele Abläufe durch Threadzuweisung an verschiedene Benutzer analysierbar auf Sonderfälle, Engpässe, Deadlocks
![Page 4: 174 erdogan verteiltes-debugging- · PDF fileJPDA – Java Platform Debugger Architecture](https://reader034.vdocuments.pub/reader034/viewer/2022051721/5a78fd017f8b9a9d218ca38e/html5/thumbnails/4.jpg)
JPDA –Java Platform Debugger Architecture
http://java.sun.com/j2se/1.5.0/docs/guide/jpda/architecture.html
![Page 5: 174 erdogan verteiltes-debugging- · PDF fileJPDA – Java Platform Debugger Architecture](https://reader034.vdocuments.pub/reader034/viewer/2022051721/5a78fd017f8b9a9d218ca38e/html5/thumbnails/5.jpg)
JPDA
• Drei‐Schichten‐Architektur von Interfaces, zur Definition von Debuggee‐Capabilities auf verschiedenen Abstraktionsniveaus
• Dabei kann man die Schichten JDI,JDWP und JVMTI unterscheiden, welche ähnlich wie C, Assembler und Maschinencode zueinander stehen
• Debugger steuert Debuggee über dessen implementiertes Interface (Capabilities)
Zeichnung.pdf
![Page 6: 174 erdogan verteiltes-debugging- · PDF fileJPDA – Java Platform Debugger Architecture](https://reader034.vdocuments.pub/reader034/viewer/2022051721/5a78fd017f8b9a9d218ca38e/html5/thumbnails/6.jpg)
Debugger Debuggee
Front‐end Back‐end
JVMTI
JDWP
JVMTIJDWP
Front‐end Back‐end
JDI
A
B
C C
D D
VM1
VM1
VM2
Another PC Debuggee JVM PC
VM
JPDA
![Page 7: 174 erdogan verteiltes-debugging- · PDF fileJPDA – Java Platform Debugger Architecture](https://reader034.vdocuments.pub/reader034/viewer/2022051721/5a78fd017f8b9a9d218ca38e/html5/thumbnails/7.jpg)
JPDA
• JVMTI – Bibliotheksschnittstelle (native) implementiert von JVM.
• JDWP – Datenverbindungsprotokoll (native). Es gibt die Rollen Debuggee und Debugger.In der Rolle Debuggee ist entweder ein vermittelnder back‐end (JVMTI) oder direkt die Debuggee VM (selten). Im ersteren Fall wird die Debugger Rolle vom sog. front‐endeingenommen, sonst identisch mit dem Rollennamen.
• JDI – pure JavaInterface; implementierbar vom Besitzer der Debugger Rolle in JDWP.Dient dann als back‐end für rein in Java geschriebene Debugger; Konsolen oder GUI basiert.
• Benutzen von JVMTI und JDWP ‐> Debugger sprachneutral
![Page 8: 174 erdogan verteiltes-debugging- · PDF fileJPDA – Java Platform Debugger Architecture](https://reader034.vdocuments.pub/reader034/viewer/2022051721/5a78fd017f8b9a9d218ca38e/html5/thumbnails/8.jpg)
Requests
Events
JDWP SocketConnection=Socket‐Pair
D
Cor
VM2
Event‐Queue
Comm
and
Pack
ets
ReplyPackets
CommandPackets
Debugger:demux inputby packet type
Debuggee:concurrentlywrites to socket
JPDA: JDWP
asynchron
synchron
![Page 9: 174 erdogan verteiltes-debugging- · PDF fileJPDA – Java Platform Debugger Architecture](https://reader034.vdocuments.pub/reader034/viewer/2022051721/5a78fd017f8b9a9d218ca38e/html5/thumbnails/9.jpg)
Eclipse Debug Model
• Abstraktes Datenmodell eines Debuggeeseiner imperativen Sprache
• Breakpoints als Aggregat von Threads, wenn diese Thread‐Suspend ausgelöst haben
• Eclipse‐Debug‐Perspektive kommuniziert mit diesem abstrakten Datenmodell‐>Generische GUI
• Konkreter Debugger implementiert Interfaces des Datenmodells und erhält dadurch GUI
![Page 10: 174 erdogan verteiltes-debugging- · PDF fileJPDA – Java Platform Debugger Architecture](https://reader034.vdocuments.pub/reader034/viewer/2022051721/5a78fd017f8b9a9d218ca38e/html5/thumbnails/10.jpg)
Eclipse Debug Model
«interface»ILaunch
«interface»IDebugTarget
«interface»IProcess
«interface»IThread
«interface»IStackFrame
«interface»IVariable
«interface»IBreakPoint
«interface»IDebugElement
«interface»IValue
http://www.eclipse.org/eclipse/debug/documents/ec_2008/Debug_Tutorial_Basic_2008.ppt
![Page 11: 174 erdogan verteiltes-debugging- · PDF fileJPDA – Java Platform Debugger Architecture](https://reader034.vdocuments.pub/reader034/viewer/2022051721/5a78fd017f8b9a9d218ca38e/html5/thumbnails/11.jpg)
JPDA Integration in Eclipse
Standard Debug (front‐end) Java Debug(back‐end)
DebugModel
UI relatedextensions and
Adapters
ExtendingStandard UI
(Add, Overwrite)
CoreExtensions Extension
Points(Core+UI)
Extensions of Standard Debug
JDI
F G
UI Events & Actions
Targets: Standard UI
Targets: Java specific UI
Symbol for:Gcompletes F
‐ Client
Debugger ↔Debuggee
![Page 12: 174 erdogan verteiltes-debugging- · PDF fileJPDA – Java Platform Debugger Architecture](https://reader034.vdocuments.pub/reader034/viewer/2022051721/5a78fd017f8b9a9d218ca38e/html5/thumbnails/12.jpg)
Eclipse Debug View
• Pre‐Launch– Breakpoints werden gesetzt und mittels Marker persistent gespeichert ; Debug‐Plugin verwaltet diese mittels BreakPointManager
– ToggleBreakpointsAdapter sorgen für UI EventHandling
• Launch– Gesammelte Breakpoints werden auf dem Debug‐Target (Debuggee) installiert und dabei gleichzeitig als enstprechende EventListener bei diesem registriert
![Page 13: 174 erdogan verteiltes-debugging- · PDF fileJPDA – Java Platform Debugger Architecture](https://reader034.vdocuments.pub/reader034/viewer/2022051721/5a78fd017f8b9a9d218ca38e/html5/thumbnails/13.jpg)
![Page 14: 174 erdogan verteiltes-debugging- · PDF fileJPDA – Java Platform Debugger Architecture](https://reader034.vdocuments.pub/reader034/viewer/2022051721/5a78fd017f8b9a9d218ca38e/html5/thumbnails/14.jpg)
![Page 15: 174 erdogan verteiltes-debugging- · PDF fileJPDA – Java Platform Debugger Architecture](https://reader034.vdocuments.pub/reader034/viewer/2022051721/5a78fd017f8b9a9d218ca38e/html5/thumbnails/15.jpg)
![Page 16: 174 erdogan verteiltes-debugging- · PDF fileJPDA – Java Platform Debugger Architecture](https://reader034.vdocuments.pub/reader034/viewer/2022051721/5a78fd017f8b9a9d218ca38e/html5/thumbnails/16.jpg)
![Page 17: 174 erdogan verteiltes-debugging- · PDF fileJPDA – Java Platform Debugger Architecture](https://reader034.vdocuments.pub/reader034/viewer/2022051721/5a78fd017f8b9a9d218ca38e/html5/thumbnails/17.jpg)
Grundlegende Idee
• Delegiere alle UI Events an zentrales Single‐User Debug‐Datenmodell; Input Multiplexingund Output‐Forwarding (Datenabfrage)
• Repliziere alle DebugEvents der Eventqueue, so daß Sie bei jedem Benutzer einen Update des Datenmodells signalisieren
![Page 18: 174 erdogan verteiltes-debugging- · PDF fileJPDA – Java Platform Debugger Architecture](https://reader034.vdocuments.pub/reader034/viewer/2022051721/5a78fd017f8b9a9d218ca38e/html5/thumbnails/18.jpg)
Idee
• Pre‐Launch– Zentraler BreakPointManager als Verteiler von lokalen BreakPointManagern
• Launch– Zentraler BreakpointManager installiert BreakPoints im Debug‐Target.
![Page 19: 174 erdogan verteiltes-debugging- · PDF fileJPDA – Java Platform Debugger Architecture](https://reader034.vdocuments.pub/reader034/viewer/2022051721/5a78fd017f8b9a9d218ca38e/html5/thumbnails/19.jpg)
Master BreakPointManager
BreakPointManager
BreakPointManager
BreakPointManager
BreakPointManager
![Page 20: 174 erdogan verteiltes-debugging- · PDF fileJPDA – Java Platform Debugger Architecture](https://reader034.vdocuments.pub/reader034/viewer/2022051721/5a78fd017f8b9a9d218ca38e/html5/thumbnails/20.jpg)
Requests
Events
D*
Cor
VM2
Event Queue
Installs BreakPoints
Master BreakPointManag
er
Dispatch EventQueue
![Page 21: 174 erdogan verteiltes-debugging- · PDF fileJPDA – Java Platform Debugger Architecture](https://reader034.vdocuments.pub/reader034/viewer/2022051721/5a78fd017f8b9a9d218ca38e/html5/thumbnails/21.jpg)
Literatur
• A High‐Level and Flexible Framework for Implementing Multi‐User User‐InterfacesPRASUN DEWAN und RAJIV CHOUDHARY1992 Purdue University
• Eclipse Infrastructure, Chapter 3; Eric Clayberg