pub enum EventKind {
Show 16 variants
VMStart {
thread: ThreadId,
},
VMDeath,
ThreadStart {
thread: ThreadId,
},
ThreadDeath {
thread: ThreadId,
},
ClassPrepare {
thread: ThreadId,
ref_type: ReferenceTypeId,
signature: String,
status: i32,
},
Breakpoint {
thread: ThreadId,
location: Location,
},
Step {
thread: ThreadId,
location: Location,
},
Exception {
thread: ThreadId,
location: Location,
exception: ObjectId,
catch_location: Option<Location>,
},
MethodExit {
thread: ThreadId,
location: Location,
return_value: Option<Value>,
},
FieldAccess {
field: FieldEvent,
},
FieldModification {
field: FieldEvent,
new_value: Value,
},
MonitorContendedEnter {
monitor: MonitorEvent,
},
MonitorContendedEntered {
monitor: MonitorEvent,
},
MonitorWait {
monitor: MonitorEvent,
timeout: i64,
},
MonitorWaited {
monitor: MonitorEvent,
timed_out: bool,
},
Unknown {
kind: u8,
},
}Variants§
VMStart
VMDeath
ThreadStart
ThreadDeath
ClassPrepare
Breakpoint
Step
Exception
MethodExit
A method is returning. location is the return site, so a method with several return
statements says which one was taken.
There is deliberately no MethodEntry: a METHOD_ENTRY request with a ClassMatch fires on
every method of every matching class — the noisiest event in JDWP — and “what calls this?” is
now answered far more cheaply by a traced breakpoint’s caller chain (TRACE-5). A decoded variant
nothing can arm only implies a capability that isn’t there.
Fields
FieldAccess
A watched field was read.
Fields
field: FieldEventFieldModification
A watched field is about to be written. The event fires before the store commits, so the field still holds its old value while the thread is suspended — that is how the old→new pair is reported.
MonitorContendedEnter
A thread has begun blocking on a monitor another thread owns
(MONITOR_CONTENDED_ENTER, 43). The thread is off the pool from here until the matching
MonitorContendedEntered arrives.
Fields
monitor: MonitorEventMonitorContendedEntered
A thread that was blocking has acquired the monitor (MONITOR_CONTENDED_ENTERED, 44).
This event carries no timing of any kind. How long the thread was blocked — the actual
question a contention diagnosis asks — is on neither half of the pair, so it can only be had by
timestamping the ENTER on this side and matching it here. See mcp-server’s monitor pairing and
ADR-0035: the resulting figure is a debugger measurement and every reply that prints one says so.
Fields
monitor: MonitorEventMonitorWait
A thread is about to Object.wait() (MONITOR_WAIT, 45).
Fields
monitor: MonitorEventMonitorWaited
A thread’s Object.wait() has returned (MONITOR_WAITED, 46).
Fields
monitor: MonitorEvent