On Thu, 8 Aug 2024 20:06:08 GMT, Chris Plummer <cjplum...@openjdk.org> wrote:

>> JVMTI has a somewhat unique event called DataDumpRequest. One way it is 
>> triggered is via the JVMTI.data_dump jcmd, which causes JVMTI to send the 
>> DataDumpRequest event to all agents that have registered for the event 
>> callback. The agent is free to do pretty much what it wants during the 
>> callback, but the normal usage is to dump anything that might be useful for 
>> debugging the agent. In the case of the debug agent, it could dump internal 
>> data like the list of known threads and event handlers. After ranked monitor 
>> support is complete, it can also dump the state of all jvmti raw monitors 
>> that the debug agent uses.
>> 
>> I decided to not enable this feature by default, and not make public the 
>> option to enable it. This should only be used by developers working on the 
>> debug agent, or by users when requested to do so (by debug agent developers) 
>> to help debug a debug agent problem.
>> 
>> Most of the code executed during the data dump was only available for debug 
>> builds, so I've made it available for all builds. Their addition does not 
>> affect product builds except for adding a small footprint.
>> 
>> TBD is directing the output to a file. This is useful for some of the 
>> debugger tests that don't include the debuggee output in the log. This seems 
>> to be the case for most com/sun/jdi tests. I decided not to include it for 
>> this first pass since it is rather disruptive and detracts from the main 
>> changes being made.
>> 
>> testing tbd: run all tier1, tier2, and. tie5 svc tests.
>
> Chris Plummer has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Improved comments.

FYI, this is what the (entire) debuggee output looks like for this test:


Deuggee output:
Listening for transport dt_socket at address: 42509
Debug Agent Data Dump
=== START DUMP ===
suspendAllCount: 0
Dumping runningThreads:
Thread: node = 0x149684000f10, jthread = 0x1497504da382
        name: Notification Thread
        suspendCount: 0
Thread: node = 0x14969c000f10, jthread = 0x1497504da352
        name: Common-Cleaner
        suspendCount: 0
Thread: node = 0x149750583a60, jthread = 0x1497504da332
        name: Attach Listener
        suspendCount: 0
Thread: node = 0x1497505835c0, jthread = 0x1497504da32a
        name: Signal Dispatcher
        suspendCount: 0
Thread: node = 0x149750583120, jthread = 0x1497504da322
        name: Finalizer
        suspendCount: 0
Thread: node = 0x149750582c50, jthread = 0x1497504da31a
        name: Reference Handler
        suspendCount: 0
Thread: node = 0x1497505827b0, jthread = 0x1497504da312
        name: main
        suspendCount: 1

Dumping runningVThreads:

Dumping otherThreads:

Handlers for EI_CLASS_PREPARE(7)
node(0x1496a40034e0) handlerID(4) suspendPolicy(1) permanent(0)
ClassMatch: classPattern(DataDumpTestTarg)
node(0x1496a4002d80) handlerID(2) suspendPolicy(0) permanent(0)

Handlers for EI_CLASS_UNLOAD(8)
node(0x1496a4002de0) handlerID(3) suspendPolicy(0) permanent(0)

Handlers for EI_VM_DEATH(20)
node(0x1496a4004a20) handlerID(0) suspendPolicy(0) permanent(1)
=== END DUMP ===
Debuggee started

-------------

PR Comment: https://git.openjdk.org/jdk/pull/20367#issuecomment-2276641888

Reply via email to