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