I think current SA/hotspot developers are the best judges. I used to be part of serviceability team and worked on SA among other things in the past. AFAIK, SA suspend/resume was never really implemented or worked properly. If that is still thought to be useful, we may to see if we can improve BugSpot. Or else code could be merged b/w HotSpotAgent and BugSpotAgent.

JSDB is a javascript shell with SA specific stuff exposed as script functions. With jsload/jseval in CLHSDB, we can do away with another tool doing doing script shell and improve CLHSDB as needed. SOQL's functionality is provided by taking heap dump and viewing it offline. My take is that a single integrated command line tool would be better.

Thanks
-Sundar


Staffan Larsen wrote:
On 22 feb 2012, at 11:22, A. Sundararajan wrote:

SA uses stop-the-world to debug "snapshot" of the process. BugSpot was supposed 
to be a SA model where you can pause/resume and keep looking at different snapshots (as 
well as use JDI to look at process state). But, it was never implemented that way. Over 
the years lot of stuff accumulated assuming the snapshot model as well.

So what does BugSpot have that HSDB does not (and the other way around)? Could 
one of them be retired?

And yes, JSDB may not be directly useful - but you can use most of functionality CLHSDB 
using script "load" as Kris mentioned.

So maybe CLHSDB can be improved and JSDB retired?

SOQL: Better option is to retrieve heap dump from core/process using jmap (or 
SA internals) and view it by jhat or VisualVM.

Same thing here?

Thanks for the feedback,
/Staffan

-Sundar

Krystal Mok wrote:
Hi Staffan,

There's at least another frontend, the SA Plugin for Visual VM. I think it only 
uses the BugSpotAgent for attaching/detaching, otherwise it doesn't use stuff 
from BugSpot.
Other tools, e.g. jstack -m, jstack -F, jmap -F, etc., are not exactly SA 
frontends, but use the SA to implement their functionality.

I use CLHSDB a lot when I poke around the internals of HotSpot. It's good for its purpose, except 
that history support is really weird, e.g. pressing up arrow give "^[[A". When I need 
commands not available in CLHSDB yet, I can write a JavaScript file and use "jsload" in 
CLHSDB to extend it with new commands. Example here: [1].

I seldom use JSDB directly, because the command style of CLHSDB works better, if the 
commands cover all the needs during a debugging session. When writing new commands for 
CLHSDB, sometimes I use the "jseval" command to try things out first, before 
actually writing them into a script file. That overlaps with what JSDB does, but of 
course prototyping in JSDB would be much nicer than in CLHSDB.

On the top of my wishlist on CLHSDB, I'd wish for:
1. better input support (something like jline would be great)
2. AMD64 disassembler support (not frontend issue)
3. live stepping/breakpointing support (not frontend issue)

If 2 and 3 is implemented, I might be able to spend more time in CLHSDB, where 
sometimes I have to use a native debugger like gdb. But these aren't frontend 
issue anyway. I'd be grateful for any advise on how to debug a product build 
HotSpot with gdb instead of CLHSDB, where a lot of debugging support functions 
are not available in HotSpot itself and the symbols are inconvenient to access.

On the GUI side, Poonam did a presentation on the SA Plugin in JavaOne 2011. The 
"Future Plans" part sounds interesting. I think this plugin is the most visible 
way to use SA for most end users. It'd be great if it could be open sourced and made more 
extensible, say, embedding a variant of CLHSDB into this plugin.

Regards,
Kris Mok

[1]: https://gist.github.com/1393698 On Wed, Feb 22, 2012 at 4:26 PM, Staffan Larsen <staffan.lar...@oracle.com <mailto:staffan.lar...@oracle.com>> wrote:

   I'm trying to figure out what the different front ends to SA are
   and how they differ. So far I have identified the following:

   HSDB - basic UI
   CLHSDB - command line version of HSDB
   BugSpot - improvement over HSDB ??
   JSDB - JavaScript command line
   SOQL - Simple Object Query Language command line

   Have I missed any?

   What are your experiences with these? Which ones are most used?
   Should we maintain all of them? Can we consolidate them into one?
   Specifically: what is the difference between HSDB and BugSpot?

   I'd be happy for all and any feedback,
   /Staffan




Reply via email to