> IDE will not set/remove breakpoints per worker, only for all workers, > this seems to be what users expect.
Really ? look at the Java breakpoint window, it allows to set a BP for all threads and also for a particular thread if I'm not wrong, why not for Flex as it is now possible ? we don't have the same needs and expetactions than the Java devs ? > I plan to work on this when IntelliJ IDEA 14 EAP starts (early July). > Actually I have no time to work on this earlier as I have very tight > schedule now: a week for urgent tasks, then 2.5 weeks of vacation, then > 1.5 weeks of business trip to Google I/O in San Francisco. Thanks for the info. Frédéric THOMAS > Date: Thu, 29 May 2014 16:20:59 +0400 > From: alexander.doros...@jetbrains.com > To: dev@flex.apache.org > Subject: Re: [FDB] Integration > > Thanks for additional explanations! > IDE will not set/remove breakpoints per worker, only for all workers, > this seems to be what users expect. > Yep, there can be some headache if the same or different breakpoints are > hit in different workers, I hope I'll sort it out at IDE side. > I plan to work on this when IntelliJ IDEA 14 EAP starts (early July). > Actually I have no time to work on this earlier as I have very tight > schedule now: a week for urgent tasks, then 2.5 weeks of vacation, then > 1.5 weeks of business trip to Google I/O in San Francisco. > > Alex > > On 29.05.2014 16:04, Frédéric THOMAS wrote: > > Ok great, just to be sure you not take me wrong and understand the concept, > > please follow this commented FDB session: > > > > Apache fdb (Flash Player Debugger) [build development] > > Copyright 2013 The Apache Software Foundation. All rights reserved. > > (fdb) run > > Waiting for Player to connect > > Player connected; session starting. > > Set breakpoints and then type 'continue' to resume the session. > > (fdb) run > > Session already in progress > > [SWF] MP3Worker.swf - 181 081 bytes after decompression > > (fdb) where > > #0 this = [Object 40199809, class='global'].global$init() at <null>:0 > > (fdb) info workers > > Main Thread 0 - Suspended (Active) > > ****************************************************************** > > I set a BP on a function that will break very often > > ****************************************************************** > > (fdb) break mx/core/DebuggableWorker.as:56 > > Breakpoint 1: file DebuggableWorker.as, line 56 > > (fdb) c > > [WorkerCreate] 1 > > ****************************************************************** > > When an instance of the worker using it is created, the break is propagated > > ****************************************************************** > > Breakpoint 1: file DebuggableWorker.as, line 56 > > Additional ActionScript code has been loaded from a SWF or a frame. > > To see all currently loaded files, type 'info files'. > > Active worker has changed to worker 1 > > > > Set additional breakpoints as desired, and then type 'continue'. > > ****************************************************************** > > As you can see in the result of info break > > ****************************************************************** > > (fdb) info break > > Num Type Disp Enb Address What > > 1 breakpoint keep y 0x00000000 in debugTickler() at > > DebuggableWorker.as:56 (Worker 0 / 1) > > [SWF] MP3Worker.swf - 528 227 bytes after decompression > > Set additional breakpoints as desired, and then type 'continue'. > > ****************************************************************** > > Here, info workers indicate that both workers are suspended: > > worker 1 because it has just been created. > > Worker 0 because a break event has been receive from the player (aka our BP > > has been met). > > ****************************************************************** > > (fdb) info workers > > Main Thread 0 - Suspended > > Worker 1 - Suspended (Active) > > Set additional breakpoints as desired, and then type 'continue'. > > (fdb) c > > ****************************************************************** > > A 'continue' command show us that even 3 break event have been received for > > this worker > > ****************************************************************** > > Active worker has changed to worker 0 > > Breakpoint 1, debugTickler() at DebuggableWorker.as:56 > > 56 var i:int = 0; > > (fdb) c > > Breakpoint 1, debugTickler() at DebuggableWorker.as:56 > > 56 var i:int = 0; > > (fdb) c > > Breakpoint 1, debugTickler() at DebuggableWorker.as:56 > > 56 var i:int = 0; > > (fdb) c > > ****************************************************************** > > And then for worker 1 > > ****************************************************************** > > Active worker has changed to worker 1 > > Breakpoint 1, debugTickler() at DebuggableWorker.as:56 > > 56 var i:int = 0; > > ****************************************************************** > > Now, even if I clear the BP on worker 0 > > ****************************************************************** > > (fdb) clear @0:mx/core/DebuggableWorker.as:56 > > Active worker has changed to worker Main Thread > > Active worker has changed to worker 1 > > (fdb) info break > > Num Type Disp Enb Address What > > 1 breakpoint keep y 0x00000000 in debugTickler() at > > DebuggableWorker.as:56 (Worker 1) > > breakpoint already hit 4 time(s) > > ****************************************************************** > > worker 0 is still suspended, we received 3 break events from worker 1 and 1 > > from worker 0 > > FDB will then stop 1 more time on this BP, I guess you don't want that at > > IDE level > > as the user already removed the BP, you may want to check if the current > > break > > is still set in the IDE, if not, just 'continue' > > ****************************************************************** > > (fdb) info workers > > Main Thread 0 - Suspended > > Worker 1 - Suspended (Active) > > (fdb) c > > Breakpoint 1, debugTickler() at DebuggableWorker.as:56 > > 56 var i:int = 0; > > (fdb) c > > Breakpoint 1, debugTickler() at DebuggableWorker.as:56 > > 56 var i:int = 0; > > (fdb) c > > ****************************************************************** > > here is the extra break > > ****************************************************************** > > Active worker has changed to worker 0 > > Execution halted, debugTickler() at DebuggableWorker.as:56 > > 56 var i:int = 0; > > (fdb) show break > > Stopped in 'MP3Worker.swf' at 0xffffffff (-1) due to Breakpoint > > (fdb) c > > > > Active worker has changed to worker 1 > > Breakpoint 1, debugTickler() at DebuggableWorker.as:56 > > 56 var i:int = 0; > > (fdb) c > > Breakpoint 1, debugTickler() at DebuggableWorker.as:56 > > 56 var i:int = 0; > > (fdb) c > > Breakpoint 1, debugTickler() at DebuggableWorker.as:56 > > 56 var i:int = 0; > > (fdb) delete break 1 > > (fdb) c > > halt > > Do you want to attempt to halt execution? (y or n) y > > Attempting to halt. > > To help out, try nudging the Player (e.g. press a button) > > Execution halted at 0x0000066a (1642) > > (fdb) where > > #0 this = [Object 174826401, class='SetIntervalTimer'].Timer/tick() at > > <null>:0 > > (fdb) info break > > Num Type Disp Enb Address What > > (fdb) info workers > > Main Thread 0 - Running > > Worker 1 - Suspended (Active) > > (fdb) quit > > > > Frédéric THOMAS >