Here is new version that lets the program print the thread id which the test will pick up and use:
webrev: http://cr.openjdk.java.net/~sla/7145419/webrev.01/ 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 >