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                                         

Reply via email to