From: Janice S. <ja...@us...> - 2002-02-19 23:36:54
|
Hi, 1) While I'm gathering together a list of items within jdp that need work, that list is not complete yet. The commands I know of that are not yet supported on Lintel are: listt with the run or system options; stepbr; stepline (as you observed); steplineover; and cthread; As well, we are aware that some commands that are implemented sometimes don't work as expected (that applies to both Lintel and AIX). When I discover cases I'm adding them to my work list. Also, we can see a need to expand on the friendliness of jdp by adding more functionality such as giving a list of method choices when an overloaded methodname is found and supporting some simple arithmetic with some commands. Have you tried the whereframe command? Perhaps that will help you with your changing stack frame concern. (Sorry, I haven't had a chance to test it out first). Or do you mean change stackframes between threads? I'll correct the documentation about LoadLocalVariableTables. I'll look into why this is not sufficient to get the debugger to know about the variables. Yes, shadow is a term we started using years ago. It just means a local copy where you may or may not have made some private modifications. 2) Classes that are part of the bootImage have already had their class initializers run as part of building the bootImage. So those classes are marked already initialized. At times we need more initialization to happen at the start of running the bootImage, then we put the extra initialization in a "boot( )" method (historical naming convention), and arrange for that boot method to be called from VM.boot( ). 3) If you are getting a segmentation fault followed by a "jid>" prompt, then it sounds more like you are crashing the debugger. If the segmentation fault is followed by a jdp prompt then perhaps this is showing a handled case, but in my experience the exceptions that are more likely to be handled don't indicate segmentation fault. I'm not sure what you mean by distinguishing between handled and unhandled execptions. Do you mean is there a jdp command to ask if the exception has a handler in the user app or JikesRVM? No, I don't think there is such a command. 4) The where and whereframe commands take an optional argument of <from | to> <hexval> While I have not had a chance to try this, it would appear to allow you to look beyond the last 20 frames. If you knew the start of the thread's stack then you could request the where to start from there. I'll add a command to learn about such thread details to the list of possible new functions to be added to jdp. 5) Dave Grove indicated he'll be looking at this Thanks for the input on jdp. Janice ----------------------------------------------------------------------------- Janice C. Shepherd ja...@wa... (or ja...@us...) IBM T.J. Watson Research 1S-B57 Hawthorne Phone: (914)784-7571 tieline: 863-7571 John Leuner <je...@pi...>@www-124.southbury.usf.ibm.com on 02/16/2002 05:33:43 PM Please respond to jik...@ww... Sent by: jik...@ww... To: jik...@ww... cc: Subject: [Jikesrvm-researchers] Using jdp on IA32 I started playing with jdp for the first time yesterday on IA32 Linux. 1) I noticed that the sl command is unimplemented, is there a list somewhere of TODO work on JDP? Also, I don't see a way to change to a different stack frame and examine data there. Whenever I use the p command, it always tells me there are no local variables available. The Debugging Tips section of the User's Guide says this: * Compiling the system with local variables: The default boot image is built without the local variable tables. To get local variables, set this flag to true in your local shadow: VM_Control.LoadLocalVariableTables Then rebuild the boot image. This will increase the boot image size by about 10%. I assume that this "shadow" terminology refers to prior JRVM build systems? There is no VM_Control.java in the RVM.classes directory, but VM_Properties does have a LoadLocalVariableTables field. I have set this to true, but I can't see any difference. I am compiling with BaseBaseSemispace. 2) I was making changes to the VM_CommandLineArgs.java file. I noticed that the static initializer (which should print out the prefix list when DEBUG is true) only runs during the build process. When JikesRVM is invoked the static initializer isn't run. Is this related to the 'tool' mode that I've heard people talking about? Is it legal to run methods in a class without invoking the static initializer first? 3) I have noticed that sometimes I can run something successfully by just invoking JikesRVM, but when I run the same thing in jdp, it will stop with a segmentation fault. I'm guessing that this will be handled by a handler and the program will continue running. Is there a way to distinguish between 'handled' and 'unhandled' signals? 4) I have some situations where the system is recursing and then faulting. jdp only shows me the last 20 frames, but I am actually interested in the top 20 frames, how can I see these? 5) When Jikes encounters a native method call that it can't satisfy, I see the message VM_Runtime.unexpectedNativeMethodCall. How do I determine which method was being called in which class? John Leuner _______________________________________________ Jikesrvm-researchers mailing list Jik...@ww... http://www-124.ibm.com/developerworks/oss/mailman/listinfo/jikesrvm-researchers |