On Thu, 23 Dec 2021 04:06:58 GMT, Chris Plummer <[email protected]> wrote:
> SA has the ability to fetch the thread's registers via the thread context. It
> would be nice to allow access to the registers from clhsdb. This plays in
> well with the enhancements being done to PointerFinder as part of
> JDK-8247514. Many of the register values will then be automatically displayed
> as symbols, Methods, Threads, stack offsets, nmethods, interpreter codelets,
> etc.
>
> During some recent debugging I did I found it useful to dump a thread's
> registers in this manner. Although in this case I was inlining the code in
> the part of SA where I wanted to see the registers, having it as a clhsdb
> command would not only be useful to user, but also useful when debugging SA
> because it would serve as a code snippet to copy-n-paste where needed.
>
> The syntax is:
>
> threadcontext [-v] { -a | id }
>
> Where -a displays all threads, and "id" is used to display a specific thread.
> This is the same argument syntax as some other commands that let you choose
> all threads or just one thread, such as the "thread" and "where" commands. -v
> just means more verbose output, whereas without it for the most part each
> register printed will just take up one line.
src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/JavaThread.java
line 489:
> 487: for (int r = 0; r < tc.getNumRegisters(); r++) {
> 488: Address regAddr = tc.getRegisterAsAddress(r);
> 489: System.out.format("Register(%s): %s", tc.getRegisterName(r),
> regAddr);
Would you consider just printing name = value, rather than printing the word
Register many times? 8-)
-------------
PR: https://git.openjdk.java.net/jdk/pull/6925