On 1 nov 2013, at 13:44, Daniel D. Daugherty <daniel.daughe...@oracle.com> wrote:
> On 11/1/13 6:31 AM, Staffan Larsen wrote: >> Here is new version that lets the program print the thread id > > Hey, that's cheating! :-) > > >> which the test will pick up and use: >> >> webrev: http://cr.openjdk.java.net/~sla/7145419/webrev.01/ > > test/com/sun/jdi/JdbMethodExitTest.sh > No comments. > > test/com/sun/jdi/ShellScaffold.sh > line 1048: echo "apa $res" > Debug output? Oops. I'll remove that before pushing. Thanks, /Staffan > > Thumbs up. > > Dan > > >> >> Thanks, >> /Staffan >> >> On 31 okt 2013, at 13:39, Daniel D. Daugherty <daniel.daughe...@oracle.com> >> wrote: >> >>> I stand corrected. Only the thread name is in the prompt. >>> I think I've been away from 'jdb' too long... >>> >>> Filtering the output of this might help: >>> >>> $ jdb Hello >>> Initializing jdb ... >>>> stop in Hello.main >>> Deferring breakpoint Hello.main. >>> It will be set after the class is loaded. >>>> run >>> run Hello >>> Set uncaught java.lang.Throwable >>> Set deferred uncaught java.lang.Throwable >>> VM Started: Set deferred breakpoint Hello.main >>> >>> Breakpoint hit: "thread=main", Hello.main(), line=3 bci=0 >>> 3 System.out.println("Hello World!"); >>> >>> main[1] threads >>> Group system: >>> (java.lang.ref.Reference$ReferenceHandler)0x141 Reference Handler cond. >>> waiting >>> (java.lang.ref.Finalizer$FinalizerThread)0x140 Finalizer cond. >>> waiting >>> (java.lang.Thread)0x13f Signal Dispatcher running >>> Group main: >>> (java.lang.Thread)0x1 main running (at breakpoint) >>> (java.lang.Thread)0x260 Thread-1 running >>> main[1] >>> >>> but is definitely more work. >>> >>> Dan >>> >>> >>> >>> On 10/30/13 8:53 AM, Staffan Larsen wrote: >>>> I think the number in the prompt is the current frame number: >>>> >>>> main[1] where >>>> [1] JdbMethodExitTest.bkpt (JdbMethodExitTest.java:84) >>>> [2] JdbMethodExitTest.main (JdbMethodExitTest.java:118) >>>> main[1] up >>>> main[2] where >>>> [2] JdbMethodExitTest.main (JdbMethodExitTest.java:118) >>>> >>>> >>>> On 30 okt 2013, at 13:26, Staffan Larsen <staffan.lar...@oracle.com> wrote: >>>> >>>>> But that does not seem to work correctly: >>>>> >>>>> Initializing jdb ... >>>>>> stop in JdbMethodExitTest.bkpt() >>>>> Deferring breakpoint JdbMethodExitTest.bkpt(). >>>>> It will be set after the class is loaded. >>>>>> run >>>>> run JdbMethodExitTest >>>>> Set uncaught java.lang.Throwable >>>>> Set deferred uncaught java.lang.Throwable >>>>> VM Started: Set deferred breakpoint JdbMethodExitTest.bkpt() >>>>> >>>>> Breakpoint hit: "thread=main", JdbMethodExitTest.bkpt(), line=84 bci=0 >>>>> 84 int i = 0; //@1 breakpoint >>>>> >>>>> main[1] threads >>>>> Group system: >>>>> (java.lang.ref.Reference$ReferenceHandler)0x17c Reference Handler cond. >>>>> waiting >>>>> (java.lang.ref.Finalizer$FinalizerThread)0x17b Finalizer cond. >>>>> waiting >>>>> (java.lang.Thread)0x17a Signal Dispatcher running >>>>> Group main: >>>>> (java.lang.Thread)0x1 main >>>>> running (at breakpoint) >>>>> main[1] thread 0x17a >>>>> Signal Dispatcher[1] >>>>> >>>>> >>>>> If the thread number was part of the prompt, I would have expected that >>>>> last line to say "Signal Dispatcher[17a]". >>>>> >>>>> /Staffan >>>>> >>>>> >>>>> On 30 okt 2013, at 13:10, Daniel D. Daugherty >>>>> <daniel.daughe...@oracle.com> wrote: >>>>> >>>>>> The current thread number is part of the jdb prompt. >>>>>> So something like this: >>>>>> >>>>>> $ jdb Hello >>>>>> Initializing jdb ... >>>>>>> stop in Hello.main >>>>>> Deferring breakpoint Hello.main. >>>>>> It will be set after the class is loaded. >>>>>>> run >>>>>> run Hello >>>>>> Set uncaught java.lang.Throwable >>>>>> Set deferred uncaught java.lang.Throwable >>>>>> VM Started: Set deferred breakpoint Hello.main >>>>>> >>>>>> Breakpoint hit: "thread=main", Hello.main(), line=3 bci=0 >>>>>> 3 System.out.println("Hello World!"); >>>>>> >>>>>> main[1] >>>>>> >>>>>> where you feed these cmds to jdb: >>>>>> >>>>>> stop in Hello.main >>>>>> run >>>>>> >>>>>> and your script checks for >>>>>> >>>>>> Breakpoint hit: "thread=main" >>>>>> >>>>>> and then pulls the number out of the prompt that follows: >>>>>> >>>>>> main[1] >>>>>> >>>>>> Dan >>>>>> >>>>>> >>>>>> >>>>>> On 10/30/13 7:10 AM, Staffan Larsen wrote: >>>>>>> I tried, that, but couldn't find what the jdb command for getting the >>>>>>> current thread is. Anyone? >>>>>>> >>>>>>> /Staffan >>>>>>> >>>>>>> On 30 okt 2013, at 11:17, Mikael Auno <mikael.a...@oracle.com> wrote: >>>>>>> >>>>>>>> On 2013-10-29 15:41, Staffan Larsen wrote: >>>>>>>>> This test fails if there are background threads that run while the >>>>>>>>> test is running. I've modified the test to use the "trace" commands >>>>>>>>> in jdb with the extra thread parameter. I have assumed that the main >>>>>>>>> thread has thread id 1. "trace" with thread id behaves a little bit >>>>>>>>> different so a couple of extra "cont" were needed. >>>>>>>>> >>>>>>>>> webrev: http://cr.openjdk.java.net/~sla/7145419/webrev.00/ >>>>>>>> Would it be possible to set a breakpoint in main (or some other known >>>>>>>> location) to determine the thread id (as we do in some of the JDI >>>>>>>> tests) to make sure we have the right one before continuing with the >>>>>>>> rest of the test? >>>>>>>> >>>>>>>> Mikael >