You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ft...@apache.org on 2014/04/30 11:58:50 UTC

[01/15] FLEX-34291: Merge the donated FDB with the current one.

Repository: flex-sdk
Updated Branches:
  refs/heads/FDBWorkers dd6ef7e05 -> 9ced6a87f


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_se.txt
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_se.txt b/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_se.txt
index 54e0022..1170013 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_se.txt
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_se.txt
@@ -1,4 +1,4 @@
-
+    
       Licensed to the Apache Software Foundation (ASF) under one or more
       contributor license agreements.  See the NOTICE file distributed with
       this work for additional information regarding copyright ownership.
@@ -14,1581 +14,793 @@
       See the License for the specific language governing permissions and
       limitations under the License.
 
-This file contains the text displayed by the 'help' command in fdb.
-
 
+This file contains the text displayed by the 'help' command in fdb.
 
 It is divided into "topics". For example, when an fdb user types
-
 'help break', the [break] topic below is displayed.
 
-
-
 The first and last lines of each topic should be blank.
-
 They don't get displayed in fdb; they are here only
-
 to make this file more easily readable.
 
-
-
 Help text should be formatted to not wrap
-
 when displayed on an 80-character-wide console.
-
 The following line is 80 characters wide.
 
-
-
 --------------------------------------------------------------------------------
 
-
-
 [?]
 
-
-
 Kommandot är inte definierat. Ange ”help” om du vill se en lista över alla 
-
 fdb-kommandon.
 
-
-
 [break]
 
-
-
 Används för att infoga brytpunkt vid den angivna raden eller funktionen.
-
 Exempel:
-
   break 87
-
     En brytpunkt infogas vid rad 87 i den aktuella filen.
-
   break myapp.mxml:56
-
     En brytpunkt infogas vid rad 56 i myapp.mxml.
-
   break #3:29
-
     En brytpunkt infogas vid rad 29 i fil #3.
-
   break doThis
-
     En brytpunkt infogas vid funktionen doThis() i den aktuella filen.
-
   break myapp.mxml:doThat
-
     En brytpunkt infogas vid funktionen doThis() i den aktuella filen.
-
   break #3:doOther
-
     En brytpunkt infogas vid funktionen doOther() i fil #3.
-
   break
-
    En brytpunkt infogas vid den aktuella körningens adress i aktuell stackram. 
-
    Detta kan vara användbart vid brytning för återgång till stackram.
-
 Ange ”info sources” eller ”info files” om du vill se alla filnamn och filnummer.
-
 Ange ”info functions” om du vill se alla funktionsnamn.
-
 Det går att ange förkortningar av namn och funktionsnamn så länge dessa inte är 
-
 tvetydiga.
-
 Om radnumret anges bryts koden vid inledningen av den raden.
-
 Om funktionen anges bryts koden vid inledningen av den raden.
-
 Information om vidare brytpunktskontroll finns under ”commands” och ”condition”.
 
-
-
 [bt]
 
-
-
 Används för att bakåtspåra genom stacken.
 
-
-
 [catch]
 
-
-
 Används för att stoppa körningen när ett undantag inträffar.  Detta påverkar 
-
 endast catch-undantag, det vill säga undantag som behandlas med catch-block.  
-
 Andra undantag leder alltid till att felsökaren stoppas.
 
-
-
 Du tar bort catch-punkter med kommandot ”delete”.
 
-
-
 Exempel:
-
   catch *
-
     Körningen stoppas när något undantag inträffar.
-
   catch ReferenceError
-
     Körningen stoppas när ett ReferenceError inträffar, oavsett om det är 
-
     catch-fel eller inte.
 
-
-
 [cf]
 
-
-
 Används för att visa eller ändra den aktuella filens namn och nummer.
-
 Exempel:
-
   cf
-
     Den aktuella filens namn och nummer visas.
-
   cf myapp.mxml
-
     Namnet på den aktuella filen ändras till myapp.mxml.
-
   cf #29
-
     Numret på den aktuella filen ändras till #29.
-
 Ange ”info sources” eller ”info files” om du vill se alla filnamn och filnummer.
-
 Det går att ange förkortningar av filnamn så länge dessa inte är tvetydiga.
-
 När du visar en fil med kommandot ”list” blir den filen aktuell.
 
-
-
 [clear]
 
-
-
 Används för att ta bort brytpunkt vid den angivna raden eller funktionen.
-
 Exempel:
-
   clear 87
-
     En brytpunkt vid rad 87 tas bort från den aktuella filen.
-
   clear myapp.mxml:56
-
     En brytpunkt vid rad 56 tas bort från myapp.mxml.
-
   clear #3:29
-
     En brytpunkt vid rad 29 tas bort från fil #3.
-
   clear doThis
-
     En brytpunkt vid funktionen doThis() tas bort från den aktuella filen.
-
   clear myapp.mxml:doThat
-
     En brytpunkt vid funktionen doThis() tas bort från den aktuella filen.
-
   clear #3:doOther
-
     En brytpunkt vid funktionen doOther() tas bort från fil #3.
-
   clear
-
     En brytpunkt tas bort från den aktuella raden i den aktuella filen. 
-
 Ange ”info sources” eller ”info files” om du vill se alla filnamn och filnummer.
-
 Ange ”info functions” om du vill se alla funktionsnamn.
-
 Det går att ange förkortningar av namn och funktionsnamn så länge dessa inte är 
-
 tvetydiga.
-
 Om du anger ett nummer tas alla brytpunkter på den raden bort.
-
 Om en funktion anges, tas alla brytpunkter i början av funktionen bort.
 
-
-
 [continue]
 
-
-
 Används för att fortsätta körningen efter brytpunkt.
-
 Du kan inte ange argument för det här kommandot.
 
-
-
 [condition]
 
 
-
-
-
 Används för att ställa in så att brytpunktsnumret N endast träder i kraft om 
-
 VILLKOR är sant.
-
 Syntaxen är ”condition N VILLKOR” där N står för ett heltal och COND är ett 
-
 uttryck som ska kontrolleras när brytpunkten N nås.
 
-
-
 [commands]
 
-
-
 Används för att ange kommandon som ska köras när en viss brytpunkt nås.
-
 Numret på brytpunkten anges som argument efter "commands".
-
 Om inga argument anges används den brytpunkt som infogades senast.
-
 Kommandona anges med början på nästa rad.
-
 Skriv en rad som innehåller ”end” för att ange slutet på dem.
-
 Ange ”silent” på den första raden om brytpunkten ska vara tyst, vilket innebär 
-
 att inga utdata visas när brytpunkten nås (förutom texten från kommandot). 
-
 Exempel:
-
   (fdb) commands
-
   Ange kommandon (ett på varje rad) som ska utföras när brytpunkt 1 nås.
-
   Avsluta med raden ”end”.
-
   >w
-
   >end
 
-
-
 [delete]
 
-
-
 Används för att ta bort en eller flera brytpunkter.
-
 Exempel:
-
   delete
-
     Alla brytpunkter tas bort.
-
   delete 2 5
-
     Brytpunkterna #2 och #5 tas bort.
-
 Ange ”info breakpoint” om du vill se alla brytpunktsnummer.
 
-
-
 [directory]
 
-
-
 Ändra listan över kataloger som används vid sökning efter källfiler i fdb.
 
-
-
 Exempel:
 
-
-
   directory
-
     Listan återställs till standardinställningarna, det vill säga den katalog 
-
     där källfilen kompilerades till objektskod samt den aktuella 
-
     arbetskatalogen.
 
-
-
   directory C:\MySource        (Windows)
-
   directory /MySource          (Mac)
-
     Den angivna katalogen läggs till i början av listan över kataloger som 
-
     används vid sökning efter källfiler.  När det exempelvis gäller källfilerna 
-
     till klassen mypackage.MyClass söks både C:\MySource\mypackage\MyClass.as 
-
     samt C:\MySource\MyClass.as igenom.
 
-
-
   directory C:\Dir1;C:\Dir2    (Använd semikolon som avgränsare i Windows)
-
   directory /Dir1:/Dir2        (Använd semikolon som avgränsare på Mac-datorer)
-
     Flera kataloger läggs till i början av listan över kataloger som används 
-
     vid sökning efter källfiler.
 
-
-
 Ange ”show directories” om du vill se den aktuella listan.
 
-
-
 [disable]
 
-
-
 Används för att inaktivera en eller flera brytpunkter eller uttryck som visas 
-
 automatiskt.
-
 Exempel:
-
   disable
-
   disable breakpoints
-
     Alla brytpunkter inaktiveras.
-
   disable 2 5
-
   disable breakpoints 2 5
-
     Brytpunkterna #2 och #5 inaktiveras.
-
   disable display
-
     Alla uttryck som visas automatiskt inaktiveras.
-
   disable display 1 3
-
     Uttrycken #1 och #3, som visas automatiskt, inaktiveras.
-
 Ange ”info breakpoint” om du vill se alla brytpunktsnummer.
-
 Ange ”info display” om du vill se alla rader för uttryck som visas automatiskt.
 
-
-
 [disassemble]
 
-
-
 (Gäller endast för felsökning av ActionScrip 2 och inte av ActionScript 3) 
 
-
-
 En angiven del av källkoden disassembleras.
-
 Som standard används den aktuella listraden.
-
 Det finns stöd för samma argument som för list-kommandot
-
 Exempel:
-
   disassemble 87
-
     Raden 87 disassembleras i den aktuella filen.
-
   disassemble 87 102
-
     Raderna 87–102 disassembleras i den aktuella filen.
-
   disassemble doThis
-
       Funktionen doThis() disassembleras i en aktuella filen.
-
 Du kan även kombinera radnummer med fil- och funktionsnamn på följande sätt:
-
    myapp.mxml
-
       Rad 1 i myapp.mxml.
-
    myapp.mxml:doThat
-
       Den första raden i funktionen doThat() i myapp.mxml.
-
    myapp.mxml:56
-
       Rad 56 i myapp.mxml.
-
    #3
-
       Rad 1 i fil #3.
-
    #3:doOther
-
       Raden som funktionen doOther() börjar på i fil #3.
-
    #3:29
-
       Rad 29 i fil #3.
 
-
-
 [display]
 
-
-
 Lägg till ett uttryck i listan över uttryck som visas automatiskt.
-
 Exempel:
-
   display employee.name
-
     Lägg till ”employee.name” i listan över uttryck som visas automatiskt.
-
     Varje gång fdb stoppas visas värdet för employee.name.
-
 Argumentet för det här kommandot liknar argumentet för ”print”.
-
 Ange ”info display” om du vill se alla uttryck som visas automatiskt och 
-
 motsvarande rader.
 
-
-
 [down]
 
-
-
 Används för att välja och visa stackramen som anropas.
-
 Om "info arguments" och "info locals" därefter anges, visas de lokala 
-
 variablerna och argumenten för den valda ramen.
-
 Mer information finns i ”up” och ”frame” 
 
-
-
 [enable]
 
-
-
 Används för att aktivera en eller flera brytpunkter eller uttryck som visas 
-
 automatiskt.
-
 Exempel:
-
   enable
-
   enable breakpoints
-
     Alla brytpunkter aktiveras.
-
   enable 2 5
-
   enable breakpoints 2 5
-
     Brytpunkterna #2 och #5 aktiveras.
-
   enable display
-
     Alla uttryck som visas automatiskt aktiveras.
-
   enable display 1 3
-
     Uttrycken #1 och #3, som visas automatiskt, aktiveras.
-
 Ange ”info breakpoint” om du vill se alla brytpunktsnummer.
-
 Ange ”info display” om du vill se alla rader för uttryck som visas automatiskt.
 
-
-
 [file]
 
-
-
 Används för att ange ett program som ska felsökas utan att detta startas.
-
 Exempel:
-
   file http://www.mysite.com/myapp.mxml
-
     Ange ett MXML-program som ska felsökas.
-
   file myapp.swf
-
     Ange en lokal swf-fil som ska felsökas i den aktuella katalogen. 
-
     I det här fallet måste även filen myapp.swd (som innehåller information om 
-
     felsökningen) finnas i den aktuella katalogen.
-
 Programmet startar inte när du anger kommandot. Om du vill starta programmet 
-
 skriver du "run" utan argument.
-
 Istället för att använda ”file <mål>” och därefter ”run” kan du ange vilket 
-
 program som ska felsökas i form av ett argument till ”run”.
-
   run http://mysite.com/myapp.mxml
-
   run myapp.swf
-
 Du kan också ange vilket program som ska felsökas via ett kommandoradsargument 
-
 när du startar fdb:
-
   fdb http://www.mysite.com/myapp.mxml
-
   fdb myapp.swf
-
 Du behöver varken använda ”file” eller ”run” i det här fallet.
-
 Om du skriver ”run” utan att ange vilket program som ska felsökas väntar fdb på 
-
 att ett program ska anslutas.
 
-
-
 [finish]
 
-
-
 Kör fram tills den aktuella funktionen returneras.
-
 Du kan inte ange argument för det här kommandot.
 
-
-
 [frame]
 
-
-
 Används för att välja och visa en viss stackram.
-
 I det här kommandot kan ramnumret anges som valfritt argument.
-
 Om inget argument anges sker en återgång till den aktuella toppramen (d.v.s. 
-
 ram 0).
-
 Exempel:
-
   frame 4
-
   frame
-
 Om "info arguments" och "info locals" därefter anges, visas de lokala 
-
 variablerna och argumenten för den valda ramen.
-
 Mer information finns i ”up”, ”down” och ”bt” 
 
-
-
 [handle]
 
-
-
 Används för att bestämma hur fdb ska hantera fel Flash Player.
-
 Exempel:
-
   handle recursion_limit stop
-
     När felet recursion_limit inträffas visas ett meddelande i fdb och 
-
     körningen stoppas, på samma sätt som vid en brytpunkt.
-
   handle all print nostop
-
     När ett fel (oavsett typ) inträffar visas ett meddelande i fdb utan att 
-
     körningen stoppas.
-
 Det första argumentet är antingen namnet på felet eller ”all”.
-
 Ytterligare argument anger åtgärder som vidtas när felet inträffar.
-
 Ange ”info handle” om du vill se namnen på alla fel.
-
 Följande åtgärder kan anges: print/noprint samt stop/nostop.
-
 ”print” innebär att ett meddelande visas när felet inträffar.
-
 ”stop” innebär att felsökaren startar på nytt när felet inträffar. Innebär 
-
 ”print”.
 
-
-
 [help]
 
-
-
 Har du inte använt fdb tidigare? Ange ”tutorial” om du vill få grundläggande 
-
 information.
-
 Lista över fdb-kommandon:
-
 bt (bt)             Visa bakåtspårning av alla stackramar
-
 break (b)           Infoga en brytpunkt vid den angivna raden eller funktionen
-
 catch (ca)          Stoppa körningen när ett undantag inträffar
-
 cf (cf)             Visa den aktuella filens namn och nummer
-
 clear (cl)          Ta bort brytpunkt vid den angivna raden eller funktionen
-
 condition (cond)    Lägg till/ta bort ett villkorat uttryck vid en brytpunkt
-
 continue (c)        Fortsätt körningen efter brytpunkten.
-
 commands (com)      Ange kommandon som ska köras när brytpunkten nås.
-
 delete (d)          Ta bort brytpunkter och uttryck som visas automatiskt
-
 directory (dir)     En katalog läggs till i sökvägen för källfiler
-
 disable (disab)     Brytpunkter och uttryck som visas automatiskt inaktiveras
-
 disassemble (disas) Källrader och källfunktioner diassembleras
-
 display (disp)      Lägg till ett uttryck som visas automatiskt
-
 enable (e)          Aktivera brytpunkter och uttryck som visas automatiskt
-
 file (fil)          Ange programmet som ska felsökas
-
 finish (f)          Fortsätt körningen till dess att den aktuella funktionen 
-
                     returneras
-
 handle (han)        Ange hur fel ska behandlas
-
 help (h)            Visa hjälp för fdb-kommandon
-
 home (ho)           Ange platsen för listan till den plats som körningen stoppas 
-
                     på
-
 info (i)            Visa information om programmet som felsöks
-
 kill (k)            Skickar ”kill” till programmet som felsöks
-
 list (l)            Visa angiven funktion eller rad
-
 next (n)            Gå igenom programmet stegvis
-
 print (p)           Visa värdet på variabeln EXP
-
 pwd (pw)            Visa arbetskatalogen
-
 quit (q)            Avsluta fdb
-
 run (r)             Starta det felsökta programmet
-
 set (se)            Ange värdet på en variabel
-
 source (so)         Läs in fdb-kommandon från en fil
-
 step (s)            Stega igenom programmet tills det når en annan källrad
-
 tutorial (t)        Visa en vägledning om hur fdb används
-
 undisplay (u)       Ta bort ett uttryck som visas automatiskt
-
 viewswf (v)         Ange eller ta bort ett filter för hur filerna visas utifrån 
-
                     swf
-
 watch (wa)          Lägg till en bevakningspunkt för en viss variabel
-
 what (wh)           Visa sammanhanget för en viss variabel
-
 where (w)           Fungerar som bt
-
 Ange ”help” följt av namnet på kommandot om du vill ha fullständig information.
 
-
-
 [home]
 
-
-
 Används för att ange platsen för listan till den plats som körningen stoppas på
 
-
-
 [info]
 
-
-
 Detta generiska kommando används för att visa mer information om programmet som 
-
 felsöks.
-
 Lista över underkommandon som används med ”info”:
-
 info arguments (i a)    Argumentvariabler i den aktuella stackramen
-
 info breakpoints (i b)  Status för brytpunkterna som kan definieras av 
-
                         användaren
-
 info display (i d)      Visa en lista över uttryck som visas automatiskt
-
 info files (i f)        Namn på mål och filer som felsöks
-
 info functions (i fu)   Alla funktionsnamn
-
 info handle (i h)       Visar hur ett fel behandlas
-
 info locals (i l)       Lokala variabler i den aktuella stackramen
-
 info scopechain (i sc)  Omfångskedja i den aktuella stackramen
-
 info sources (i so)     Källfiler i programmet
-
 info stack (i s)        Bakåtspårning genom stacken
-
 info swfs (i sw)        Lista över swf-filer i den här sessionen
-
 info targets(i t)       Programmet som felsöks
-
 info variables (i v)    Namn på alla globala och statiska variabler
-
 Ange ”help info” följt av namnet på underkommandot om du vill ha fullständig 
-
 information.
 
-
-
 [info arguments]
 
-
-
 Används för att visa argument i den aktuella stackramen.
 
-
-
 [info breakpoints]
 
-
-
 Används för att visa status för alla brytpunkter och bevakningspunkter.
-
 Type-kolumnen kan antingen indikera:
-
    breakpoint   - normal brytpunkt
-
    watchpoint   - bevakningspunkt
-
 I Disp-kolumnen visas antingen ”keep”, ”del” eller ”dis”, vilket visar vad som 
-
 händer med brytpunkten när den nås. ”dis” innebär att brytpunkten inaktiveras 
-
 och ”del” att den tas bort.  
-
 I kolumnerna ”Address och ”What” visas adressen och fil-/radnumret. 
 
-
-
 [info display]
 
-
-
 Används för att visa en lista över uttryck som visas automatiskt.
 
-
-
 [info files]
 
-
-
 Används för att visa namn och nummer för filer i programmet som felsöks. Detta 
-
 innefattar källfiler, ramverksfiler och filer som skapats automatiskt.
-
 Exempel:
-
   info files
-
     Alla filer visas (alfabetiskt efter kategori)
-
   info files my
-
   info files my*
-
     Alla filer med namn som inleds med ”my” visas alfabetiskt.
-
   info files *.as
-
     Alla filer med namn som slutar på ”.as” visas alfabetiskt.
-
   info files *foo*
-
     Alla filer som innehåller ”foo” i namnet visas alfabetiskt. 
-
 Filer visas i formatet namn#N, där N står för filnumret.
-
 Du kan använda #N följt av en filnamn i många kommandon.
 
-
-
 [info functions]
 
-
-
 Används för att visa funktionsnamnen.
-
 Exempel:
-
   info functions .
-
     Visa alla funktioner i den aktuella filen.
-
   info functions myapp.mxml
-
     Visa alla funktioner i myapp.mxml.
-
   info functions #3
-
     Alla funktioner i filen #3 visas.
-
   info functions
-
     Alla funktioner i alla filer visas.
-
 Ange ”info sources” eller ”info files” om du vill se alla filnamn och filnummer.
-
 Det går att ange förkortningar av filnamn så länge dessa inte är tvetydiga.
 
-
-
 [info handle]
 
-
-
 Används för att visa hur fdb hanterar fel som inträffar i Flash Player.
-
 Exempel:
-
   info handle
-
     Visar hur fdb hanterar alla fel.
-
   info handle recursion_limit
-
     Visar hur fdb hanterar recursion_limit-fel.
 
-
-
 [info locals]
 
-
-
 Används för att visa lokala variabler i den aktuella stackramen.
 
-
-
 [info scopechain]
 
-
-
 Omfångskedjan för den aktuella stackramen visas.  Med omfångskedjan menas 
-
 listan över objekt som genomsöks vid matchning av symbolnamn i Flash Player.
 
-
-
 [info sources]
 
-
-
 Används för att visa namn och nummer för källfilerna till programmet som 
-
 felsöks. Ramverksfiler och filer som skapas automatiskt omfattas inte.
-
 Filer visas i formatet namn#N, där N står för filnumret.
-
 Du kan använda #N följt av en filnamn i många kommandon.
 
-
-
 [info stack]
 
-
-
 Används för att bakåtspåra genom stacken.
 
-
-
 [info swfs]
 
-
-
 Används för att visa swf-filer som är kända för felsökningssessionen.  Mer 
-
 information om hur du kan filtrera listan över filer utifrån swf-namnen finns 
-
 under kommandot ”viewswf”. 
 
-
-
 [info targets]
 
-
-
 Används för att visa URL:en (http: eller file:) för programmet som felsöks.
 
-
-
 [info variables]
 
-
-
 Används för att visa alla globala och statiska variabelnamn och -värden.
 
-
-
 [info ?]
 
-
-
 Info-kommandot är inte definierat. Prova med ”help info”.
 
-
-
 [kill]
 
-
-
 Används för att skicka ”kill” till programmet som felsöks
-
 Du kan inte ange argument för det här kommandot.
 
-
-
 [list]
 
-
-
 Används för att visa kodraden i en källfil.
-
 Exempel:
-
   list
-
     Visar tio ytterligare rader i den aktuella filen (efter eller omkring det 
-
     som tidigare visats i listan).
-
   list -
-
     Visar tio rader före det som tidigare visats i den aktuella filen.
-
   list 87
-
     Visar tio rader omkring rad 87 i den aktuella filen.
-
   list 87 102
-
     Visar raderna 87–102 i den aktuella filen.
-
 Du kan kombinera radnummer med fil- och funktionsnamn på följande sju sätt:
-
   doThis
-
       Första raden i funktionen doThis() i den aktuella filen.
-
    myapp.mxml
-
       Rad 1 i myapp.mxml.
-
    myapp.mxml:doThat
-
       Den första raden i funktionen doThat() i myapp.mxml.
-
    myapp.mxml:56
-
       Rad 56 i myapp.mxml.
-
    #3
-
       Rad 1 i fil #3.
-
    #3:doOther
-
       Raden som funktionen doOther() börjar på i fil #3.
-
    #3:29
-
       Rad 29 i fil #3.
-
 Ange ”info sources” eller ”info files” om du vill se alla filnamn och filnummer.
-
 Ange ”info functions” om du vill se alla funktionsnamn.
-
 Det går att ange förkortningar av namn och funktionsnamn så länge dessa inte är 
-
 tvetydiga.
-
 När du visar en viss fil blir den filen aktuell. (Se kommandot ”cf”.)
 
-
-
 [next]
 
-
-
 Används för att stega igenom programmet, via subrutinsanrop.
-
   next
-
     Stega en gång.
-
   next 3
-
     Stega 3 gånger eller tills programmet stoppas av någon annan anledning.
-
 Gäller (precis som för ”step”) så länge inga subrutinsanrop sker. När de sker 
-
 räknas de som en instruktion.
 
-
-
 [print]
 
-
-
 Används för att visa värdet på en variabel eller ett uttryck.
-
 Exempel:
-
   print i
-
     Värdet på ”i” visas.
-
   print employee.name
-
     Värden på ”employee.name” visas.
-
   print employee
-
     Värdet på objektet ”employee” visas.
-
     Det kan exempelvis leda till att [Object 10378] visas.
-
   print employee.
-
     Värdet på alla egenskaper som tillhör objektet ”employee” visas.
-
   print *employee
-
     Värdet på alla egenskaper som tillhör objektet ”employee” visas.
-
     Prefixoperatorn ”*” är ett prefixalternativ till postfixoperatorn ”.”.
-
   print #10378.
-
     Värdet på alla egenskaper som tillhör objektet #10378 visas.
-
 De variabler i den lexikala miljön i den valda stackramen är tillgängliga, 
-
 liksom de med omfånget global eller med en hel fil som omfång.
 
-
-
 [pwd]
 
-
-
 Den aktuella arbetskatalogen visas,
-
 det vill säga katalogen som fdb startades från. Det går inte att ändra 
-
 arbetskatalogen från fdb. Det går inte att ange argument för ”run” och ”source” 
-
 relativt den här katalogen.
-
 Du kan inte ange argument för det här kommandot.
 
-
-
 [quit]
 
-
-
 Används för att avsluta fdb.
-
 Du kan inte ange argument för det här kommandot.
 
-
-
 [run]
 
-
-
 Används för att påbörja en felsökning.
-
 Exempel:
-
   run http://www.mysite.com/myapp.mxml
-
     Det angivna MXML-programmet körs.
-
   run myapp.swf
-
   run mydir\myapp.swf
-
   run c:\mydir\myapp.swf
-
     Den lokala swf-filen myapp.swf (som kan anges) körs, antingen från den 
-
     aktuella katalogen (se kommandot ”pwd”) eller via en absolut sökväg. Om så 
-
     är fallet måste filen myapp.swd (som innehåller information om 
-
     felsökningen) finnas i samma katalog som myapp.swf.
-
   run
-
     Används för att köra programmet som tidigare angavs via kommandot ”file”.
-
     Om inget program har angetts väntar fdb på att ett program ska anslutas. Om 
-
     så inte sker uppstår timeout.
-
 Program som startas via ”run” körs i en webbläsare eller fristående Flash 
-
 Player.
-
 När programmet har startats körs fdb, som bland annat ger dig möjlighet att 
-
 ange brytpunkter.
 
-
-
 På Mac-datorer finns det endast stöd för ”run” utan argument.  Du måste i så 
-
 fall starta Flash Player manuellt.
 
-
-
 [set]
 
-
-
 Används för att definiera värdet på en variabel eller bekvämlighetsvariabel.
-
 Bekvämlighetsvariabler används endast inom fdb och finns inte i ditt program.
-
 De har prefixet ”$” och kan ha valfritt namn, förutsatt att det inte finns 
-
 någon befintlig variabel med det namnet.  Exempelvis $myVar.  
-
 Bekvämlighetsvariabler används dessutom för att styra andra aspekter av fdb.  
 
-
-
 Följande bekvämlighetsvariabler används inom fdb:
-
 $listsize          – antal källkodsrader som ska visas för ”list”.
-
 $columnwrap        – kolumnrad på vilken utdata börjar om
-
 $infostackshowthis – vid 0 visas inte ”this” i stackens bakåtspårning
-
 $invokegetters     – vid 0 kan inte fdb skicka getter-funktioner
-
 $bpnum             – det senaste brytpunktsnumret som angetts
-
 $displayattributes – vid noll visar ”print var” alla attribut till medlemmar av 
-
                      ”var” (exempelvis private eller static).
 
-
-
 Exempel:
-
   set i = 3
-
     Variabeln ”i” anges som 3.
-
   set employee.name = "Susan"
-
     Variabeln ”employee.name” anges som strängen ”Susan”.
-
   set $myVar = 20
-
     Bekvämlighetsvariabeln ”$myVar” anges som 20.
 
-
-
 [show]
 
-
-
 Detta generiska kommando används för att visa statusinformation om fdb.
-
 Lista över underkommandon till ”show”:
-
 show break (sh b)       Platsen för och anledningen till pausad körning
-
 show directories (sh d) Kataloger som ska genomsökas för källfiler
-
 show files (sh f)       Målfiler och målsökvägar
-
 show functions (sh fu)  Information om funktionens radmappning 
-
 show locations (sh l)   Brytpunkternas platser
-
 show memory (sh m)      Aktuell minnesanvändning
-
 show net (sh n)         Meddelandestatistik för Player 
-
 show properties (sh p)  Egenskapsvärden
-
 show uri (sh u)         Player-URI för den aktuella sessionen 
-
 show variable (sh v)    Hämtning av raw-variabel
-
 Ange ”help show” följt av namnet på underkommandot om du vill ha fullständig 
-
 information.
 
-
-
 [show break]
 
-
-
 Används för att visa förskjutning där programkörningen stannande i swf-filen
 
-
-
 [show directories]
 
-
-
 Används för att visa den aktuella sökvägen som används för källkodsfiler.
 
-
-
 [show files]
 
-
-
 Används för att visa sökväg för och namn på alla målfiler
 
-
-
 [show functions]
 
-
-
 Används för att visa vilken funktion som mappats till vilket radnummer.
-
 Exempel:
-
   show functions .
-
     Mappningsinformation för alla funktioner i den aktuella filen visas.
-
   show functions myapp.mxml
-
     Mappningsinformation för alla funktioner i myapp.mxml visas.
-
   show functions #3
-
     Mappningsinformation för alla funktioner i fil #3 visas.
-
   show functions
-
     Mappningsinformation för alla funktioner i alla filer visas.
-
 Ange ”info sources” eller ”info files” om du vill se alla filnamn och filnummer.
-
 Det går att ange förkortningar av filnamn så länge dessa inte är tvetydiga.
 
-
-
 [show locations]
 
-
-
 Används för att visa alla platser som har angetts för varje brytpunkt.
 
-
-
 [show memory]
 
-
-
 Används för att visa minnesstatistik för Java VM.
 
-
-
 [show net]
 
-
-
 Används för att visa information om meddelanden som har skickats till och 
-
 tagits emot från Flash Player.
 
-
-
 [show properties]
 
-
-
 Används för att visa alla bekvämlighetsvariabler som används i felsökaren. 
 
-
-
 [show uri]
 
-
-
 Används för att visa URI som Flash Player har skickat för den här sessionen.
 
-
-
 [show variable]
 
-
-
 Används för att visa alla medlemmar som tillhör en viss variabel.  Två 
-
 parametrar måste anges: först det numeriska värde som identifierar variabeln 
-
 och därefter variabelns egenskapsnamn.  Bekvämlighetsvariabeln $invokegetters 
-
 används för att bestämma huruvida egenskapen getter ska köras eller inte 
-
 (förutsatt att den finns).
-
 Exempel:
-
     show variable 1 __proto__
 
-
-
 [show ?]
 
-
-
 Show-kommandot är inte definierat. Prova med ”help show”.
 
-
-
 [source]
 
-
-
 Används för att först läsa in och därefter utföra fdb-kommandon från en fil.
-
   source mycommands.txt
-
   source mydir\mycommands.txt
-
   source c:\mydir\mycommands.txt
-
     Filen mycommands.txt läses in och kommandona utförs.
-
     Filen med kommandon kan antingen anges
-
 	från den aktuella katalogen (se kommandot ”pwd”) 
-
 	eller via en absolut sökväg.
-
 Filen .fdbinit läses in på det här sättet när fdb startas.
-
 Det är endast den aktuella katalogen som söks igenom efter .fdbinit. Du måste 
-
 alltså skapa en separat .fdbinit-fil för varje projekt.
 
-
-
 [step]
 
-
-
 Används för att stega igenom programmet tills det når en annan källkodsrad.
-
 Exempel:
-
   step
-
     Stega en gång.
-
   step 3
-
     Stega 3 gånger eller tills programmet stoppas av någon annan anledning.
 
-
-
 [tutorial]
 
-
-
 Används för att visa en vägledning om hur fdb används.
-
 Du kan inte ange argument för det här kommandot.
 
-
-
 [Tutorial]
 
-
-
 Exempel på en typisk fdb-session:
-
 Starta ett program med ”run”.
-
 Visa filnamnen med ”info sources”.
-
 Visa en fil med ”list”.
-
 Ange brytpunkter med ”break”.
-
 Kör programmet tills en brytpunkt nås med ”continue”.
-
 Granska programmets status med ”where”, ”print” och ”info locals”.
-
 Utför enskilda kommandon med ”next”, ”step” och ”finish”.
-
 Återuppta körningen med ”continue”.
-
 Avsluta fdb med ”quit”.
 
-
-
 [undisplay]
 
-
-
 Används för att ta bort ett eller flera uttryck.
-
 Exempel:
-
   undisplay
-
     Ta bort alla uttryck som visas automatiskt.
-
   undisplay 2 7
-
     Används för att ta bort uttrycken #2 och #7 som visas automatiskt.
-
 Ange ”info display” om du vill se alla uttryck som visas automatiskt och 
-
 motsvarande rader.
 
-
-
 [up]
 
-
-
 Används för att välja och visa stackramen som anropas.
-
 Om du därefter anger ”info arguments” och ”info locals” visas
-
 lokala variabler och argument som hör till den valda ramen.
-
 Se ”down” och ”frame”.
 
-
-
 [viewswf]
 
-
-
 Används för att ställa in och rensa filter som bestämmer hur filer ska visas 
-
 (t.ex. ”info files” och ”info sources”) utifrån swf-namnen. 
-
 Om inga parametrar anges visas alla filer.  Om samma fil finns i en eller flera 
-
 swf-filer visas endast den första filinstansen.  Om du vill komma åt andra 
-
 filinstanser anger du filnumret (t.ex. ”list #192”) eller använder kommandot 
-
 med parametern (se nedan) för att visa filer från en viss swf-fil.  Om en 
-
 parameter anges visas endast filerna från en angiven swf-fil i fillistan (via 
-
 kommandot ”info swfs”).  
-
 Filer från andra swf-filer visas inte.  Kommandot påverkar även kommandon som 
-
 tar en fil som parameter (t.ex. ”break”).
-
 Exempel:
-
   viewswf myApp.mxml.swf
-
     Endast filer från myApp.mxml.swf visas.
-
   viewswf 
-
     Alla filer från alla swf-filer visas.
-
  
-
 [watch]
 
-
-
 Används förr att lägga till en bevakningspunkt för en viss variabel. Felsökaren 
-
 stoppar körningen när variabelns värde ändras.
-
 Exempel:
-
   watch foo
 
-
-
 [what]
 
-
-
 Visar sammanhanget vari en variabel matchas. 
 
-
-
 [where]
 
-
-
 Används för att bakåtspåra genom stacken.
 
-
-
 [zzz]
 
-
-
 ((( Keep this unused topic at the end of the file    )))
-
 ((( so that the next-to-last one is parsed properly. )))
-

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_zh_cn.txt
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_zh_cn.txt b/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_zh_cn.txt
index 647f8e5..6eb88dc 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_zh_cn.txt
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_zh_cn.txt
@@ -1,4 +1,4 @@
-
+    
       Licensed to the Apache Software Foundation (ASF) under one or more
       contributor license agreements.  See the NOTICE file distributed with
       this work for additional information regarding copyright ownership.
@@ -14,1487 +14,778 @@
       See the License for the specific language governing permissions and
       limitations under the License.
 
-此文件包含 fdb 中“help”命令所显示的文本。
-
-
-
-它分为多个“主题”。例如,当 fdb 用户键入“help break”时,会显示
-
-下面的 [break] 主题。
-
-
-
-每个主题的第一行和最后一行应该为空白。
 
-在 fdb 中不会显示它们;在此处保留它们仅仅是为了使此文件更易读。
 
+This file contains the text displayed by the 'help' command in fdb.
 
+It is divided into "topics". For example, when an fdb user types
+'help break', the [break] topic below is displayed.
 
-应该将帮助文本的格式设置为在 80 个字符宽的控制台上显示时不换行。
-
-下面的行宽为 80 个字符宽。
+The first and last lines of each topic should be blank.
+They don't get displayed in fdb; they are here only
+to make this file more easily readable.
 
+Help text should be formatted to not wrap
+when displayed on an 80-character-wide console.
+The following line is 80 characters wide.
 
 
 --------------------------------------------------------------------------------
 
-
-
 [?]
 
-
-
 未定义的命令。只需执行“help”即可查看所有 fdb 命令的列表。
 
-
-
 [break]
 
-
-
 在指定行或函数处设置断点。
-
 示例:
-
   break 87
-
     在当前文件的第 87 行处设置断点。
-
   break myapp.mxml:56
-
     在 myapp.mxml 的第 56 行处设置断点。
-
   break #3:29
-
     在文件 #3 的第 29 行处设置断点。
-
   break doThis
-
     在当前文件中的函数 doThis() 处设置断点。
-
   break myapp.mxml:doThat
-
     在文件 myapp.mxml 中的函数 doThat() 处设置断点。
-
   break #3:doOther
-
     在文件 #3 中的函数 doOther() 处设置断点。
-
   break
-
     在当前堆栈帧中的当前执行地址处设置断点。这有助于返回到
-
     堆栈帧时中断。
-
 要查看文件名和编号,请执行“info sources”或“info files”。
-
 要查看函数名称,请执行“info functions”。
-
 可接受缩略文件名和函数名称(如果意义明确)。
-
 如果指定了行号,则在该行的代码开头处中断。
-
 如果指定了函数,则在该函数的代码开头处中断。
-
 有关更多断点控制,请参阅“commands”和“condition”。
 
-
-
 [bt]
 
-
-
 堆栈的向后跟踪。
 
-
-
 [catch]
 
-
-
 引发异常时终止。这仅会影响捕获的异常(即,将由“catch”块处理的异常)。
-
 未捕获的异常始终在调试器中保持终止。
 
-
-
 使用“delete”命令可删除捕获点。
 
-
-
 示例:
-
   catch *
-
     引发任何异常时终止。
-
   catch ReferenceError
-
     任何时候引发 ReferenceError 即会终止,不管是否已捕获。
 
-
-
 [cf]
 
-
-
 显示当前文件的名称和编号,或更改当前文件。
-
 示例:
-
   cf
-
     显示当前文件的名称和编号。
-
   cf myapp.mxml
-
     将当前文件更改为 myapp.mxml。
-
   cf #29
-
     将当前文件更改为文件 #29。
-
 要查看文件名和编号,请执行“info sources”或“info files”。
-
 可接受缩略文件名(如果意义明确)。
-
 使用“list”列出文件同时会使该文件成为当前文件。
 
-
-
 [clear]
 
-
-
 在指定行或函数处清除断点。
-
 示例:
-
   clear 87
-
     在当前文件的第 87 行处清除断点。
-
   clear myapp.mxml:56
-
     在 myapp.mxml 的第 56 行处清除断点。
-
   clear #3:29
-
     在文件 #3 的第 29 行处清除断点。
-
   clear doThis
-
     在当前文件中的函数 doThis() 处清除断点。
-
   clear myapp.mxml:doThat
-
     在文件 myapp.mxml 中的函数 doThat() 处清除断点。
-
   clear #3:doOther
-
     在文件 #3 中的函数 doOther() 处清除断点。
-
   clear
-
     清除当前文件中当前行的断点。
-
 要查看文件名和编号,请执行“info sources”或“info files”。
-
 要查看函数名称,请执行“info functions”。
-
 可接受缩略文件名和函数名称(如果意义明确)。
-
 如果指定了行号,则会清除该行中的所有断点。
-
 如果指定了函数,则会清除函数开头处的断点。
 
-
-
 [continue]
 
-
-
 在断点处停止后继续执行。
-
 此命令不使用任何参数。
 
-
-
 [condition]
 
 
-
-
-
 仅当 COND 为 true 时,指定要中断的断点编号 N。
-
 用法为“condition N COND”,其中 N 是一个整数,COND 是达到断点 N 时
-
 的求值表达式。
 
-
-
 [commands]
 
-
-
 设置遇到断点时要执行的命令。
-
 提供断点编号作为“commands”之后的参数。
-
 不使用任何参数,目标断点是设置的最后一个断点。
-
 命令本身接着在下一行上启动。
-
 在命令行中键入“end”表示结束该命令。
-
 提供“silent”作为第一行以使断点为静默;然后遇到它时不会显示任何输出
-
 (除了命令输出的内容之外)。
-
 示例:
-
   (fdb) 命令
-
   遇到断点 1 时键入命令,一条命令占一行。
-
   以只有“end”的行作为结束。
-
   >w
-
   >end
 
 
+[connect]
 
-[delete]
+连接到侦听某个端口的调试播放器。
+当前侦听调试连接的唯一播放器
+是手机专用的,其他的始终保持连接。
 
+例如:
+  connect
+连接到侦听端口 7936 的调试播放器。
+  connect 7938
+连接到侦听端口 7938 的调试播放器。
+    
+[worker]
 
+将活动的 Worker 设置为随后的调试器 
+命令发送到的目标。使用 info workers 查询
+Worker 列表。主线程 ID 为 0。
 
-删除一个或多个断点。
+例如:
+  worker 3
+将活动的 Worker 设置为 ID 为 3 的 Worker        
 
-示例:
+[delete]
 
+删除一个或多个断点。
+示例:
   delete
-
     删除所有断点。
-
   delete 2 5
-
     删除断点 #2 和 #5。
-
 要查看断点编号,请执行“info breakpoints”。
 
-
-
 [directory]
 
-
-
 修改 fdb 搜索源文件的目录列表。
 
-
-
 示例:
 
-
-
   directory
-
     将列表恢复为默认值,该默认值为将源文件编译成对象代码的目录,
-
     后面跟着当前工作目录。
 
-
-
   directory C:\MySource        (Windows)
-
   directory /MySource          (Mac)
-
     将指定目录添加到目录列表的开头,将在该列表中搜索源。例如,为
-
     类 mypackage.MyClass 查找源时,调试器会查找
-
     C:\MySource\mypackage\MyClass.as 和
-
     C:\MySource\MyClass.as。
 
-
-
   directory C:\Dir1;C:\Dir2    (Windows -- 将 ';' 用作分隔符)
-
   directory /Dir1:/Dir2        (Mac -- 将 ':' 用作分隔符)
-
     将若干个目录添加到目录列表的开头,将在该列表中搜索源。
 
-
-
 要查看当前列表,请执行“show directories”。
 
-
-
 [disable]
 
-
-
 禁用一个或多个断点或自动显示表达式。
-
 示例:
-
   disable
-
   disable breakpoints
-
     禁用所有断点。
-
   disable 2 5
-
   disable breakpoints 2 5
-
     禁用断点 #2 和 #5。
-
   disable display
-
     禁用所有自动显示表达式。
-
   disable display 1 3
-
     禁用自动显示表达式 #1 和 #3。
-
 要查看断点编号,请执行“info breakpoints”。
-
 要查看自动显示表达式编号,请执行“info display”。
 
-
-
 [disassemble]
 
-
-
 (仅 ActionScript 2;调试 ActionScript 3 时不支持)
 
-
-
 反汇编源代码的指定部分。
-
 默认为当前列表行。
-
 支持的参数与使用“list”命令支持的参数相同。示例:
-
   disassemble 87
-
     反汇编当前文件中的第 87 行。
-
   disassemble 87 102
-
     反汇编当前文件中的第 87 行到第 102 行。
-
   disassemble doThis
-
       反汇编当前文件中的函数 doThis()。
-
 除如上使用简单行号之外,还可以使用另外方式指定行:
-
    myapp.mxml
-
       myapp.mxml 中的第 1 行。
-
    myapp.mxml:doThat
-
       myapp.mxml 中的函数 doThat() 的第一行。
-
    myapp.mxml:56
-
       myapp.mxml 中的第 56 行。
-
    #3
-
       文件 #3 中的第 1 行。
-
    #3:doOther
-
       在文件 #3 中函数 doOther() 开头处的行。
-
    #3:29
-
       文件 #3 中的第 29 行。
 
-
-
 [display]
 
-
-
 将表达式添加到自动显示表达式列表。
-
 示例:
-
   display employee.name
-
     将“employee.name”添加到自动显示表达式列表。
-
     每次 fdb 停止时,将显示 employee.name 的值。
-
 此命令的参数与“print”的参数类似。
-
 要查看自动显示表达式及其编号的列表,请执行“info display”。
 
-
-
 [down]
 
-
-
 选中并输出由此命令调用的堆栈帧。
-
 后续的“info arguments”和“info locals”命令将显示选定帧的局部变量和参数。
-
 请参阅“up”和“frame”。
 
-
-
 [enable]
 
-
-
 启用一个或多个断点或自动显示表达式。
-
 示例:
-
   enable
-
   enable breakpoints
-
     启用所有断点。
-
   enable 2 5
-
   enable breakpoints 2 5
-
     启用断点 #2 和 #5。
-
   enable display
-
     启用所有自动显示表达式。
-
   enable display 1 3
-
     启用自动显示表达式 #1 和 #3。
-
 要查看断点编号,请执行“info breakpoints”。
-
 要查看自动显示表达式编号,请执行“info display”。
 
-
-
 [file]
 
-
-
 指定要调试的应用程序,而不启动它。
-
 示例:
-
   file http://www.mysite.com/myapp.mxml
-
     指定要调试的 MXML 应用程序。
-
   file myapp.swf
-
     指定当前目录中要调试的本地 SWF 文件。
-
     这种情况下,当前目录中必须也有 myapp.swd(包含调试信息的文件)。
-
 此命令实际上不会引起应用程序启动;使用不带参数的“run”命令开始调试
-
 应用程序。
-
 不需要先使用“file <target>”然后使用“run”,只需将要调试的应用程序
-
 指定为“run”的参数即可:
-
   run http://mysite.com/myapp.mxml
-
   run myapp.swf
-
 也可以指定,在启动 fdb 时以命令行参数的方式调试应用程序:
-
   fdb http://www.mysite.com/myapp.mxml
-
   fdb myapp.swf
-
 这种情况下不需要使用“file”或“run”。
-
 如果使用“run”而未指定要调试的应用程序,则 fdb 将等待任何应用程序
-
 以连接到它。
 
-
-
-[finish]
-
-
+[finish]
 
 执行,直到当前函数返回为止。
-
 此命令不使用任何参数。
 
-
-
 [frame]
 
-
-
 选中并输出特定堆栈帧。
-
 此命令使用一个可选参数(一个帧编号)。
-
 如果未提供参数,则默认为返回到当前顶部帧(即,帧 0)。
-
 示例:
-
   frame 4
-
   frame
-
 后续的“info arguments”和“info locals”命令将显示选定帧的局部变量和参数。
-
 请参阅“up”、“down”和“bt”。
 
-
-
 [handle]
 
-
-
 指定 fdb 应如何处理 Flash Player 中的故障。
-
 示例:
-
   handle recursion_limit stop
-
     发生 recursion_limit 故障时,会在 fdb 中显示消息并停止(就好像在断点处)。
-
   handle all print nostop
-
     发生任何种类的故障时,都会在 fdb 中显示消息但不停止。
-
 第一个参数是故障名称或“all”。
-
 其它参数是应用到该故障的操作。
-
 要查看故障名称,请执行“info handle”。
-
 操作有 print/noprint 和 stop/nostop。
-
 “print”意味着发生此故障时输出一条消息。
-
 “stop”意味着发生此故障时重新进入调试器。包含“print”。
 
-
-
 [help]
 
-
-
 您是第一次使用 fdb 吗? 请执行“tutorial”获取基本信息。
-
 fdb 命令的列表:
-
 bt (bt)             输出所有堆栈帧的向后跟踪
-
 break (b)           在指定行或函数处设置断点
-
 catch (ca)          引发异常时终止
-
 cf (cf)             显示当前文件的名称和编号
-
 clear (cl)          在指定行或函数处清除断点
-
 condition (cond)    将条件表达式应用到断点或删除断点的条件表达式
-
+connect (con)       连接到 debug player
 continue (c)        在断点处停止后继续执行
-
 commands (com)      设置遇到断点时要执行的命令
-
 delete (d)          删除断点或自动显示表达式
-
 directory (dir)     将目录添加到源文件的搜索路径
-
 disable (disab)     禁用断点或自动显示表达式
-
 disassemble (disas) 反汇编源行或函数
-
 display (disp)      添加自动显示表达式
-
 enable (e)          启用断点或自动显示表达式
-
 file (fil)          指定要调试的应用程序
-
 finish (f)          执行,直到当前函数返回为止
-
 handle (han)        指定如何处理故障
-
 help (h)            显示关于 fdb 命令的帮助
-
 home (ho)           设置终止执行的列表位置
-
 info (i)            显示关于正在调试的程序的信息
-
 kill (k)            停止正在调试的程序的执行
-
 list (l)            列出指定函数或行
-
 next (n)            单步执行程序
-
 print (p)           输出变量表达式的值
-
 pwd (pw)            输出工作目录
-
 quit (q)            退出 fdb
-
 run (r)             启动调试的程序
-
 set (se)            设置变量的值
-
 source (so)         从文件读取 fdb 命令
-
 step (s)            单步执行程序,直到遇到其它源行为止
-
 tutorial (t)        显示关于如何使用 fdb 的教程
-
 undisplay (u)       删除自动显示表达式
-
 viewswf (v)         为基于 swf 的文件列表设置或清除过滤器
-
 watch (wa)          在给定变量上添加观察点
-
 what (wh)           显示变量的上下文
-
 where (w)           与 bt 相同
-
+worker (wo)         设置活动的 Worker
 键入“help”并后跟命令名可查看完整文档。
 
-
-
 [home]
 
-
-
 设置终止执行的列表位置。
 
-
-
 [info]
 
-
-
 用于显示关于正在调试的程序事项的通用命令。
-
 “info”子命令的列表:
-
 info arguments (i a)    当前堆栈帧的参数变量
-
 info breakpoints (i b)  用户可设置的断点的状态
-
 info display (i d)      显示自动显示表达式列表
-
 info files (i f)        正在调试的目标和文件的名称
-
 info functions (i fu)   所有函数名称
-
 info handle (i h)       如何处理故障
-
 info locals (i l)       当前堆栈帧的局部变量
-
 info scopechain (i sc)  当前堆栈帧的作用域链
-
 info sources (i so)     程序中的源文件
-
 info stack (i s)        堆栈的向后跟踪
-
 info swfs (i sw)        此会话中的 swf 列表
-
 info targets(i t)       正在调试的应用程序
-
 info variables (i v)    所有全局和静态变量名称
-
+info workers (i w)      列出所有 Worker
 键入“help info”并后跟“info”子命令名可查看完整文档。
 
-
-
 [info arguments]
 
-
-
 显示当前堆栈帧的参数。
 
-
-
 [info breakpoints]
 
-
-
 显示所有断点和观察点的状态。
-
 Type 列指示以下各项之一:
-
    breakpoint   - 正常断点
-
    watchpoint   - 观察点
-
 Disp 列包含“keep”、“del”或“dis”之一以指示遇到它之后断点的处置。
-
 “dis”意味着将禁用断点,而“del”意味着将删除断点。
-
 “Address”列和“What”列分别指示地址和文件/行号。
 
-
-
 [info display]
 
-
-
 显示自动显示表达式及其编号的列表。
 
-
-
 [info files]
 
-
-
 显示正在调试的应用程序的文件名称和编号,包括源文件、framework 文件
-
 和自动生成的文件。
-
 示例:
-
   info files
-
     按类别以字母顺序列出所有文件
-
   info files my
-
   info files my*
-
     按字母顺序列出名称以“my”开头的所有文件。
-
   info files *.as
-
     按字母顺序列出名称以“.as”结尾的所有文件。
-
   info files *foo*
-
     按字母顺序列出名称包含“foo”的所有文件。
-
 会按 name#N 格式显示文件,其中 N 是文件编号。
-
 在许多命令中可以使用 #N 代替文件名。
 
-
-
 [info functions]
 
-
-
 显示函数名称。
-
 示例:
-
   info functions .
-
     显示当前文件中的所有函数。
-
   info functions myapp.mxml
-
     显示 myapp.mxml 中的所有函数。
-
   info functions #3
-
     显示文件 #3 中的所有函数。
-
   info functions
-
     显示所有文件中的所有函数。
-
 要查看文件名和编号,请执行“info sources”或“info files”。
-
 可接受缩略文件名(如果意义明确)。
 
-
-
 [info handle]
 
-
-
 显示在 Flash Player 中发生故障时 fdb 执行的操作。
-
 示例:
-
   info handle
-
     显示 fdb 如何处理所有故障。
-
   info handle recursion_limit
-
     显示 fdb 如何处理 recursion_limit 故障。
 
-
-
 [info locals]
 
-
-
 显示当前堆栈帧的局部变量。
 
-
-
 [info scopechain]
 
-
-
 显示当前堆栈帧的作用域链。作用域链是当 Flash Player 尝试解析符号
-
 名称时搜索的对象列表。
 
-
-
 [info sources]
 
-
-
 显示正在调试的应用程序的源文件的名称和编号。不包括 Framework 文件和
-
 自动生成的文件。
-
 会按 name#N 格式显示文件,其中 N 是文件编号。
-
 在许多命令中可以使用 #N 代替文件名。
 
-
-
 [info stack]
 
-
-
 堆栈的向后跟踪。
 
-
-
 [info swfs]
 
-
-
 显示对于调试会话为已知的 swf。有关如何基于 swf 名称过滤文件列表的
-
 详细信息,请参阅命令“viewswf”。
 
-
-
 [info targets]
 
-
-
 显示正在调试的应用程序的 URL(http: 或 file:)。
 
-
-
 [info variables]
 
-
-
 显示所有全局变量名称和值以及所有静态变量名称和值。
 
+[info workers]
 
-
+显示已经启动的所有 Worker。
 [info ?]
 
-
-
 未定义的“info”命令。请尝试“help info”。
 
-
-
 [kill]
 
-
-
 停止正在调试的程序的执行。
-
 此命令不使用任何参数。
 
-
-
 [list]
 
-
-
 列出源文件中的代码行。
-
 示例:
-
   list
-
     再列出当前文件中在先前列表之后或附近的 10 行。
-
   list -
-
     列出当前文件中在先前列表之前的 10 行。
-
   list 87
-
     列出当前文件中在第 87 行附近的 10 行。
-
   list 87 102
-
     列出当前文件中的第 87 行到第 102 行。
-
 除如上使用简单行号之外,还可以使用另外七种方式指定行:
-
   doThis
-
       当前文件中函数 doThis() 的第一行。
-
    myapp.mxml
-
       myapp.mxml 中的第 1 行。
-
    myapp.mxml:doThat
-
       myapp.mxml 中的函数 doThat() 的第一行。
-
    myapp.mxml:56
-
       myapp.mxml 中的第 56 行。
-
    #3
-
       文件 #3 中的第 1 行。
-
    #3:doOther
-
       在文件 #3 中函数 doOther() 开头处的行。
-
    #3:29
-
       文件 #3 中的第 29 行。
-
 要查看文件名和编号,请执行“info sources”或“info files”。
-
 要查看函数名称,请执行“info functions”。
-
 可接受缩略文件名和函数名称(如果意义明确)。
-
 列出文件会使该文件成为当前文件。(请参阅“cf”命令。)
 
-
-
 [next]
 
-
-
 单步执行程序,通过子例程调用继续。
-
   next
-
     单步执行一次。
-
   next 3
-
     单步执行 3 次,或者直到程序由于其它原因而停止为止。
-
 只要不发生子例程调用,就像“step”命令一样;当发生子例程调用时,
-
 会将该调用视为一个指令。
 
-
-
 [print]
 
-
-
 输出变量或表达式的值。
-
 示例:
-
   print i
-
     输出“i”的值。
-
   print employee.name
-
     输出“employee.name”的值。
-
   print employee
-
     输出“employee”对象的值。
-
     这可能只会显示类似 [对象 10378] 的内容。
-
   print employee.
-
     输出“employee”对象的所有属性的值。
-
   print *employee
-
     输出“employee”对象的所有属性的值。
-
     前缀 * 运算符是后缀 . 运算符的前缀替代项。
-
   print #10378.
-
     输出对象 #10378 的所有属性的值。
-
 可访问变量是选定堆栈帧的词法环境的那些变量,加上作用域为全局或
-
 整个文件的所有变量。
 
-
-
 [pwd]
 
-
-
 输出当前工作目录。
-
 这是启动 fdb 的目录;无法在 fdb 内更改它。可以相对于此目录指定“run”和
-
 “source”的参数。
-
 此命令不使用任何参数。
 
-
-
 [quit]
 
-
-
 退出 fdb。
-
 此命令不使用任何参数。
 
-
-
 [run]
 
-
-
 启动调试会话。
-
 示例:
-
   run http://www.mysite.com/myapp.mxml
-
     运行指定的 MXML 应用程序。
-
   run myapp.swf
-
   run mydir\myapp.swf
-
   run c:\mydir\myapp.swf
-
     运行本地 SWF 文件 myapp.swf,可以相对于当前目录(请参阅“pwd”命令)
-
     或通过使用绝对路径指定该文件。这些情况下,myapp.swd(包含调试
-
     信息的文件)也必须与	myapp.swf 位于同一目录中。
-
   run
-
     运行先前由“file”命令指定的应用程序。
-
     如果未指定任何应用程序,则 fdb 将等待一个应用程序以连接到它,
-
     且在等不到时将超时。
-
 “run”将在浏览器中或独立 Flash Player 中启动应用程序。
-
 只要应用程序一启动,它将打断 fdb 以便您设置断点等等。
 
-
-
 在 Macintosh 上,该命令唯一支持的形式是不使用任何参数的“run”。
-
 接着必须手动启动 Flash player。
 
-
-
 [set]
 
-
-
 设置变量或快捷变量的值。
-
 快捷变量是完全位于 fdb 内的变量;它们并非您的程序的组成部分。
-
 快捷变量的前缀为“$”,快捷变量可以是不与任何现有变量冲突的任何名称。
-
 例如,$myVar。
-
 快捷变量还可用于控制 fdb 的各个方面。
 
-
-
 以下快捷变量供 fdb 使用。
-
 $listsize          - 对于“list”要显示的源行的数量
-
 $columnwrap        - 在其上输出将换行的列编号
-
 $infostackshowthis - 若为 0,则在堆栈向后跟踪中不显示“this”
-
 $invokegetters     - 若为 0,则禁止 fdb 启动 getter 函数
-
 $bpnum             - 最后一个定义的断点编号
-
 $displayattributes - 若为 1,则“print var.”会显示“var”的成员的所有属性(例如,
-
                      private、static)
 
-
-
 示例:
-
   set i = 3
-
     将变量“i”设置为数字 3。
-
   set employee.name = "Susan"
-
     将变量“employee.name”设置为字符串 "Susan"。
-
   set $myVar = 20
-
     将快捷变量“$myVar”设置为数字 20。
 
-
-
 [show]
 
-
-
 用于显示关于 fdb 的状态的事项的通用命令。
-
 “show”子命令的列表:
-
 show break (sh b)       已暂停执行的位置和原因
-
 show directories (sh d) 用于搜索源文件的目录
-
 show files (sh f)       目标文件和路径
-
 show functions (sh fu)  函数行映射信息
-
 show locations (sh l)   断点位置
-
 show memory (sh m)      当前内存使用情况
-
 show net (sh n)         Player 消息统计数据
-
 show properties (sh p)  属性值
-
 show uri (sh u)         此会话的 Player 的 URI
-
 show variable (sh v)    原始变量检索
-
 键入“help show”并后跟“show”子命令名可查看完整文档。
 
-
-
 [show break]
 
-
-
 显示程序终止所在的 SWF 内的偏移。
 
-
-
 [show directories]
 
-
-
 显示用于查找源文件的当前搜索目录。
 
-
-
 [show files]
 
-
-
 显示所有目标文件的路径和文件名。
 
-
-
 [show functions]
 
-
-
 显示函数到行号映射信息。
-
 示例:
-
   show functions .
-
     显示当前文件中所有函数的映射信息。
-
   show functions myapp.mxml
-
     显示 myapp.mxml 中所有函数的映射信息。
-
   show functions #3
-
     显示文件 #3 中所有函数的映射信息。
-
   show functions
-
     显示所有文件中所有函数的映射信息。
-
 要查看文件名和编号,请执行“info sources”或“info files”。
-
 可接受缩略文件名(如果意义明确)。
 
-
-
 [show locations]
 
-
-
 显示为每个断点设置的位置列表。
 
-
-
 [show memory]
 
-
-
 显示 Java VM 内存统计数据。
 
-
-
 [show net]
 
-
-
 显示关于已发送到 Flash Player 和已从 Flash Player 接收到的消息的信息。
 
-
-
 [show properties]
 
-
-
 显示在调试器内使用的快捷变量的列表。
 
-
-
 [show uri]
 
-
-
 显示 Player 已为此会话发送的 URI。
 
-
-
 [show variable]
 
-
-
 显示变量的成员的值。需要两个参数;第一个是数字变量标识符,第二个是
-
 变量上属性的名称。快捷变量 $invokegetters 用于确定是否将启动
-
 属性 getter(假定它存在)。
-
 示例:
-
     show variable 1 __proto__
 
-
-
 [show ?]
 
-
-
 未定义“的show”命令。请尝试“help show”。
 
-
-
 [source]
 
-
-
 从文件读取 fdb }令并g行它们。
-
   source mycommands.txt
-
   source mydir\mycommands.txt
-
   source c:\mydir\mycommands.txt
-
     读取 mycommands.txt 并执行其中的 fdb 命令。
-
     可以相对于当前目录(请参阅“pwd”命令)或通过使用绝对路径指定
-
     包含命令的文件。
-
 启动 fdb 时,会使用此方式自动读取文件 .fdbinit。
-
 仅在当前目录中搜索 .fdbinit。这意味着您可以为不同的项目设置
-
 多个 .fdbinit 文件。
 
-
-
 [step]
 
-
-
 单步执行程序,直到遇到其它源行为止。
-
 示例:
-
   step
-
     单步执行一次。
-
   step 3
-
     单步执行 3 次,或者直到程序由于其它原因而停止为止。
 
-
-
 [tutorial]
 
-
-
 显示关于如何使用 fdb 的教程。
-
 此命令不使用任何参数。
 
-
-
 [Tutorial]
 
-
-
 典型的 fdb 会话:
-
 使用“run”启动应用程序。
-
 使用“info sources”查看文件名。
-
 使用“list”列出文件。
-
 使用“break”设置断点。
-
 使用“continue”执行程序,直到遇到断点为止。
-
 使用“where”、“print”、“info locals”检查程序的状态。
-
 使用“next”、“step”和“finish”执行各个语句。
-
 使用“continue”继续执行。
-
 使用“quit”退出 fdb。
 
-
-
 [undisplay]
 
-
-
 删除一个或多个自动显示表达式。
-
 示例:
-
   undisplay
-
     删除所有自动显示表达式。
-
   undisplay 2 7
-
     删除自动显示表达式 #2 和 #7。
-
 要查看自动显示表达式及其编号的列表,请执行“info display”。
 
-
-
 [up]
 
-
-
 选中并输出调用此命令的堆栈帧。
-
 后续的“info arguments”和“info locals”命令将显示选定帧的局部变量和参数。
-
 请参阅“down”和“frame”。
 
-
-
 [viewswf]
 
-
-
 为基于 swf 名称的文件列表(即,“info files”和“info sources”)设置或清除
-
 过滤器。不使用任何参数,将显示所有文件。如果在一个或多个 swf 中存在
-
 同一文件,则该列表将仅显示该文件的第一个实例。要访问该文件的其它实例,
-
 请使用文件的编号(例如,“list #192”),或将此命令与一个参数一起使用
-
 (如下所示)以显示来自某个特定 swf 的文件。使用单个参数
-
 (就像“info swfs”命令所显示的 swf 名称),在文件列表中将仅显示
-
 来自指定 swf 的文件。将不会显示来自其它 swf 的文件。此命令还会影响
-
 将文件视为参数的命令(例如,“break”)。示例:
-
   viewswf myApp.mxml.swf
-
     将仅显示来自 myApp.mxml.swf 的文件。
-
   viewswf
-
     将显示来自所有 swf 的所有文件。
 
-
-
 [watch]
 
-
-
 在给定变量上添加观察点。当变量的值改变时,调试器将终止执行。
-
 示例:
-
   watch foo
 
-
-
 [what]
 
-
-
 显示解析变量的上下文。
 
-
-
 [where]
 
-
-
 堆栈的向后跟踪。
 
-
-
 [zzz]
 
-
-
-((( 将此未使用的主题保留在文件末尾    )))
-
-((( 以便正确分析倒数第二个主题。)))
-
-
-
+((( Keep this unused topic at the end of the file    )))
+((( so that the next-to-last one is parsed properly. )))

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_zh_tw.txt
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_zh_tw.txt b/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_zh_tw.txt
index 9faa9d6..13e649d 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_zh_tw.txt
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_zh_tw.txt
@@ -1,4 +1,4 @@
-
+    
       Licensed to the Apache Software Foundation (ASF) under one or more
       contributor license agreements.  See the NOTICE file distributed with
       this work for additional information regarding copyright ownership.
@@ -14,1473 +14,739 @@
       See the License for the specific language governing permissions and
       limitations under the License.
 
-此檔案包含在 fdb 中使用「help」指令所顯示的文字。
-
 
+此檔案包含在 fdb 中使用「help」指令所顯示的文字。
 
 它會分成幾個「主題」。例如,當 fdb 使用者輸入「help break」時,下方的 [break] 主
-
 題就會顯示。
 
-
-
 每個主題的第一行和最後一行都應該保留空白。
-
 這兩行不會在 fdb 中顯示;在此處僅用於讓這個檔案更容易閱讀。
 
-
-
 說明文字顯示在 80 個字元寬的主控台時,不應該格式化為自動換行。
-
 以下行寬度為 80 個字元。
 
-
-
 --------------------------------------------------------------------------------
 
-
-
 [?]
 
-
-
 未定義的指令。請僅執行「help」來查看所有 fdb 指令的清單。
 
-
-
 [break]
 
-
-
 將中斷點設定在指定的行或函數。
-
 範例:
-
   break 87
-
     將中斷點設定在目前檔案的第 87 行。
-
   break myapp.mxml:56
-
     將中斷點設定在 myapp.mxml 的第 56 行。
-
   break #3:29
-
     將中斷點設定在檔案 #3 的第 29 行。
-
   break doThis
-
     在中斷點設定在目前檔案的函數 doThis()。
-
   break myapp.mxml:doThat
-
     將中斷點設定在檔案 myapp.mxml 的函數 doThat()。
-
   break #3:doOther
-
     將中斷點設定在檔案 #3 的函數 doOther()。
-
   break
-
    將中斷點設定在目前堆疊框架的目前執行位址。這有助於對返回到堆疊框架執行中斷
-
    作業。
-
 若要查看檔案名稱和號碼,請執行「info sources」或「info files」。
-
 若要查看函數名稱,請執行「info functions」。
-
 採用縮寫形式的檔案名稱和函數名稱若都很明確,則可以接受。
-
 如果指定了行號,請在該行的程式碼的開頭處中斷。
-
 如果指定了函數,請在該函數的程式碼的開頭處中斷。
-
 請參閱「commands」和「condition」,以瞭解進一步的中斷點控制。
 
-
-
 [bt]
 
-
-
 堆疊的回溯追蹤。
 
-
-
 [catch]
 
-
-
 擲出例外狀況時中止。這只會影響捕捉到的例外狀況,即由「catch」區塊處理的例外狀況。
-
 在除錯程式中,未捕捉到的例外狀況一律會中止。
 
-
-
 使用「delete」指令來刪除捕捉點。
 
-
-
 範例:
-
   catch *
-
     擲出任何的例外狀況時中止。
-
   catch ReferenceError
-
     只要擲出 ReferenceError,無論是否到捕捉,均會中止。
 
-
-
 [cf]
 
-
-
 顯示目前檔案的名稱和號碼,或是變更目前的檔案。
-
 範例:
-
   cf
-
     顯示目前檔案的名稱和號碼。
-
   cf myapp.mxml
-
     將目前的檔案變更為 myapp.mxml。
-
   cf #29
-
     將目前的檔案變更為檔案 #29。
-
 若要查看檔案名稱和號碼,請執行「info sources」或「info files」。
-
 採用縮寫形式的檔案名稱若都很明確,則可以接受。
-
 使用「list」列出檔案也會使該檔案成為目前的檔案。
 
-
-
 [clear]
 
-
-
 清除指定的行或函數的中斷點。
-
 範例:
-
   clear 87
-
     清除目前檔案第 87 行的中斷點。
-
   clear myapp.mxml:56
-
     清除 myapp.mxml 第 56 行的中斷點。
-
   clear #3:29
-
     清除檔案 #3 第 29 行的中斷點。
-
   clear doThis
-
     清除目前檔案中的函數 doThis() 的中斷點。
-
   clear myapp.mxml:doThat
-
     清除檔案 myapp.mxml 的函數 doThat() 的中斷點。
-
   clear #3:doOther
-
     清除檔案 #3 的函數 doOther() 的中斷點。
-
   clear
-
     清除目前檔案中的目前行的中斷點。
-
 若要查看檔案名稱和號碼,請執行「info sources」或「info files」。
-
 若要查看函數名稱,請執行「info functions」。
-
 採用縮寫形式的檔案名稱和函數名稱若都很明確,則可以接受。
-
 如果指定了行號,會清除該行中的所有中斷點。
-
 如果指定了函數,會清除函數開頭處的中斷點。
 
-
-
 [continue]
 
-
-
 在中斷點處停止之後繼續執行。
-
 此指令不使用任何引數。
 
-
-
 [condition]
 
 
-
-
-
 僅在 COND 為 true 時,指定要中斷的中斷點號碼 N。
-
 用法為「condition N COND」,其中 N 是整數,COND 是每次到達中斷點 N 時所
-
 要求值的運算式。
 
-
-
 [commands]
 
-
-
 設定到達中斷點時所要執行的指令。
-
 提供中斷點號碼作為「commands」後面的引數。
-
 如果未使用引數,目標中斷點即上次所設定的中斷點。
-
 指令本身會跟在下一行開頭之後。
-
 輸入包含「end」的行來代表行的結尾。
-
 提供「silent」作為第一行,以使中斷點處於無訊息狀態;因此,到達中斷點時,除了
-
 指令所列印的內容,將不會列印輸出。
-
 範例:
-
   (fdb) 指令
-
   輸入到達中斷點 1 時要使用的指令,一行一個指令。
-
   使用僅包含「end」的行來結束。
-
   >w
-
   >end
 
-
-
 [delete]
 
-
-
 刪除一或多個中斷點。
-
 範例:
-
   delete
-
     刪除所有中斷點。
-
   delete 2 5
-
     刪除中斷點 #2 和 #5。
-
 若要查看中斷點號碼,請執行「info breakpoints」。
 
-
-
 [directory]
 
-
-
 修改 fdb 搜尋原始檔案所在目錄的清單。
 
-
-
 範例:
 
-
-
   directory
-
     將清單還原成預設值,即原始檔案編譯成物件程式碼的目錄,後面跟隨目前的工作目錄。
 
-
-
   directory C:\MySource        (Windows)
-
   directory /MySource          (Mac)
-
     將指定的目錄加入將搜尋其來源的目錄清單開頭。例如,尋找類別
-
     mypackage.MyClass 的來源時,除錯程式會同時尋找
-
     C:\MySource\mypackage\MyClass.as 和 C:\MySource\MyClass.as。
 
-
-
   directory C:\Dir1;C:\Dir2    (Windows -- 使用「;」作為分隔符號)
-
   directory /Dir1:/Dir2        (Mac -- 使用「:」作為分隔符號)
-
     將數個目錄加入將搜尋其來源的目錄清單開頭。
 
-
-
 若要查看目前清單,請執行「show directories」。
 
-
-
 [disable]
 
-
-
 停用一或多個中斷點或自動顯示的運算式。
-
 範例:
-
   disable
-
   disable breakpoints
-
     停用所有中斷點。
-
   disable 2 5
-
   disable breakpoints 2 5
-
     停用中斷點 #2 和 #5。
-
   disable display
-
     停用所有自動顯示的運算式。
-
   disable display 1 3
-
     停用自動顯示的運算式 #1 和 #3。
-
 若要查看中斷點號碼,請執行「info breakpoints」。
-
 若要查看自動顯示的運算式號碼,請執行「info display」。
 
-
-
 [disassemble]
 
-
-
 (僅限 ActionScript 2;對 ActionScript 3 執行除錯時不支援)
 
-
-
 分解原始程式碼的指定部分。
-
 預設為目前的清單行。
-
 支援的引數與 list 指令相同。範例:
-
   disassemble 87
-
     分解目前檔案中的第 87 行。
-
   disassemble 87 102
-
     分解目前檔案中的第 87 到 102 行。
-
   disassemble doThis
-
       分解目前檔案中的函數 doThis()。
-
 除了使用如上的簡單行號外,您還可以使用其他方式指定行:
-
    myapp.mxml
-
       myapp.mxml 中的第 1 行。
-
    myapp.mxml:doThat
-
       myapp.mxml 中的第一行函數 doThat()。
-
    myapp.mxml:56
-
       myapp.mxml 中的第 56 行。
-
    #3
-
       檔案 #3 中的第 1 行。
-
    #3:doOther
-
       檔案 #3 中函數 Other() 開始所在的行。
-
    #3:29
-
       檔案 #3 中的第 29 行。
 
-
-
 [display]
 
-
-
 將運算式加入自動顯示的運算式清單。
-
 範例:
-
   display employee.name
-
     將「employee.name」加入自動顯示的運算式清單。
-
     每次 fdb 停止時,就會顯示 employee.name 的值。
-
 此指令的引數類似於「print」的引數。
-
 若要查看自動顯示的運算式及其號碼的清單,請執行「info display」。
 
-
-
 [down]
 
-
-
 選取並列印這一個項目所呼叫的堆疊框架。
-
 後續的「info arguments」和「info locals」指令將顯示所選框架的區域函數和引數。
-
 請參閱「up」和「frame」
 
-
-
 [enable]
 
-
-
 啟用一或多個中斷點或自動顯示的運算式。
-
 範例:
-
   enable
-
   enable breakpoints
-
     啟用所有中斷點。
-
   enable 2 5
-
   enable breakpoints 2 5
-
     啟用中斷點 #2 和 #5。
-
   enable display
-
     啟用所有自動顯示的運算式。
-
   enable display 1 3
-
     啟用自動顯示的運算式 #1 和 #3。
-
 若要查看中斷點號碼,請執行「info breakpoints」。
-
 若要查看自動顯示的運算式號碼,請執行「info display」。
 
-
-
 [file]
 
-
-
 指定要除錯的應用程式,但不啟動它。
-
 範例:
-
   file http://www.mysite.com/myapp.mxml
-
     指定要除錯的 MXML 應用程式。
-
   file myapp.swf
-
     指定要在目前目錄中除錯的本機 SWF 檔案。
-
     在此情況下,myapp.swd (含有除錯資訊的檔案) 必須也存在於目前目錄中。
-
 此指令不會真的使應用程式啟動;請使用不含引數的「run」指令,來啟動對應用程式的
-
 除錯。
-
 代替使用「file <target>」後接著使用「run」,可以僅指定要除錯的應用程式做為「run」
-
 的引數:
-
   run http://mysite.com/myapp.mxml
-
   run myapp.swf
-
 您也可以在啟動 fdb 時,指定要除
-
   錯的應用程式做為指令行引數:
-
   fdb http://www.mysite.com/myapp.mxml
-
   fdb myapp.swf
-
 在此情況下,您不需要使用
-
   「file」或「run」。
-
 如果使用「run」時未指定要除錯的程式,fdb 將會等待任何應用程式與之連線。
 
-
-
 [finish]
 
-
-
 在目前的函數返回之前一直執行。
-
 此指令不使用任何引數。
 
-
-
 [frame]
 
-
-
 選取並列印特定的堆疊框架。
-
 此指令會使用可選引數,即框架號碼。
-
 如果未提供引數,預設為返回到目前的頂層框架 (即框架 0)。
-
 範例:
-
   frame 4
-
   frame
-
 後續的「info arguments」和「info locals」指令將顯示所選框架的區域函數和引數。
-
 請參閱「up」、「down」和「bt」
 
-
-
 [handle]
 
-
-
 指定 fdb 應該以何種方式處理 Flash Player 中的錯誤。
-
 範例:
-
   handle recursion_limit stop
-
     發生 recursion_limit 錯誤時,在 fdb 中顯示訊息並停止,就像是在中斷點一樣。
-
   handle all print nostop
-
     發生任何類型的錯誤時,在 fdb 中顯示訊息,但不停止。
-
 第一個引數是錯誤名稱或「all」。
-
 其他引數是套用至該錯誤的動作。
-
 若要查看錯誤名稱,請執行「info handle」。
-
 動作為 print/noprint 和 stop/nostop。
-
 「print」代表發生此錯誤時列印訊息。
-
 「stop」代表發生此錯誤時重新進入除錯程式。意謂「print」。
 
-
-
 [help]
 
-
-
 使用 fdb 的新手? 執行「tutorial」以取得基本資訊。
-
 fdb 指令清單:
-
 bt (bt)             列印所有堆疊框架的回溯追蹤
-
 break (b)           將中斷點設定在指定的行或函數
-
 catch (ca)          擲出例外狀況時中止
-
 cf (cf)             顯示目前檔案的名稱和號碼
-
 clear (cl)          清除指定的行或函數的中斷點
-
 condition (cond)    在中斷點套用/移除條件式運算式
-
 continue (c)        在中斷點處停止之後繼續執行
-
 commands (com)      設定到達中斷點時要執行的指令
-
 delete (d)          刪除中斷點或自動顯示的運算式
-
 directory (dir)     將目錄加入原始檔案的搜尋路徑
-
 disable (disab)     停用中斷點或自動顯示的運算式
-
 disassemble (disas) 分解來源行或函數
-
 display (disp)      加入自動顯示的運算式
-
 enable (e)          啟用中斷點或自動顯示的運算式
-
 file (fil)          指定要除錯的應用程式
-
 finish (f)          在目前的函數返回之前一直執行
-
 handle (han)        指定錯誤的處理方式
-
 help (h)            顯示有關 fdb 指令的說明
-
 home (ho)           將清單位置設定為執行的中止位置
-
 info (i)            顯示有關正在除錯之程式的資訊
-
 kill (k)            終止執行正在除錯的程式
-
 list (l)            列出指定函數或行
-
 next (n)            執行程式單步作業
-
 print (p)           列印變數 EXP 的值
-
 pwd (pw)            列印工作目錄
-
 quit (q)            結束 fdb
-
 run (r)             啟動已除錯的程式
-
 set (se)            設定變數的值
-
 source (so)         從檔案讀取 fdb 指令
-
 step (s)            執行程式單步作業,直到到達不同的來源行
-
 tutorial (t)        顯示如何使用 fdb 的教學課程
-
 undisplay (u)       移除自動顯示的運算式
-
 viewswf (v)         根據 swf 設定或清除檔案清單的過濾器
-
 watch (wa)          在指定變數上加入監視點
-
 what (wh)           顯示變數的上下文
-
 where (w)           與 bt 相同
-
 輸入「help」,後面跟隨指令名稱以取得完整文件。
 
-
-
 [home]
 
-
-
 將清單位置設定為執行的中止位置。
 
-
-
 [info]
 
-
-
 用於顯示正在除錯的程式相關資訊的一般指令。
-
 info 子指令的清單:
-
 info arguments (i a)    目前堆疊框架的引數變數
-
 info breakpoints (i b)  使用者可設定之中斷點的狀態
-
 info display (i d)      顯示自動顯示的運算式清單
-
 info files (i f)        正在除錯的目標和檔案名稱
-
 info functions (i fu)   所有函數名稱
-
 info handle (i h)       錯誤的處理方式
-
 info locals (i l)       目前堆疊框架的區域變數
-
 info scopechain (i sc)  目前堆疊框架的範圍鏈結
-
 info sources (i so)     程式中的原始檔案
-
 info stack (i s)        堆疊的回溯追蹤
-
 info swfs (i sw)        此工作階段中的 swf 清單
-
 info targets(i t)       正在除錯的應用程式
-
 info variables (i v)    所有全域和靜態變數名稱
-
 輸入「help info」,後面跟隨 info 子指令名稱以取得完整文件。
 
-
-
 [info arguments]
 
-
-
 顯示目前堆疊框架的引數。
 
-
-
 [info breakpoints]
 
-
-
 顯示所有中斷點和監視點的狀態。
-
 「類型」欄指示下列其中一項:
-
    breakpoint   - 一般中斷點
-
    watchpoint   - 監視點
-
 「處理」欄包含「keep」、
-
    「del」或「dis」其中一項,用於指示到達中斷點後,對中斷點的處理方式。「dis」
-
    代表將停用中斷點,「del」則代表將刪除中斷點。
-
 「Address」和「What」欄分別代表位址和檔案/行號。
 
-
-
 [info display]
 
-
-
 顯示自動顯示的運算式及其號碼的清單
 
-
-
 [info files]
 
-
-
 顯示正在除錯的應用程式檔案名稱和數目,包括原始檔案、架構檔案和自動產生的檔案。
-
 範例:
-
   info files
-
     依類別字母順序列出所有檔案
-
   info files my
-
   info files my*
-
     依字母順序列出其名稱以「my」開頭的所有檔案。
-
   info files *.as
-
     依字母順序列出其名稱以「.as」結尾的所有檔案。
-
   info files *foo*
-
     依字母順序列出其名稱含有「foo」的所有檔案。
-
 檔案會以 name#N 格式顯示,其中 N 為檔案號碼。
-
 在許多指令中,您都可以使用 #N 取代檔案名稱。
 
-
-
 [info functions]
 
-
-
 顯示函數名稱。
-
 範例:
-
   info functions .
-
     顯示目前檔案中的所有函數。
-
   info functions myapp.mxml
-
     顯示 myapp.mxml 中的所有函數。
-
   info functions #3
-
     顯示檔案 #3 中的所有函數。
-
   info functions
-
     顯示所有檔案中的全部函數。
-
 若要查看檔案名稱和號碼,請執行「info sources」或「info files」。
-
 採用縮寫形式的檔案名稱若都很明確,則可以接受。
 
-
-
 [info handle]
 
-
-
 顯示 Flash Player 發生錯誤時,fdb 會執行的動作。
-
 範例:
-
   info handle
-
     顯示 fdb 處理所有錯誤的方式。
-
   info handle recursion_limit
-
     顯示 fdb 處理 recursion_limit 錯誤的方式。
 
-
-
 [info locals]
 
-
-
 顯示目前堆疊框架的區域變數。
 
-
-
 [info scopechain]
 
-
-
 顯示目前堆疊框架的範圍鏈結。範圍鏈結是 Flash Player 嘗試解決符號名稱時會搜尋的物
-
 件清單。
 
-
-
 [info sources]
 
-
-
 顯示正在除錯的應用程式原始檔案名稱和數目。架構檔案和自動產生的檔案不包括在內。
-
 檔案會以 name#N 格式顯示,其中 N 為檔案號碼。
-
 在許多指令中,您都可以使用 #N 取代檔案名稱。
 
-
-
 [info stack]
 
-
-
 堆疊的回溯追蹤。
 
-
-
 [info swfs]
 
-
-
 顯示除錯工作階段已知的 swf。如需如何根據 swf 名稱過濾檔案清單的詳細資訊,請參閱
-
 指令「viewswf」。
 
-
-
 [info targets]
 
-
-
 顯示正在除錯的應用程式的 URL (http: 或 file:)。
 
-
-
 [info variables]
 
-
-
 顯示所有全域和靜態變數名稱和值。
 
-
-
 [info ?]
 
-
-
 未定義的 info 指令。請嘗試使用「help info」。
 
-
-
 [kill]
 
-
-
 終止執行正在除錯的程式。
-
 此指令不使用任何引數。
 
-
-
 [list]
 
-
-
 列出原始檔案中的多行程式碼。
-
 範例:
-
   list
-
     列出目前檔案中上一個清單之後或前後的另外十行。
-
   list -
-
     列出目前檔案中上一個清單之前的十行。
-
   list 87
-
     列出目前檔案中第 87 行前後十行。
-
   list 87 102
-
     列出目前檔案中的第 87 到 102 行。
-
 除了使用如上的簡單行號以外,您還可以使用 7 種方式指定行:
-
   doThis
-
       目前檔案中的第 1 行函數 doThis()。
-
    myapp.mxml
-
       myapp.mxml 中的第 1 行。
-
    myapp.mxml:doThat
-
       myapp.mxml 中的第一行函數 doThat()。
-
    myapp.mxml:56
-
       myapp.mxml 中的第 56 行。
-
    #3
-
       檔案 #3 中的第 1 行。
-
    #3:doOther
-
       檔案 #3 中函數 Other() 開始所在的行。
-
    #3:29
-
       檔案 #3 中的第 29 行。
-
 若要查看檔案名稱和號碼,請執行「info sources」或「info files」。
-
 若要查看函數名稱,請執行「info functions」。
-
 採用縮寫形式的檔案名稱和函數名稱若都很明確,則可以接受。
-
 列出某個檔案時,會使該檔案成為目前的檔案。(請參閱「cf」指令。)
 
-
-
 [next]
 
-
-
 執行程式單步作業,將繼續執行所有副常式呼叫。
-
   next
-
     執行單步作業一次。
-
   next 3
-
     執行單步作業 3 次,或直到程式因其他原因而停止。
-
 只要副常式呼叫不發生,就跟「step」指令相同;如果發生,會將呼叫視為一個指示。
 
-
-
 [print]
 
-
-
 列印變數或運算式的值。
-
 範例:
-
   print i
-
     列印「i」的值。
-
   print employee.name
-
     列印「employee.name」的值。
-
   print employee
-
     列印「employee」物件的值。
-
     這可能只會顯示類似 [Object 10378] 的內容。
-
   print employee.
-
     列印「employee」物件的所有屬性值。
-
   print *employee
-
     列印「employee」物件的所有屬性值。
-
     前置 * 運算子是後置 . 運算子的前置替代項。
-
   print #10378.
-
     列印物件 #10378 的所有屬性值。
-
 可存取的變數是所選堆疊框架的語彙環境變數,加上範圍為全域或整個檔案的所有變數。
 
-
-
 [pwd]
 
-
-
 列印目前的工作目錄。
-
 此為從其啟動 fdb 的目錄;在 fdb 中無法加以變更。可相對於此目錄指定「run」和
-
 「source」的引數。
-
 此指令不使用任何引數。
 
-
-
 [quit]
 
-
-
 結束 fdb。
-
 此指令不使用任何引數。
 
-
-
 [run]
 
-
-
 開始除錯工作階段。
-
 範例:
-
   run http://www.mysite.com/myapp.mxml
-
     執行指定的 MXML 應用程式。
-
   run myapp.swf
-
   run mydir\myapp.swf
-
   run c:\mydir\myapp.swf
-
     執行本機 SWF 檔案 myapp.swf,可相對於目前目錄 (請參閱「pwd」指令) 或使用絕對
-
     路徑指定該檔案。在許多情況下,myapp.swd (含有除錯資訊的檔案) 必須也存在於與
-
 	myapp.swf 相同的目錄中。
-
   run
-
     執行之前使用「file」指令所指定的應用程式。
-
     如果未指定任何應用程式,fdb 會等待應用程式與之連線,如果沒有應用程式與之連線,
-
     將會逾時。
-
 「run」將會在瀏覽器或獨立 Flash Play 中啟動應用程式。
-
 應用程式一啟動,就會進入 fdb,讓您可以設定中斷點等。
 
-
-
 在 Macintosh 上,唯一支援的指令格式為不加引數的「run」。您必須接著手動啟動
-
 Flash player。
 
-
-
 [set]
 
-
-
 設定變數或便利變數的值。
-
 便利變數是完全存在於 fdb 中的變數;不屬於您程式的一部分。
-
 便利變數的開頭是「$」,可以是與任何現有變數不衝突的任何名稱。例如,$myVar。便
-
 利變數也可用於控制 fdb 的各個層面。
 
-
-
 fdb 使用下列便利變數。
-
 $listsize          - 「list」顯示的來源行數
-
 $columnwrap        - 輸出將自動換行的欄號
-
 $infostackshowthis - 若為 0,在堆疊回溯追蹤中將不顯示「this」
-
 $invokegetters     - 若為 0,將阻止 fdb 啟動 getter 函數
-
 $bpnum             - 最後一個已定義的中斷點號碼
-
 $displayattributes - 若為 1,「print var.」會顯示「var」成員的所有屬性 (如
-
                      private、static)
 
-
-
 範例:
-
   set i = 3
-
     將變數「i」設定為數字 3。
-
   set employee.name = "Susan"
-
     將變數「employee.name」設定為字串「Susan」。
-
   set $myVar = 20
-
     將便利變數「$myVar」設定為數字 20
 
-
-
 [show]
 
-
-
 用於顯示 fdb 狀態相關資訊的一般指令。
-
 show 子指令的清單:
-
 show break (sh b)       暫停的執行位置及原因
-
 show directories (sh d) 要搜尋原始檔案的目錄
-
 show files (sh f)       目標檔案和路徑
-
 show functions (sh fu)  函數行對應資訊
-
 show locations (sh l)   中斷點位置
-
 show memory (sh m)      目前的記憶體使用量
-
 show net (sh n)         播放程式訊息統計
-
 show properties (sh p)  屬性值
-
 show uri (sh u)         此工作階段的播放程式 URI
-
 show variable (sh v)    原始變數擷取
-
 輸入「help show」,後面接著 show 子指令名稱以取得完整文件。
 
-
-
 [show break]
 
-
-
 顯示 SWF 內程式中止位置的位移
 
-
-
 [show directories]
 
-
-
 顯示用於尋找原始檔案的目前搜尋路徑。
 
-
-
 [show files]
 
-
-
 顯示所有目標檔案的路徑和檔案名稱
 
-
-
 [show functions]
 
-
-
 顯示函數到行號的對應資訊。
-
 範例:
-
   show functions .
-
     顯示目前檔案中所有函數的對應資訊。
-
   show functions myapp.mxml
-
     顯示 myapp.mxml 中所有函數的對應資訊。
-
   show functions #3
-
     顯示檔案 #3 中所有函數的對應資訊。
-
   show functions
-
     顯示所有檔案中所有函數的對應資訊。
-
 若要查看檔案名稱和號碼,請執行「info sources」或「info files」。
-
 採用縮寫形式的檔案名稱若都很明確,則可以接受。
 
-
-
 [show locations]
 
-
-
 顯示針對每個中斷點所設定的位置清單。
 
-
-
 [show memory]
 
-
-
 顯示 Java VM 記憶體統計。
 
-
-
 [show net]
 
-
-
 顯示傳送至 Flash Player 及接收自 Flash Player 的訊息相關資訊。
 
-
-
 [show properties]
 
-
-
 顯示用於除錯程式中的便利變數清單
 
-
-
 [show uri]
 
-
-
 顯示播放程式針對此工作階段所傳送的 URI。
 
-
-
 [show variable]
 
-
-
 顯示變數成員的值。需要使用兩個參數;第一個是數值變數識別名稱,第二個是變數的屬性
-
 名稱。便利變數
-
 $invokegetters 用於決定屬性 getter (假定其存在時) 是否啟動。
-
 範例:
-
     show variable 1 __proto__
 
-
-
 [show ?]
 
-
-
 未定義的 show 指令。請嘗試使用「help show」。
 
-
-
 [source]
 
-
-
 從檔案讀取 fdb 指令,並加以執行。
-
   source mycommands.txt
-
   source mydir\mycommands.txt
-
   source c:\mydir\mycommands.txt
-
     讀取 mycommands.txt 並在其中執行 fdb 指令。
-
     您可以相對於目前目錄 (請參閱「pwd」指令) 或使用絕對路徑指定含有指令的檔案。
-
 啟動 fdb 時會自動以此方式讀取檔案 .fdbinit。
-
 僅會在目前的目錄中搜尋 .fdbinit。這意味著,您可以針對不同專案設定多個 .fdbinit 檔
-
 案。
 
-
-
 [step]
 
-
-
 執行程式單步作業,直到到達不同的來源行。
-
 範例:
-
   step
-
     執行單步作業一次。
-
   step 3
-
     執行單步作業 3 次,或直到程式因其他原因而停止。
 
-
-
 [tutorial]
 
-
-
 顯示如何使用 fdb 的教學課程。
-
 此指令不使用任何引數。
 
-
-
 [Tutorial]
 
-
-
 典型的 fdb 工作階段:
-
 使用「run」啟動應用程式。
-
 使用「info sources」檢視檔案名稱。
-
 使用「list」列出檔案。
-
 使用「break」設定中斷點。
-
 使用「continue」執行程式,直到到達中斷點為止。
-
 使用「where」、「print」或「info locals」檢查程式的狀態。
-
 使用「next」、「step」和「finish」執行個別陳述式。
-
 使用「continue」繼續執行。
-
 使用「quit」結束 fdb。
 
-
-
 [undisplay]
 
-
-
 移除一或多個自動顯示的運算式。
-
 範例:
-
   undisplay
-
     移除所有自動顯示的運算式。
-
   undisplay 2 7
-
     移除自動顯示的運算式 #2 和 #7。
-
 若要查看自動顯示的運算式及其號碼的清單,請執行「info display」。
 
-
-
 [up]
 
-
-
 選取並列印呼叫這一個項目的堆疊框架。
-
 後續的「info arguments」和「info locals」指令將顯示所選框架的區域函數和引數。
-
 請參閱「down」和「frame」
 
-
-
 [viewswf]
 
-
-
 根據 swf 名稱設定或清除檔案清單 (即「info files」和「info sources」) 的過濾器。
-
 若無任何參數,將會顯示所有檔案。如果一或多個 swf 中存在相同的檔案,清單只會顯示
-
 檔案的第一個實體。若要存取檔案的其它實體,請使用檔案號碼 (例如,「list #192」)
-
 或使用此指令搭配參數 (請參閱下文) 來顯示特定 swf 中的檔案。搭配單一參數,使用
-
 「info swfs」指令顯示 swf 名稱時,在檔案清單中只會顯示指定 swf 中的檔案。
-
 不會顯示其它 swf 中的檔案。此指令也會影響接受檔案作為參數 (例如,「break」) 的指
-
 令。例如:
-
   viewswf myApp.mxml.swf
-
     將僅顯示 myApp.mxml.swf 中的檔案。
-
   viewswf
-
     將顯示所有 swf 中的全部檔案。
 
-
-
 [watch]
 
-
-
 在指定變數上加入監視點。當變數值變更時,除錯程式將會中止執行。
-
 範例:
-
   watch foo
 
-
-
 [what]
 
-
-
 顯示解析變數所在的上下文。
 
-
-
 [where]
 
-
-
 堆疊的回溯追蹤。
 
-
-
 [zzz]
 
-
-
 ((( 將這個未使用的主題保留在檔案結尾處    )))
-
 ((( 以便倒數第二個主題能正確剖析。)))
 
-
-


[04/15] FLEX-34291: Merge the donated FDB with the current one.

Posted by ft...@apache.org.
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_it.txt
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_it.txt b/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_it.txt
index 5dd0e80..4a718b7 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_it.txt
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_it.txt
@@ -1,4 +1,4 @@
-
+    
       Licensed to the Apache Software Foundation (ASF) under one or more
       contributor license agreements.  See the NOTICE file distributed with
       this work for additional information regarding copyright ownership.
@@ -14,1713 +14,859 @@
       See the License for the specific language governing permissions and
       limitations under the License.
 
-This file contains the text displayed by the 'help' command in fdb.
-
 
+This file contains the text displayed by the 'help' command in fdb.
 
 It is divided into "topics". For example, when an fdb user types
-
 'help break', the [break] topic below is displayed.
 
-
-
 The first and last lines of each topic should be blank.
-
 They don't get displayed in fdb; they are here only
-
 to make this file more easily readable.
 
-
-
 Help text should be formatted to not wrap
-
 when displayed on an 80-character-wide console.
-
 The following line is 80 characters wide.
 
-
-
 --------------------------------------------------------------------------------
 
-
-
 [?]
 
-
-
 Comando non definito. Immettere solo "help" per visualizzare l'elenco di tutti 
-
 i comandi di fdb.
 
-
-
 [break]
 
-
-
 Imposta un breakpoint in corrispondenza della riga o della funzione specificata.
-
 Esempi:
-
   break 87
-
     Imposta un breakpoint alla riga 87 del file corrente.
-
   break myapp.mxml:56
-
     Imposta un breakpoint alla riga 56 del file myapp.mxml.
-
   break #3:29
-
     Imposta un breakpoint alla riga 29 del file numero 3.
-
   break doThis
-
     Imposta un breakpoint in corrispondenza della funzione doThis() del file 
-
     corrente.
-
   break myapp.mxml:doThat
-
     Imposta un breakpoint in corrispondenza della funzione doThat() del file 
-
     myapp.mxml.
-
   break #3:doOther
-
     Imposta un breakpoint in corrispondenza della funzione doOther() del file 
-
     numero 3.
-
   break
-
    Imposta un breakpoint nell'indirizzo di esecuzione corrente in 
-
    corrispondenza del frame dello stack corrente. È utile per inserire 
-
    un'interruzione nei punti di ritorno al frame dello stack.
-
 Per visualizzare i nomi e i numeri dei file, immettere "info sources" o "info 
-
 files".
-
 Per visualizzare i nomi delle funzioni, immettere "info functions".
-
 Sono accettati i nomi abbreviati di file e funzioni a condizione che non siano 
-
 ambigui.
-
 Se viene specificato un numero di riga, l'interruzione avviene all'inizio del 
-
 codice di tale riga.
-
 Se viene specificata una funzione, l'interruzione avviene all'inizio del codice 
-
 di tale funzione.
-
 Per altre opzioni di controllo dei breakpoint, vedere "commands" e "condition".
 
-
-
 [bt]
 
-
-
 Back trace dello stack.
 
-
-
 [catch]
 
-
-
 Interrompe l'esecuzione quando viene generata un'eccezione. Vale solo per le 
-
 eccezioni rilevate, vale a dire le eccezioni che vengono gestite da un blocco 
-
 "catch". Le eccezioni non rilevate interrompono sempre l'esecuzione nel 
-
 debugger.
 
-
-
 Utilizzare il comando "delete" per eliminare un punto di intercettazione.
 
-
-
 Esempi:
-
   catch *
-
     Interrompe l'esecuzione quando viene generata qualsiasi eccezione.
-
   catch ReferenceError
-
     Interrompe l'esecuzione quando viene generato un ReferenceError, sia 
-
     intercettato che non.
 
-
-
 [cf]
 
-
-
 Visualizza il nome e il numero del file corrente o cambia il file corrente.
-
 Esempi:
-
   cf
-
     Visualizza il nome e il numero del file corrente.
-
   cf myapp.mxml
-
     Cambia il file corrente in myapp.mxml.
-
   cf #29
-
     Cambia il file corrente nel file numero 29.
-
 Per visualizzare i nomi e i numeri dei file, immettere "info sources" o "info 
-
 files".
-
 Sono accettati i nomi abbreviati di file a condizione che non siano ambigui.
-
 Un file diventa il file corrente anche quando viene elencato con "list".
 
-
-
 [clear]
 
-
-
 Rimuove il breakpoint in corrispondenza della riga o della funzione specificata.
-
 Esempi:
-
   clear 87
-
     Rimuove il breakpoint alla riga 87 del file corrente.
-
   clear myapp.mxml:56
-
     Rimuove il breakpoint alla riga 56 del file myapp.mxml.
-
   clear #3:29
-
     Rimuove il breakpoint alla riga 29 del file numero 3.
-
   clear doThis
-
     Rimuove il breakpoint in corrispondenza della funzione doThis() del file 
-
     corrente.
-
   clear myapp.mxml:doThat
-
     Rimuove il breakpoint in corrispondenza della funzione doThat() del file 
-
     myapp.mxml.
-
   clear #3:doOther
-
     Rimuove il breakpoint in corrispondenza della funzione doOther() del file 
-
     numero 3.
-
   clear
-
     Rimuove il breakpoint nella riga corrente del file corrente. 
-
 Per visualizzare i nomi e i numeri dei file, immettere "info sources" o "info 
-
 files".
-
 Per visualizzare i nomi delle funzioni, immettere "info functions".
-
 Sono accettati i nomi abbreviati di file e funzioni a condizione che non siano 
-
 ambigui.
-
 Se si specifica il numero di riga, tutti i breakpoint in quella riga vengono 
-
 eliminati.
-
 Se si specifica una funzione, i breakpoint all'inizio della funzione vengono 
-
 eliminati.
 
-
-
 [continue]
 
-
-
 Continua l'esecuzione dopo l'arresto al breakpoint.
-
 Questo comando non utilizza argomenti.
 
-
-
 [condition]
 
 
-
-
-
 Specifica che il breakpoint numero N deve interrompere l'esecuzione solo se 
-
 COND è vero.
-
 Utilizzo: "condition N COND", dove N è un numero intero e COND un'espressione 
-
 da valutare tutte le volte che viene raggiunto il breakpoint N.
 
-
-
 [commands]
 
-
-
 Imposta i comandi da eseguire quando viene rilevato un breakpoint.
-
 Fornire il numero del breakpoint come argomento dopo "commands".
-
 Senza argomento, il breakpoint di destinazione è quello impostato per ultimo.
-
 I comandi seguono a partire dalla riga successiva.
-
 Digitare una riga contenente "end" per indicare la fine dei comandi.
-
 Immettere "silent" come prima riga per rendere invisibile il breakpoint; in 
-
 questo modo, quando viene rilevato il breakpoint non viene stampato nulla, 
-
 tranne l'output dei comandi.
-
 Esempio:
-
   (fdb) commands
-
   Digitare i comandi da eseguire quando viene rilevato il breakpoint 1, uno per 
-
   riga.
-
   Terminare con una riga contenente solo "end".
-
   >w
-
   >end
 
-
-
 [delete]
 
-
-
 Elimina uno o più breakpoint.
-
 Esempi:
-
   delete
-
     Elimina tutti i breakpoint.
-
   delete 2 5
-
     Elimina i breakpoint numero 2 e 5.
-
 Per visualizzare il numero dei breakpoint, immettere "info breakpoints".
 
-
-
 [directory]
 
-
-
 Modifica l'elenco delle directory in cui fdb cerca i file di origine.
 
-
-
 Esempi:
 
-
-
   directory
-
     Ripristina l'elenco predefinito, vale a dire la directory in cui il file di 
-
     origine è stato compilato in codice oggetto, seguita dalla directory di 
-
     lavoro corrente.
 
-
-
   directory C:\MySource        (Windows)
-
   directory /MySource          (Mac)
-
     
-
 Aggiunge la directory specificata all'inizio dell'elenco delle directory in cui 
-
 cercare l'origine.
-
   Quando si cerca l'origine della classe mypackage.MyClass, ad esempio, il 
-
   debugger cerca sia C:\MySource\mypackage\MyClass.as che 
-
   C:\MySource\MyClass.as.
 
-
-
   directory C:\Dir1;C:\Dir2    (Windows – Utilizzare ";" come separatore)
-
   directory /Dir1:/Dir2        (Mac – Utilizzare ":" come separatore)
-
     Aggiunge numerose directory all'inizio dell'elenco delle directory in cui 
-
     cercare l'origine.
 
-
-
 Per vedere l'elenco corrente, immettere "show directories".
 
-
-
 [disable]
 
-
-
 Disabilita uno o più breakpoint o espressioni a visualizzazione automatica.
-
 Esempi:
-
   disable
-
   disable breakpoints
-
     Disabilita tutti i breakpoint.
-
   disable 2 5
-
   disable breakpoints 2 5
-
     Disabilita i breakpoint numero 2 e 5.
-
   disable display
-
     Disabilita tutte le espressioni a visualizzazione automatica.
-
   disable display 1 3
-
     Disabilita le espressioni a visualizzazione automatica numero 1 e 3.
-
 Per visualizzare il numero dei breakpoint, immettere "info breakpoints".
-
 Per visualizzare il numero delle espressioni a visualizzazione automatica, 
-
 immettere "info display".
 
-
-
 [disassemble]
 
-
-
 (Solo per ActionScript 2; non supportato quando si esegue il debug di ActionScript 3)
 
-
-
 Disassembla una porzione specifica di codice sorgente.
-
 La porzione predefinita è la riga dell'elenco corrente.
-
 Gli argomenti supportati sono gli stessi del comando "list".
-
 Esempi:
-
   disassemble 87
-
     Disassembla la riga 87 del file corrente.
-
   disassemble 87 102
-
     Disassembla dalla riga 87 alla 102 del file corrente.
-
   disassemble doThis
-
       Disassembla la funzione doThis() nel file corrente.
-
 Oltre a utilizzare numeri di riga semplici come negli esempi precedenti, 
-
 è possibile specificare le righe in altri modi:
-
    myapp.mxml
-
       La riga 1 del file myapp.mxml.
-
    myapp.mxml:doThat
-
       La prima riga della funzione doThat() del file myapp.mxml.
-
    myapp.mxml:56
-
       
-
 La riga 56 del file myapp.mxml.
-
    #3
-
       La riga 1 del file numero 3.
-
    #3:doOther
-
       La riga del file numero 3 in cui inizia la funzione doOther().
-
    #3:29
-
       La riga 29 del file numero 3.
 
-
-
 [display]
 
-
-
 Aggiunge un'espressione all'elenco delle espressioni a visualizzazione 
-
 automatica.
-
 Esempio:
-
   display employee.name
-
     Aggiunge "employee.name" all'elenco delle espressioni a visualizzazione 
-
     automatica.
-
     Ogni volta che fdb si arresta viene visualizzato il valore di employee.name.
-
 L'argomento di questo comando è simile a quello di "print".
-
 Per visualizzare l'elenco delle espressioni a visualizzazione automatica e del 
-
 numero corrispondente, immettere "info display".
 
-
-
 [down]
 
-
-
 Seleziona e stampa il frame dello stack chiamato da questo comando.
-
 I successivi comandi "info arguments" e "info locals" visualizzano le variabili 
-
 locali e gli argomenti del frame selezionato.
-
 Vedere "up" e "frame" 
 
-
-
 [enable]
 
-
-
 Abilita uno o più breakpoint o espressioni a visualizzazione automatica.
-
 Esempi:
-
   enable
-
   enable breakpoints
-
     Abilita tutti i breakpoint.
-
   enable 2 5
-
   enable breakpoints 2 5
-
     Abilita i breakpoint numero 2 e 5.
-
   enable display
-
     Abilita tutte le espressioni a visualizzazione automatica.
-
   enable display 1 3
-
     Abilita le espressioni a visualizzazione automatica numero 1 e 3.
-
 Per visualizzare il numero dei breakpoint, immettere "info breakpoints".
-
 Per visualizzare il numero delle espressioni a visualizzazione automatica, 
-
 immettere "info display".
 
-
-
 [file]
 
-
-
 Specifica l'applicazione di cui eseguire il debug, senza avviarla.
-
 Esempi:
-
   file http://www.mysite.com/myapp.mxml
-
     Specifica un'applicazione MXML di cui eseguire il debug.
-
   file myapp.swf
-
     Specifica un file SWF locale, nella directory corrente, di cui eseguire il 
-
     debug.
-
     In questo caso, nella directory corrente deve esistere anche il file 
-
     myapp.swd (il file che contiene le informazioni di debug).
-
 Questo comando non avvia l'applicazione; per iniziare il debug 
-
 dell'applicazione, utilizzare il comando "run" senza argomenti.
-
 Invece di utilizzare "file <destinazione>" e quindi "run", è possibile 
-
 specificare l'applicazione di cui eseguire il debug come argomento di "run":
-
   run http://mysite.com/myapp.mxml
-
   run myapp.swf
-
 È inoltre possibile specificare l'applicazione di cui eseguire il debug come 
-
 argomento della riga di comando quando si avvia fdb:
-
   fdb http://www.mysite.com/myapp.mxml
-
   fdb myapp.swf
-
 In questo caso non è necessario utilizzare "file" o "run".
-
 Se si utilizza "run" senza specificare l'applicazione di cui eseguire il debug, 
-
 fdb attende che un'applicazione si connetta ad esso.
 
-
-
 [finish]
 
-
-
 Continua l'esecuzione fino a quando ritorna la funzione corrente.
-
 Questo comando non utilizza argomenti.
 
-
-
 [frame]
 
-
-
 Seleziona e stampa un frame dello stack specifico.
-
 Questo comando utilizza un argomento facoltativo: il numero di un frame.
-
 Se non viene fornito l'argomento, per impostazione predefinita torna al frame 
-
 superiore corrente, vale a dire il frame 0.
-
 Esempi:
-
   frame 4
-
   frame
-
 I successivi comandi "info arguments" e "info locals" visualizzano le variabili 
-
 locali e gli argomenti del frame selezionato.
-
 Vedere "up", "down" e "bt" 
 
-
-
 [handle]
 
-
-
 Specifica come fdb deve gestire un errore di Flash Player.
-
 Esempi:
-
   handle recursion_limit stop
-
     Quando si verifica un errore relativo al limite di ricorsività, visualizza 
-
     un messaggio in fdb e si arresta come se fosse arrivato a un breakpoint.
-
   handle all print nostop
-
     Quando si verifica un qualsiasi tipo di errore, visualizza un messaggio in 
-
     fdb ma non si arresta.
-
 Il primo argomento è il nome di un frame o "all".
-
 Gli argomenti aggiuntivi sono azioni da applicare all'errore.
-
 Per visualizzare i nomi degli errori, immettere "info handle".
-
 Le azioni sono "print"/"noprint" e "stop"/"nostop".
-
 "print" consente di stampare un messaggio se si verifica questo errore.
-
 "stop" consente di attivare di nuovo il debugger se si verifica questo errore. 
-
 Implica "print".
 
-
-
 [help]
 
-
-
 Non avete dimestichezza con fdb? Immettete "tutorial" per visualizzare 
-
 informazioni di base.
-
 Elenco dei comandi di fdb:
-
 bt (bt)             Stampa il back trace di tutte i frame dello stack
-
 break (b)           Imposta un breakpoint in corrispondenza della riga o della 
-
                     funzione specificata
-
 catch (ca)          Interrompe l'esecuzione quando viene generata un'eccezione
-
 cf (cf)             Visualizza il nome e il numero del file corrente
-
 clear (cl)          Rimuove il breakpoint in corrispondenza della riga o della 
-
                     funzione specificata
-
 condition (cond)    Applica/rimuove un'espressione condizionale a/da un 
-
                     breakpoint
-
 continue (c)        Continua l'esecuzione dopo l'arresto nel breakpoint
-
 commands (com)      Imposta i comandi da eseguire quando viene rilevato un 
-
                     breakpoint
-
 delete (d)          Elimina breakpoint o espressioni a visualizzazione 
-
                     automatica
-
 directory (dir)     Aggiunge una directory al percorso di ricerca dei file di 
-
                     origine
-
 disable (disab)     Disabilita breakpoint o espressioni a visualizzazione 
-
                     automatica
-
 disassemble (disas) Disassembla righe o funzioni di origine
-
 display (disp)      Aggiunge espressioni a visualizzazione automatica
-
 enable (e)          Abilita breakpoint o espressioni a visualizzazione 
-
                     automatica
-
 file (fil)          Specifica l'applicazione di cui eseguire il debug
-
 finish (f)          Continua l'esecuzione fino a quando ritorna la funzione 
-
                     corrente
-
 handle (han)        Specifica come gestire un errore
-
 help (h)            Visualizza la guida sui comandi di fdb
-
 home (ho)           Imposta la posizione dell'elenco sul punto in cui viene 
-
                     sospesa l'esecuzione
-
 info (i)            Visualizza informazioni sul programma di cui si sta 
-
                     eseguendo il debug
-
 kill (k)            Interrompe l'esecuzione del programma di cui si sta 
-
                     eseguendo il debug
-
 list (l)            Elenca la funzione o la riga specificata
-
 next (n)            Analizza il programma passo a passo
-
 print (p)           Stampa il valore della variabile EXP
-
 pwd (pw)            Stampa la directory di lavoro
-
 quit (q)            Esce da fdb
-
 run (r)             Avvia il programma di cui si è eseguito il debug
-
 set (se)            Imposta il valore di una variabile
-
 source (so)         Legge comandi di fdb da un file
-
 step (s)            Analizza il programma passo a passo fino a quando arriva a 
-
                     una riga di origine diversa
-
 tutorial (t)        Visualizza un'esercitazione su come utilizzare fdb
-
 undisplay (u)       Rimuove un'espressione a visualizzazione automatica
-
 viewswf (v)         Imposta o reimposta il filtro per elencare i file swf
-
 watch (wa)          Aggiunge un punto di controllo in una variabile specificata
-
 what (wh)           Visualizza il contesto di una variabile
-
 where (w)           Uguale a "bt"
-
 Digitare "help" seguito dal nome del comando per visualizzare la documentazione 
-
 completa.
 
-
-
 [home]
 
-
-
 Imposta la posizione dell'elenco sul punto in cui viene sospesa l'esecuzione.
 
-
-
 [info]
 
-
-
 Comando generico per visualizzare informazioni sul programma di cui si sta 
-
 eseguendo il debug.
-
 Elenco dei sottocomandi di "info":
-
 info arguments (i a)    Variabili dell'argomento del frame dello stack corrente
-
 info breakpoints (i b)  Stato dei breakpoint impostabili dall'utente
-
 info display (i d)      Visualizza l'elenco delle espressioni a visualizzazione 
-
                         automatica
-
 info files (i f)        Nomi delle destinazioni e dei file di cui si sta 
-
                         eseguendo il debug
-
 info functions (i fu)   Tutti i nomi delle funzioni
-
 info handle (i h)       Come gestire un errore
-
 info locals (i l)       Variabili locali del frame dello stack corrente
-
 info scopechain (i sc)  Catena di ambito del frame dello stack corrente
-
 info sources (i so)     File di origine del programma
-
 info stack (i s)        Back trace dello stack
-
 info swfs (i sw)        Elenco dei file swf di questa sessione
-
 info targets(i t)       Applicazione di cui si sta eseguendo il debug
-
 info variables (i v)    Tutti i nomi delle variabili globali e statiche
-
 Digitare "help info" seguito dal nome del sottocomando di "info" per 
-
 visualizzare la documentazione completa.
 
-
-
 [info arguments]
 
-
-
 Visualizza gli argomenti del frame dello stack corrente.
 
-
-
 [info breakpoints]
 
-
-
 Visualizza lo stato di tutti i breakpoint e punti di controllo.
-
 La colonna "Type" indica:
-
    breakpoint   - breakpoint normale
-
    watchpoint   - punto di controllo
-
 La colonna "Disp" contiene "keep", "del" o "dis" per indicare cosa avverrà del 
-
 breakpoint dopo che viene rilevato. "dis" significa che il breakpoint verrà 
-
 disabilitato e "del" che verrà eliminato.  
-
 Le colonne "Address" e "What" indicano l'indirizzo e il numero di file/riga 
-
 rispettivamente. 
 
-
-
 [info display]
 
-
-
 Visualizza l'elenco delle espressioni a visualizzazione automatica e i relativi 
-
 numeri.
 
-
-
 [info files]
 
-
-
 Visualizza i nomi e i numeri dei file dell'applicazione di cui si sta eseguendo 
-
 il debug, inclusi i file di origine, i file dei framework e i file generati 
-
 automaticamente.
-
 Esempi:
-
   info files
-
     Elenca in ordine alfabetico tutti i file divisi per categoria
-
   info files my
-
   info files my*
-
     Elenca in ordine alfabetico tutti i file il cui nome inizia con "my".
-
   info files *.as
-
     Elenca in ordine alfabetico tutti i file il cui nome termina con ".as".
-
   info files *foo*
-
     Elenca in ordine alfabetico tutti i file il cui nome contiene "foo". 
-
 I file vengono visualizzati nel formato nome#N, dove N è il numero del file.
-
 In molti comandi è possibile utilizzare #N al posto del nome del file.
 
-
-
 [info functions]
 
-
-
 Visualizza i nomi delle funzioni.
-
 Esempi:
-
   info functions .
-
     Visualizza tutte le funzioni nel file corrente.
-
   info functions myapp.mxml
-
     Visualizza tutte le funzioni nel file myapp.mxml.
-
   info functions #3
-
     Visualizza tutte le funzioni nel file numero 3.
-
   info functions
-
     Visualizza tutte le funzioni in tutti i file.
-
 Per visualizzare i nomi e i numeri dei file, immettere "info sources" o "info 
-
 files".
-
 Sono accettati i nomi abbreviati di file a condizione che non siano ambigui.
 
-
-
 [info handle]
 
-
-
 Visualizza le operazioni effettuate da fdb quando si verifica un errore in 
-
 Flash Player.
-
 Esempi:
-
   info handle
-
     Visualizza il modo in cui fdb gestisce tutti gli errori.
-
   info handle recursion_limit
-
     Visualizza il modo in cui fdb gestisce un errore relativo al limite di 
-
     ricorsività.
 
-
-
 [info locals]
 
-
-
 Visualizza le variabili locali del frame dello stack corrente.
 
-
-
 [info scopechain]
 
-
-
 Visualizza la catena di ambito del frame dello stack corrente. La catena di 
-
 ambito è l'elenco degli oggetti in cui viene effettuata la ricerca quando Flash 
-
 Player cerca di risolvere il nome di un simbolo.
 
-
-
 [info sources]
 
-
-
 Visualizza i nomi e i numeri dei file di origine dell'applicazione di cui si 
-
 sta eseguendo il debug. I file dei framework e i file generati automaticamente 
-
 non sono inclusi.
-
 I file vengono visualizzati nel formato nome#N, dove N è il numero del file.
-
 In molti comandi è possibile utilizzare #N al posto del nome del file.
 
-
-
 [info stack]
 
-
-
 Back trace dello stack.
 
-
-
 [info swfs]
 
-
-
 Visualizza i file swf noti alla sessione di debug. Per maggiori informazioni su 
-
 come filtrare l'elenco dei file in base al nome di file swf, vedere il comando 
-
 "viewswf". 
 
-
-
 [info targets]
 
-
-
 Visualizza l'URL (http: o file:) dell'applicazione sottoposta a debug.
 
-
-
 [info variables]
 
-
-
 Visualizza tutti i nomi e i valori delle variabili globali e statiche.
 
-
-
 [info ?]
 
-
-
 Comando per ottenere informazioni non definito. Provare con "help info".
 
-
-
 [kill]
 
-
-
 Interrompe l'esecuzione del programma di cui si sta eseguendo il debug
-
 Questo comando non utilizza argomenti.
 
-
-
 [list]
 
-
-
 Elenca righe di codice di un file di origine.
-
 Esempi:
-
   list
-
     Elenca altre dieci righe del file corrente dopo o attorno all'elenco 
-
     precedente.
-
   list -
-
     Elenca le dieci righe del file corrente prima di un elenco precedente.
-
   list 87
-
     Elenca dieci righe del file corrente attorno alla riga 87.
-
   list 87 102
-
     Elenca dalla riga 87 alla 102 del file corrente.
-
 Oltre a utilizzare numeri di riga semplici come negli esempi precedenti, è 
-
 possibile specificare le righe in altri sette modi:
-
   doThis
-
       La prima riga della funzione doThis() del file corrente.
-
    myapp.mxml
-
       La riga 1 del file myapp.mxml.
-
    myapp.mxml:doThat
-
       La prima riga della funzione doThat() del file myapp.mxml.
-
    myapp.mxml:56
-
       La riga 56 del file myapp.mxml.
-
    #3
-
       La riga 1 del file numero 3.
-
    #3:doOther
-
       La riga del file numero 3 in cui inizia la funzione doOther().
-
    #3:29
-
       La riga 29 del file numero 3.
-
 Per visualizzare i nomi e i numeri dei file, immettere "info sources" o "info 
-
 files".
-
 Per visualizzare i nomi delle funzioni, immettere "info functions".
-
 Sono accettati i nomi abbreviati di file e funzioni a condizione che non siano 
-
 ambigui.
-
 Un file diventa il file corrente quando viene elencato. Vedere il comando "cf".
 
-
-
 [next]
 
-
-
 Analizza il programma passo a passo, passando attraverso le chiamate delle 
-
 subroutine.
-
   next
-
     Avanza di un passo
-
   next 3
-
     Avanza di tre passi o fino a quando il programma si interrompe per un altro 
-
     motivo.
-
 Come il comando "step", se non avvengono chiamate delle subroutine: quando ciò 
-
 avviene, la chiamata viene trattata come un'istruzione.
 
-
-
 [print]
 
-
-
 Stampa il valore della variabile o dell'espressione
-
 Esempi:
-
   print i
-
     Stampa il valore di "i".
-
   print employee.name
-
     Stampa il valore di "employee.name".
-
   print employee
-
     Stampa il valore dell'oggetto "employee".
-
     Potrebbe visualizzare semplicemente qualcosa del tipo [Object 10378].
-
   print employee.
-
     Stampa i valori di tutte le proprietà dell'oggetto "employee".
-
   print *employee
-
     Stampa i valori di tutte le proprietà dell'oggetto "employee".
-
     L'operatore * in forma prefissa è il prefisso alternativo dell'operatore . 
-
     in forma suffissa.
-
   print #10378.
-
     Stampa i valori di tutte le proprietà dell'oggetto numero 10378.
-
 Le variabili accessibili sono quelle dell'ambiente lessicale del frame dello 
-
 stack selezionato, oltre a quelle con ambito globale o costituito da un file 
-
 intero.
 
-
-
 [pwd]
 
-
-
 Stampa la directory di lavoro corrente.
-
 Si tratta della directory dalla quale è stato avviato fdb; non è possibile 
-
 modificarla da fdb. È possibile specificare l'argomento di "run" e "source" in 
-
 relazione a questa directory.
-
 Questo comando non utilizza argomenti.
 
-
-
 [quit]
 
-
-
 Esce da fdb.
-
 Questo comando non utilizza argomenti.
 
-
-
 [run]
 
-
-
 Avvia una sessione di debug.
-
 Esempi:
-
   run http://www.mysite.com/myapp.mxml
-
     Esegue l'applicazione MXML specificata.
-
   run myapp.swf
-
   run mydir\myapp.swf
-
   run c:\mydir\myapp.swf
-
     Esegue il file SWF myapp.swf locale che può essere specificato in relazione 
-
     alla directory corrente (vedere il comando "pwd") oppure utilizzando un 
-
     percorso assoluto. In questi casi, nella stessa directory in cui risiede il 
-
     file myapp.swf deve esistere anche il file myapp.swd (il file che contiene 
-
     le informazioni di debug).
-
   run
-
     Esegue l'applicazione specificata in precedenza dal comando "file".
-
     Se non è stata specificata alcuna applicazione, fdb attenderà per un 
-
     determinato periodo che se ne connetta una.
-
 Il comando "run" avvia l'applicazione in un browser o nella versione autonoma 
-
 di Flash Player.
-
 Appena avviata, l'applicazione si connette a fdb per consentire all'utente di 
-
 impostare breakpoint e così via.
 
-
-
 In Macintosh è supportato solo il formato "run" senza argomenti. È quindi 
-
 necessario avviare Flash Player manualmente.
 
-
-
 [set]
 
-
-
 Imposta il valore di una variabile o di una variabile di convenienza.
-
 Le variabili di convenienza esistono solo in fdb e non fanno parte del 
-
 programma utilizzato.
-
 Le variabili di convenienza hanno il prefisso "$" e possono essere costituite 
-
 da qualsiasi nome che non sia in conflitto con le variabili esistenti. Ad 
-
 esempio, $myVar. Le variabili di convenienza vengono utilizzate inoltre per 
-
 controllare vari aspetti di fdb.  
 
-
-
 Le seguenti variabili di convenienza vengono utilizzate da fdb.
-
 $listsize          - numero di righe di origine da visualizzare con il comando 
-
                      "list"
-
 $columnwrap        - numero di colonna in cui mandare a capo l'output
-
 $infostackshowthis - se si utilizza il valore 0, non visualizza "this" nel back 
-
                      trace dello stack
-
 $invokegetters     - se si utilizza il valore 0, impedisce a fdb di attivare 
-
                      funzioni getter
-
 $bpnum             - il numero del breakpoint definito per ultimo
-
 $displayattributes - se si utilizza il valore 1, "print var." visualizza tutti 
-
                      gli attributi dei membri di "var" (ad esempio, "private" e 
-
                      "static")
 
-
-
 Esempi:
-
   set i = 3
-
     Imposta la variabile "i" sul numero 3.
-
   set employee.name = "Susan"
-
     Imposta la variabile "employee.name" sulla stringa "Susan".
-
   set $myVar = 20
-
     Imposta la variabile di convenienza "'$myVar" sul numero 20.
 
-
-
 [show]
 
-
-
 Comando generico per visualizzare informazioni sullo stato di fdb.
-
 Elenco dei sottocomandi di "show":
-
 show break (sh b)       Posizione e causa della sospensione dell'esecuzione
-
 show directories (sh d) Directory in cui cercare i file di origine
-
 show files (sh f)       File e percorsi di destinazione
-
 show functions (sh fu)  Informazioni sulla mappatura delle righe delle funzioni 
-
 show locations (sh l)   Posizioni dei breakpoint
-
 show memory (sh m)      Utilizzo corrente della memoria
-
 show net (sh n)         Statistiche sui messaggi di Player 
-
 show properties (sh p)  Valori delle proprietà
-
 show uri (sh u)         URI di Player per la sessione attuale 
-
 show variable (sh v)    Recupero delle variabili non elaborate
-
 Digitare "help show" seguito dal nome del sottocomando di "show" per 
-
 visualizzare la documentazione completa.
 
-
-
 [show break]
 
-
-
 Visualizza l'offset nel file SWF nel quale si è arrestato il programma.
 
-
-
 [show directories]
 
-
-
 Visualizza il percorso corrente in cui cercare i file di origine.
 
-
-
 [show files]
 
-
-
 Visualizza il percorso e il nome di tutti i file di destinazione.
 
-
-
 [show functions]
 
-
-
 Visualizza informazioni sulla mappatura fra funzione e numero di riga.
-
 Esempi:
-
   show functions .
-
     Visualizza informazioni sulla mappatura di tutte le funzioni nel file 
-
     corrente.
-
   show functions myapp.mxml
-
     Visualizza informazioni sulla mappatura di tutte le funzioni nel file 
-
     myapp.mxml.
-
   show functions #3
-
     Visualizza informazioni sulla mappatura di tutte le funzioni nel file 
-
     numero 3.
-
   show functions
-
     Visualizza informazioni sulla mappatura di tutte le funzioni in tutti i 
-
     file.
-
 Per visualizzare i nomi e i numeri dei file, immettere "info sources" o "info 
-
 files".
-
 Sono accettati i nomi abbreviati di file a condizione che non siano ambigui.
 
-
-
 [show locations]
 
-
-
 Visualizza l'elenco delle posizioni impostate per ogni breakpoint
 
-
-
 [show memory]
 
-
-
 Visualizza statistiche sulla memoria relative a Java VM.
 
-
-
 [show net]
 
-
-
 Visualizza informazioni sui messaggi inviati e ricevuti da Flash Player.
 
-
-
 [show properties]
 
-
-
 Visualizza l'elenco delle variabili di convenienza utilizzate nel debugger 
 
-
-
 [show uri]
 
-
-
 Visualizza l'URI inviato da Player per questa sessione.
 
-
-
 [show variable]
 
-
-
 Visualizza il valore dei membri di una variabile. Sono necessari due parametri: 
-
 il primo è l'identificatore della variabile numerica e il secondo è il nome 
-
 della proprietà della variabile. La variabile di convenienza $invokegetters 
-
 viene utilizzata per determinare se la funzione di richiamo della proprietà, 
-
 presumendo che esista, verrà attivata oppure no.
-
 Esempio:
-
     show variable 1 __proto__
 
-
-
 [show ?]
 
-
-
 Comando "show" non definito. Provare con "help show".
 
-
-
 [source]
 
-
-
 Legge comandi di fdb da un file e li esegue.
-
   source mycommands.txt
-
   source mydir\mycommands.txt
-
   source c:\mydir\mycommands.txt
-
     Legge il file mycommands.txt ed esegue i comandi di fdb che contiene.
-
     È possibile specificare il file che contiene i comandi
-
 	in relazione alla directory corrente (vedere il comando "pwd")
-
 	oppure utilizzando un percorso assoluto.
-
 Quando si avvia fdb, il file .fdbinit viene letto automaticamente con questo 
-
 metodo.
-
 Il file .fdbinit viene cercato solo nella directory corrente. Pertanto è 
-
 possibile impostare vari file .fdbinit per progetti diversi.
 
-
-
 [step]
 
-
-
 Analizza il programma passo a passo fino a quando arriva a una riga di origine 
-
 diversa.
-
 Esempi:
-
   step
-
     Avanza di un passo
-
   step 3
-
     Avanza di tre passi o fino a quando il programma si interrompe per un altro 
-
 motivo.
 
-
-
 [tutorial]
 
-
-
 Visualizza un'esercitazione su come utilizzare fdb.
-
 Questo comando non utilizza argomenti.
 
-
-
 [Tutorial]
 
-
-
 Sessione fdb tipica:
-
 Avviare un'applicazione con "run".
-
 Visualizzare i nomi dei file con "info sources".
-
 Elencare un file con "list".
-
 Impostare breakpoint con "break".
-
 Eseguire il programma con "continue" fino a quando viene rilevato un breakpoint.
-
 Esaminare lo stato del programma con "where", "print", "info locals".
-
 Eseguire istruzioni individuali con "next", "step" e "finish".
-
 Riprendere l'esecuzione con "continue".
-
 Uscire da fdb con "quit".
 
-
-
 [undisplay]
 
-
-
 Rimuove una o più espressioni a visualizzazione automatica.
-
 Esempi:
-
   undisplay
-
     Rimuove tutte le espressioni a visualizzazione automatica.
-
   undisplay 2 7
-
     Rimuove le espressioni a visualizzazione automatica numero 2 e 7.
-
 Per visualizzare l'elenco delle espressioni a visualizzazione automatica e del 
-
 numero corrispondente, immettere "info display".
 
-
-
 [up]
 
-
-
 Seleziona e stampa il frame dello stack che ha chiamato questo frame dello 
-
 stack.
-
 I successivi comandi "info arguments" e "info locals" visualizzano
-
 le variabili locali e gli argomenti del frame selezionato.
-
 Vedere "down" e "frame"
 
-
-
 [viewswf]
 
-
-
 Imposta o reimposta il filtro per elencare i file (ad esempio, "info files" e 
-
 "info sources") in base al nome swf. 
-
 Se non si utilizzano parametri vengono visualizzati tutti i file. Se lo stesso 
-
 file esiste in uno o più file swf, nell'elenco viene inserita solo la prima 
-
 istanza del file. Per accedere ad altre istanze del file, utilizzare il numero 
-
 del file (ad esempio, "list #192") oppure utilizzare questo comando con un 
-
 parametro (vedere più avanti) per visualizzare i file di un file swf specifico. 
-
 Se si utilizza un solo parametro, il nome swf visualizzato con il comando "info 
-
 swfs", nell'elenco vengono visualizzati solo i file del file swf specificato. 
-
 I file di altri file swf non vengono visualizzati. Questo comando influisce 
-
 anche sui comandi che accettano un file come parametro (ad esempio "break").
-
 Esempio:
-
   viewswf myApp.mxml.swf
-
     Vengono visualizzati solo i file di myApp.mxml.swf.
-
   viewswf 
-
     Vengono visualizzati tutti i file di tutti i file swf.
-
  
-
 [watch]
 
-
-
 Aggiunge un punto di controllo in una variabile specificata. Il debugger 
-
 interrompe l'esecuzione quando cambia il valore della variabile.
-
 Esempio:
-
   watch foo
 
-
-
 [what]
 
-
-
 Visualizza il contesto in cui viene risolta una variabile. 
 
-
-
 [where]
 
-
-
 Back trace dello stack.
 
-
-
 [zzz]
 
-
-
 ((( Keep this unused topic at the end of the file    )))
-
 ((( so that the next-to-last one is parsed properly. )))
-

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_ja.txt
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_ja.txt b/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_ja.txt
index cecd165..2dcdabc 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_ja.txt
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_ja.txt
@@ -1,4 +1,4 @@
-
+    
       Licensed to the Apache Software Foundation (ASF) under one or more
       contributor license agreements.  See the NOTICE file distributed with
       this work for additional information regarding copyright ownership.
@@ -14,6 +14,7 @@
       See the License for the specific language governing permissions and
       limitations under the License.
 
+
 This file contains the text displayed by the 'help' command in fdb.
 
 It is divided into "topics". For example, when an fdb user types
@@ -64,6 +65,22 @@ The following line is 80 characters wide.
 
 スタックのバックトレースです。
 
+[catch]
+
+例外がスローされると中止します。これは、キャッチされた
+例外 ("catch" ブロックによって処理される例外) にのみ
+影響します。キャッチされない例外は常にデバッガーで
+中止されます。
+
+"delete" コマンドを使用してキャッチポイントを削除します。
+
+例 :
+catch *
+例外がスローされると中止します。
+catch ReferenceError
+キャッチされた、されないに関わらず、ReferenceError が
+スローされると中止します。
+
 [cf]
 
 現在のファイルの名前と番号を表示するか、現在のファイルを変更します。
@@ -129,6 +146,28 @@ N は整数で、COND はブレークポイント N に達したときに評価
   >w
   >end	
 
+[connect]
+
+ポートをリッスンしているデバッグする Player に接続します。
+デバッグ接続のために現在リッスンしている Player は
+モバイル用のみです。その他は常に接続しています。
+
+例:
+  connect
+ポート 7936 をリッスンしているデバッグ Player に接続します。
+  connect 7938
+ポート 7938 をリッスンしているデバッグ Player に接続します。
+    
+[worker]
+
+アクティブなワーカーを後続のデバッガー 
+コマンドの送信先に設定します。ワーカーのリストのクエリを行う
+情報ワーカーを使用します。メインスレッドの id は 0 です。
+
+例:
+  worker 3
+アクティブなワーカーを id 3 のワーカーに設定します。 
+
 [delete]
 
 ブレークポイントを削除します。
@@ -301,9 +340,11 @@ fdb を初めて使用する場合は、'tutorial' を実行し、基本情報
 fdb コマンドの一覧 : 
 bt (bt)             すべてのスタックフレームのバックトレースをプリントします。
 break (b)           指定された行または関数にブレークポイントを設定します。
+catch (ca)          例外がスローされると中止します。
 cf (cf)             現在のファイルの名前と番号を表示します。
 clear (cl)          指定された行または関数のブレークポイントをクリアします。
 condition (cond)    ブレークポイントに対する条件式を適用または削除します。
+connect (con)       デバッグ Player に接続します。
 continue (c)        ブレークポイントで停止した後に実行を続行します。
 commands (com)      ブレークポイントに達したときに実行するコマンドを設定します。
 delete (d)          ブレークポイントまたは auto-display 式を削除します。
@@ -331,8 +372,10 @@ step (s)            別のソース行に達するまで、プログラムを進
 tutorial (t)        fdb の使用方法に関するチュートリアルを表示します。
 undisplay (u)       auto-display 式を削除します。
 viewswf (v)         swf に基づいて、ファイルの一覧表示のフィルタを設定またはクリアします。
+watch (wa)          指定された変数の監視ポイントを追加します。
 what (wh)           変数のコンテキストを表示します。
 where (w)           bt と同じです。
+worker (wo)         アクティブなワーカーを設定します。
 詳細を確認するには、'help' の後にコマンド名を入力します。
 
 [home]
@@ -350,11 +393,13 @@ info files (i f)        デバッグ中のターゲットとファイルの名
 info functions (i fu)   すべての関数名を表示します。
 info handle (i h)       失敗の処理方法を表示します。
 info locals (i l)       現在のスタックフレームのローカル変数です。
+info scopechain (i sc)  現在のスタックフレームのスコープチェーンです。
 info sources (i so)     プログラムのソースファイルを表示します。
 info stack (i s)        スタックのバックトレースです。
 info swfs (i sw)        このセッションの swf のリストです。
 info targets(i t)       デバッグ中のアプリケーションです。
 info variables (i v)    すべてのグローバル変数と静的変数の名前を表示します。
+info workers (i w)      すべてのワーカーをリストします。
 詳細を確認するには、'help info' の後に info サブコマンド名を入力します。
 
 [info arguments]
@@ -423,9 +468,10 @@ fdb が recursion_limit の失敗を処理する方法を表示します。
 
 [info scopechain]
 
-Display the scope chain of the current stack frame.  The scope chain is
-the list of objects that is searched when the Flash player is trying
-to resolve a symbol name.
+現在のスタックフレームのスコープチェーンを表示します。 スコープチェーンは、
+Flash Player がシンボル名を解決しようとするときに検索される
+オブジェクトのリストです。
+
 
 [info sources]
 
@@ -451,6 +497,10 @@ swf 名に基づいてファイルの一覧表示をフィルタする方法の
 
 すべてのグローバル変数と静的変数の名前と値を表示します。
 
+[info workers]
+
+開始されたすべてのワーカーを表示します。
+
 [info ?]
 
 未定義の info コマンドです。'help info' を実行してください。
@@ -565,6 +615,8 @@ $columnwrap - 出力が折り返す列番号。
 $infostackshowthis - 0 の場合は、スタックバックトレースに 'this' が表示されません。
 $invokegetters - 0 の場合、fdb は getter 関数を発行しません。
 $bpnum - 最後に定義されたブレークポイント番号。
+$displayattributes - 1 の場合、'print var.' は 'var' のメンバー(private、static
+                     など)のすべての属性を表示します。
 
 例 : 
   set i = 3
@@ -719,6 +771,13 @@ swf 名に基づいて、ファイルの一覧表示のフィルタ
 "myApp.mxml.swf" のファイルのみが表示されます。
  viewswf 
 すべての swf のすべてのファイルが表示されます。
+
+[watch]
+
+指定された変数の監視ポイントを追加します。変数の値が変更されると、
+デバッガーの実行は中止されます。
+例 :
+watch foo
  
 [what]
 

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_ko_kr.txt
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_ko_kr.txt b/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_ko_kr.txt
index 63406bd..f027661 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_ko_kr.txt
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_ko_kr.txt
@@ -1,4 +1,4 @@
-
+    
       Licensed to the Apache Software Foundation (ASF) under one or more
       contributor license agreements.  See the NOTICE file distributed with
       this work for additional information regarding copyright ownership.
@@ -14,1617 +14,811 @@
       See the License for the specific language governing permissions and
       limitations under the License.
 
-이 파일에는 fdb의 'help' 명령을 통해 표시되는 텍스트가 포함되어 
 
+이 파일에는 fdb의 'help' 명령을 통해 표시되는 텍스트가 포함되어 
 있습니다.
 
-
-
 이러한 텍스트는 "항목"으로 나뉩니다.
-
 예를 들어 fdb 사용자가 'help break'를 입력하면 아래의 [break] 항목이 
-
 표시됩니다.
 
-
-
 각 항목의 첫 번째 행과 마지막 행은 비워 두어야 합니다.
-
 첫 번째 행과 마지막 행은 fdb에 표시되지 않으며 이 파일의 
-
 가독성을 높이는 역할만 합니다.
 
-
-
 도움말 텍스트가 80자 폭의 콘솔에 표시될 때 줄 바꿈되지 않도록 
-
 텍스트의 형식을 지정해야 합니다.
-
 다음은 80자 폭의 행입니다.
 
-
-
 --------------------------------------------------------------------------------
 
-
-
 [?]
 
-
-
 정의되지 않은 명령입니다.
-
 모든 fdb 명령 목록을 보려면 'help'만 실행합니다.
 
-
-
 [break]
 
-
-
 지정된 행이나 함수에서 중단점을 설정합니다.
-
 예:
-
   break 87
-
     현재 파일의 87행에서 중단점을 설정합니다.
-
   break myapp.mxml:56
-
     myapp.mxml의 56행에서 중단점을 설정합니다.
-
   break #3:29
-
     파일 #3의 29행에서 중단점을 설정합니다.
-
   break doThis
-
     현재 파일의 doThis() 함수에서 중단점을 설정합니다.
-
   break myapp.mxml:doThat
-
     myapp.mxml 파일의 doThat() 함수에서 중단점을 설정합니다.
-
   break #3:doOther
-
     파일 #3의 doOther() 함수에서 중단점을 설정합니다.
-
   break
-
    현재 스택 프레임의 현재 실행 주소에서 중단점을 설정합니다.
-
    이렇게 하면 스택 프레임으로 돌아가는 지점에서 
-
    중단할 때 편리합니다.
-
 파일 이름 및 번호를 보려면 'info sources' 또는 'info files'를 실행합니다.
-
 함수 이름을 보려면 'info functions'를 실행합니다.
-
 축약된 파일 이름 및 함수 이름이 모호하지 않다면 축약된 이름을 
-
 사용할 수 있습니다.
-
 행 번호를 지정하면 해당 행의 코드 시작 부분에서 중단됩니다.
-
 함수를 지정하면 해당 함수의 코드 시작 부분에서 중단됩니다.
-
 중단점 제어에 대한 자세한 내용은 '명령' 및 '조건'을 참조하십시오.
 
-
-
 [bt]
 
-
-
 스택 역추적입니다.
 
-
-
 [catch]
 
-
-
 예외가 발생하면 중단합니다. 이 명령은 Catch된 예외, 즉 
-
 "catch" 블록에서 처리하는 예외에만 영향을 줍니다.
-
  Catch되지 않은 예외는 항상 디버거에서 중단됩니다.
 
-
-
 catch 지점을 삭제하려면 "delete" 명령을 사용합니다.
 
-
-
 예:
-
   catch *
-
     어떤 예외라도 발생하면 중단합니다.
-
   catch ReferenceError
-
     Catch되었는지에 관계없이 ReferenceError가 발생하면 
-
     항상 중단합니다.
 
-
-
 [cf]
 
-
-
 현재 파일의 이름과 번호를 표시하거나 현재 파일을 변경합니다.
-
 예:
-
   cf
-
     현재 파일의 이름과 번호를 표시합니다.
-
   cf myapp.mxml
-
     현재 파일을 myapp.mxml로 변경합니다.
-
   cf #29
-
     현재 파일을 #29 파일로 변경합니다.
-
 파일 이름 및 번호를 보려면 'info sources' 또는 
-
 'info files'를 실행합니다.
-
 축약된 파일 이름이 모호하지 않다면 축약된 이름을 
-
 사용할 수 있습니다.
-
 'list'를 사용하여 파일을 나열하는 경우에도 해당 파일이 
-
 현재 파일로 설정됩니다.
 
-
-
 [clear]
 
-
-
 지정된 행이나 함수에서 중단점을 지웁니다.
-
 예:
-
   clear 87
-
     현재 파일의 87행에서 중단점을 지웁니다.
-
   clear myapp.mxml:56
-
     myapp.mxml의 56행에서 중단점을 지웁니다.
-
   clear #3:29
-
     파일 #3의 29행에서 중단점을 지웁니다.
-
   clear doThis
-
     현재 파일의 doThis() 함수에서 중단점을 지웁니다.
-
   clear myapp.mxml:doThat
-
     myapp.mxml 파일의 doThat() 함수에서 중단점을 지웁니다.
-
   clear #3:doOther
-
     파일 #3의 doOther() 함수에서 중단점을 지웁니다.
-
   clear
-
     현재 파일의 현재 행에서 중단점을 지웁니다.
-
 파일 이름 및 번호를 보려면 'info sources' 또는 
-
 'info files'를 실행합니다.
-
 함수 이름을 보려면 'info functions'를 실행합니다.
-
 축약된 파일 이름 및 함수 이름이 모호하지 않다면 
-
 축약된 이름을 사용할 수 있습니다.
-
 행 번호를 지정하면 해당 행의 모든 중단점이 지워집니다.
-
 함수를 지정하면 함수의 시작 부분에서 중단점이 지워집니다.
 
-
-
 [continue]
 
-
-
 중단점에서 중지한 후에 계속 실행합니다.
-
 이 명령에는 인수가 필요하지 않습니다.
 
-
-
 [condition]
 
 
-
-
-
 COND가 true인 경우에만 중단하려면 중단점 번호 N을 지정합니다.
-
 `조건 N COND'와 같은 형식을 사용합니다. 여기서 N은 정수이고 
-
 COND는 중단점 N에 도달할 때마다 평가되는 표현식입니다.
 
-
-
 [commands]
 
-
-
 중단점에 도달했을 때 실행할 명령을 설정합니다.
-
 중단점 번호를 `명령` 뒤에 인수로 지정합니다.
-
 인수를 지정하지 않으면 마지막으로 설정한 중단점이 
-
 목표 중단점이 됩니다.
-
 명령 자체는 다음 행의 시작 부분 뒤에 옵니다.
-
 행의 끝 부분임을 나타내려면 행을 입력할 때 "end"를 포함합니다.
-
 중단점을 표시하지 않으려면 첫 번째 행을 "silent"로 지정합니다.
-
 그러면 중단점에 도달해도 명령을 통해 인쇄되는 내용 외에 
-
 아무 내용도 인쇄되지 않습니다.
-
 예:
-
   (fdb) 명령
-
   중단점 1에 도달했을 때 사용할 명령을 한 행에 하나씩 입력합니다.
-
   마지막 행에는 'end'만 입력합니다.
-
   >w
-
   >end
 
-
-
 [delete]
 
-
-
 중단점 하나 이상을 삭제합니다.
-
 예:
-
   delete
-
     모든 중단점을 삭제합니다.
-
   delete 2 5
-
     중단점 #2과 #5을 삭제합니다.
-
 중단점 번호를 보려면 'info breakpoints'를 실행합니다.
 
-
-
 [directory]
 
-
-
 fdb를 통해 소스 파일을 검색할 디렉토리 목록을 수정합니다.
 
-
-
 예:
 
-
-
   directory
-
    목록을 기본값으로 복원합니다. 기본값은 소스 파일이 
-
    객체 코드로 컴파일된 디렉토리 뒤에 현재 작업 디렉토리가 
-
    오는 형태입니다.
 
-
-
   directory C:\MySource        (Windows)
-
   directory /MySource          (Mac)
-
     지정한 디렉토리를 소스를 검색할 디렉토리 목록의 시작 부분에 
-
     추가합니다. 예를 들어 mypackage.MyClass 클래스의 소스를 
-
     검색하는 경우 디버거에서 C:\MySource\mypackage\MyClass.as와 
-
     C:\MySource\MyClass.as를 모두 검색합니다.
 
-
-
   directory C:\Dir1;C:\Dir2    (Windows -- 구분 기호로 ';' 사용)
-
   directory /Dir1:/Dir2        (Mac -- 구분 기호로 ':' 사용)
-
     여러 디렉토리를 소스를 검색할 디렉토리 목록의 시작 부분에 
-
     추가합니다.
 
-
-
 현재 목록을 보려면 'show directories'를 실행합니다.
 
-
-
 [disable]
 
-
-
 중단점이나 자동 표시 표현식을 하나 이상 비활성화합니다.
-
 예:
-
   disable
-
   disable breakpoints
-
     모든 중단점을 비활성화합니다.
-
   disable 2 5
-
   disable breakpoints 2 5
-
     중단점 #2과 #5을 비활성화합니다.
-
   disable display
-
     자동 표시 표현식을 모두 비활성화합니다.
-
   disable display 1 3
-
     자동 표시 표현식 #1과 #3을 비활성화합니다.
-
 중단점 번호를 보려면 'info breakpoints'를 실행합니다.
-
 자동 표시 표현식 번호를 보려면 'info display'를 실행합니다.
 
-
-
 [disassemble]
 
-
-
 (ActionScript 2에만 해당하고 ActionScript 3 디버깅 시에는 
-
 지원되지 않습니다.)
 
-
-
 지정한 소스 코드 부분을 디스어셈블합니다.
-
 기본값은 현재 목록 행입니다.
-
 지원되는 인수는 다음에 예제로 나타난 list 명령과 같습니다.
-
   disassemble 87
-
     현재 파일의 87행을 디스어셈블합니다.
-
   disassemble 87 102
-
     현재 파일의 87행부터 102행까지 디스어셈블합니다.
-
   disassemble doThis
-
       현재 파일의 doThis() 함수를 디스어셈블합니다.
-
 위와 같이 간단한 행 번호를 사용하는 방법 외에 여러 가지 
-
 방법으로 행을 지정할 수 있습니다.
-
    myapp.mxml
-
       myapp.mxml의 1행입니다.
-
    myapp.mxml:doThat
-
       myapp.mxml에 있는 doThat() 함수의 첫 번째 행입니다.
-
    myapp.mxml:56
-
       myapp.mxml의 56행입니다.
-
    #3
-
       파일 #3의 1행입니다.
-
    #3:doOther
-
       파일 #3에서 doOther() 함수가 시작되는 행입니다.
-
    #3:29
-
       파일 #3의 29행입니다.
 
-
-
 [display]
 
-
-
 자동 표시 표현식 목록에 표현식을 추가합니다.
-
 예:
-
   display employee.name
-
     자동 표시 표현식 목록에 'employee.name'을 추가합니다.
-
     fdb가 중지할 때마다 employee.name의 값이 표시됩니다.
-
 이 명령의 인수는 'print'의 인수와 비슷합니다.
-
 자동 표시 표현식 및 해당 번호 목록을 보려면 'info display'를 
-
 실행합니다.
 
-
-
 [down]
 
-
-
 이 명령으로 호출되는 스택 프레임을 선택한 후 인쇄합니다.
-
 이 명령 뒤에 'info arguments' 및 'info locals' 명령을 사용하면 선택한 
-
 프레임의 로컬 및 인수가 표시됩니다.
-
 'up' 및 'frame'을 참조하십시오.
 
-
-
 [enable]
 
-
-
 중단점이나 자동 표시 표현식을 하나 이상 활성화합니다.
-
 예:
-
   enable
-
   enable breakpoints
-
     모든 중단점을 활성화합니다.
-
   enable 2 5
-
   enable breakpoints 2 5
-
     중단점 #2과 #5을 활성화합니다.
-
   enable display
-
     자동 표시 표현식을 모두 활성화합니다.
-
   enable display 1 3
-
     자동 표시 표현식 #1과 #3을 활성화합니다.
-
 중단점 번호를 보려면 'info breakpoints'를 실행합니다.
-
 자동 표시 표현식 번호를 보려면 'info display'를 실행합니다.
 
-
-
 [file]
 
-
-
 시작하지 않고 디버깅할 응용 프로그램을 지정합니다.
-
 예:
-
   file http://www.mysite.com/myapp.mxml
-
    디버깅할 MXML 응용 프로그램을 지정합니다.
-
   file myapp.swf
-
    현재 디렉토리에서 디버깅할 로컬 SWF 파일을 지정합니다.
-
    이 경우 현재 디렉토리에 myapp.swd(디버깅 정보가 포함된 파일)도 
-
    있어야 합니다.
-
 이 명령을 실행하더라도 실제로 응용 프로그램이 
-
 시작되지 않습니다.
-
  인수가 없는 'run' 명령을 사용하여 응용 프로그램을 디버깅합니다.
-
 'file <target>' 뒤에 'run'을 사용할 필요가 없이 디버깅할 응용 프로그램을 
-
 'run'의 인수로 간단히 지정하면 됩니다.
-
   run http://mysite.com/myapp.mxml
-
   run myapp.swf
-
 fdb를 시작할 때, 디버깅할 응용 프로그램을 명령줄 인수로도 
-
 지정할 수 있습니다.
-
   fdb http://www.mysite.com/myapp.mxml
-
   fdb myapp.swf
-
 이 경우 'file' 또는 'run'을 사용할 필요가 없습니다.
-
 디버깅할 응용 프로그램을 지정하지 않고 'run'을 실행하면 fdb에서 
-
 응용 프로그램이 연결될 때까지 기다립니다.
 
-
-
 [finish]
 
-
-
 현재 함수가 반환될 때까지 실행합니다.
-
 이 명령에는 인수가 필요하지 않습니다.
 
-
-
 [frame]
 
-
-
 특정 스택 프레임을 선택한 후 인쇄합니다.
-
 이 명령에는 선택적 인수(프레임 번호)가 필요합니다.
-
 인수를 입력하지 않으면 기본적으로 현재 최상위 프레임
-
 (즉, 프레임 0)으로 돌아갑니다.
-
 예:
-
   frame 4
-
   frame
-
 이 명령 뒤에 'info arguments' 및 'info locals' 명령을 사용하면 
-
 선택한 프레임의 로컬 및 인수가 표시됩니다.
-
 'up', 'down' 및 'bt'를 참조하십시오.
 
-
-
 [handle]
 
-
-
 fdb를 통해 Flash Player의 결함을 처리할 방법을 지정합니다.
-
 예:
-
   handle recursion_limit stop
-
   recursion_limit 결함이 발생하면 fdb에 메시지가 표시되고 
-
   중단점에서 중지되는 것처럼 중지됩니다.
-
   handle all print nostop
-
     결함이 발생하는 경우 fdb에 메시지가 표시되지만 
-
     중지되지는 않습니다.
-
 결함 이름이나 'all'이 첫 번째 인수에 해당됩니다.
-
 그 외 인수로는 해당 결함에 적용되는 동작이 있습니다.
-
 결함 이름을 보려면 'info handle'을 실행합니다.
-
 동작에는 print/noprint 및 stop/nostop이 있습니다.
-
 'print'는 이 결함이 발생하는 경우에 메시지가 인쇄된다는 의미입니다.
-
 'stop'은 이 결함이 발생하는 경우에 디버거가 다시 시작된다는 의미로, 
-
 'print'를 내포하고 있습니다.
 
-
-
 [help]
 
-
-
 fdb를 처음 사용하십니까?  
-
 'tutorial'을 실행하여 기본 정보를 살펴보십시오.
-
 fdb 명령 목록:
-
 bt (bt)             모든 스택 프레임의 역추적 인쇄
-
 break (b)           지정된 행이나 함수에서 중단점 설정
-
 catch (ca)          예외가 발생하면 중단
-
 cf (cf)             현재 파일의 이름과 번호 표시
-
 clear (cl)          지정된 행이나 함수에서 중단점 지우기
-
 condition(cond)     중단점에 조건부 표현식 적용/제거
-
 continue (c)        중단점에서 중지한 후에 계속 실행
-
 commands (com)      중단점에 도달했을 때 실행할 명령 설정
-
 delete(d)           중단점이나 자동 표시 표현식 삭제
-
 directory (dir)     소스 파일의 검색 경로에 디렉토리 추가
-
 disable (disab)     중단점이나 자동 표시 표현식 비활성화
-
 disassemble (disas) 소스 행 또는 함수 디스어셈블
-
 display (disp)      자동 표시 표현식 추가
-
 enable (e)          중단점이나 자동 표시 표현식 활성화
-
 file(fil)           디버깅할 응용 프로그램 지정
-
 finish (f)          현재 함수가 반환될 때까지 실행
-
 handle (han)        결함 처리 방법 지정
-
 help (h)            fdb 명령에 대한 도움말 표시
-
 home (ho)           실행이 중단되는 목록 위치 설정
-
 info (i)            디버깅 중인 프로그램에 대한 정보 표시
-
 kill (k)            디버깅 중인 프로그램의 실행 종료
-
 list (l)            지정된 함수나 행 나열
-
 next (n)            프로그램 단계 진행
-
 print (p)           변수 EXP의 값 인쇄
-
 pwd (pw)            작업 디렉토리 인쇄
-
 quit (q)            fdb 종료
-
 run (r)             디버깅된 프로그램 시작
-
 set(se)             변수 값 설정
-
 source (so)         파일에서 fdb 명령 읽기
-
 step (s)            다른 소스 행에 도달할 때까지 프로그램 단계 진행
-
 tutorial (t)        fdb 사용 방법에 대한 자습서 표시
-
 undisplay (u)       자동 표시 표현식 제거
-
 viewswf (v)         swf를 기준으로 파일을 나열하는 필터 설정 또는 지우기
-
 watch (wa)          지정된 변수에 대한 감시점 추가
-
 what (wh)           변수의 컨텍스트 표시
-
 where (w)           bt와 동일
-
 전체 설명서를 보려면 'help'를 입력하고 명령 이름을 입력합니다.
 
-
-
 [home]
 
-
-
 실행이 중단되는 목록 위치를 설정합니다.
 
-
-
 [info]
 
-
-
 디버깅 중인 프로그램에 대한 정보를 표시하는 데 사용되는 
-
 일반 명령입니다.
-
 info 하위 명령 목록:
-
 info arguments (i a)    현재 스택 프레임의 인수 변수
-
 info breakpoints (i b)  사용자가 설정할 수 있는 중단점 상태
-
 info display (i d)      자동 표시 표현식의 목록 표시
-
 info files (i f)        디버깅 중인 파일 및 대상 이름
-
 info functions (i fu)   모든 함수 이름
-
 info handle (i h)       결함 처리 방법
-
 info locals (i l)       현재 스택 프레임의 로컬 변수
-
 info scopechain (i sc)  현재 스택 프레임의 범위 체인
-
 info sources (i so)     프로그램의 소스 파일
-
 info stack (i s)        스택 역추적
-
 info swfs (i sw)        이 세션의 swf 목록
-
 info targets(i t)       디버깅 중인 응용 프로그램
-
 info variables (i v)    모든 전역 및 정적 변수 이름
-
 전체 설명서를 보려면 'help info'를 입력한 다음 info 하위 명령 
-
 이름을 입력합니다.
 
-
-
 [info arguments]
 
-
-
 현재 스택 프레임의 인수를 표시합니다.
 
-
-
 [info breakpoints]
 
-
-
 모든 중단점과 감시점 상태를 표시합니다.
-
 '유형' 열은 다음 중 하나를 나타냅니다.
-
    breakpoint   - 일반 중단점  
-
    watchpoint   - 감시점
-
 '처리' 열에는 중단점에 도달한 후에 중단점이 처리되는 
-
 방법을 나타내는 'keep', 'del', 'dis' 중 하나가 포함됩니다.
-
 'dis'는 중단점이 비활성화된다는 의미이고 'del'은 
-
 삭제된다는 의미입니다.
-
 '주소' 및 '대상' 열은 각각 주소 및 파일/행 번호를 나타냅니다.
 
-
-
 [info display]
 
-
-
 자동 표시 표현식 및 해당 번호 목록을 표시합니다.
 
-
-
 [info files]
 
-
-
 소스 파일, 프레임워크 파일, 자동 생성된 파일 등 디버깅 중인 
-
 응용 프로그램의 파일 번호와 이름을 표시합니다.
-
 예:
-
   info files
-
     범주를 기준으로 모든 파일을 사전순으로 나열합니다.
-
   info files my
-
   info files my*
-
     이름이 "my"로 시작하는 모든 파일을 사전순으로 나열합니다.
-
   info files *.as
-
     이름이 ".as"로 끝나는 모든 파일을 사전순으로 나열합니다.
-
   info files *foo*
-
     이름에 "foo"가 포함된 모든 파일을 사전순으로 나열합니다.
-
 name#N 형식으로 파일이 표시됩니다. 여기서 N은 파일 번호입니다.
-
 대부분의 명령에서 파일 이름 대신 #N을 사용할 수 있습니다.
 
-
-
 [info functions]
 
-
-
 함수 이름을 표시합니다.
-
 예:
-
   info functions .
-
     현재 파일의 모든 함수를 표시합니다.
-
   info functions myapp.mxml
-
     myapp.mxml의 모든 함수를 표시합니다.
-
   info functions #3
-
     파일 #3의 모든 함수를 표시합니다.
-
   info functions
-
     모든 파일의 모든 함수를 표시합니다.
-
 파일 이름 및 번호를 보려면 'info sources' 또는 'info files'를 실행합니다.
-
 축약된 파일 이름이 모호하지 않다면 축약된 이름을 사용할 수 있습니다.
 
-
-
 [info handle]
 
-
-
 Flash Player에서 결함이 발생할 경우 fdb에서 수행하는 작업을 표시합니다.
-
 예:
-
   info handle
-
     fdb에서 모든 결함을 처리하는 방법을 표시합니다.
-
   info handle recursion_limit
-
     fdb에서 recursion_limit 결함을 처리하는 방법을 표시합니다.
 
-
-
 [info locals]
 
-
-
 현재 스택 프레임의 로컬 변수를 표시합니다.
 
-
-
 [info scopechain]
 
-
-
 현재 스택 프레임의 범위 체인을 표시합니다.
-
 범위 체인은 Flash Player에서 심볼 이름을 확인하려고 할 때 검색되는 
-
 객체 목록을 말합니다.
 
-
-
 [info sources]
 
-
-
 디버깅 중인 응용 프로그램의 소스 파일 번호와 이름을 표시합니다.
-
 프레임워크 파일과 자동 생성된 파일은 포함되지 않습니다.
-
 name#N 형식으로 파일이 표시됩니다. 여기서 N은 파일 번호입니다.
-
 대부분의 명령에서 파일 이름 대신 #N을 사용할 수 있습니다.
 
-
-
 [info stack]
 
-
-
 스택 역추적입니다.
 
-
-
 [info swfs]
 
-
-
 디버깅 세션에 알려진 swf를 표시합니다. swf  이름을 기준으로 
-
 파일 목록을 필터링하는 방법에 대한 자세한 내용은 'viewswf' 명령을 
-
 참조하십시오.
 
-
-
 [info targets]
 
-
-
 디버깅 중인 응용 프로그램의 URL(http: 또는 file:)을 표시합니다.
 
-
-
 [info variables]
 
-
-
 모든 전역 변수 및 정적 변수의 이름과 값을 표시합니다.
 
-
-
 [info ?]
 
-
-
 정의되지 않은 info 명령입니다. 'help info'를 실행해 봅니다.
 
-
-
 [kill]
 
-
-
 디버깅 중인 프로그램의 실행을 종료합니다.
-
 이 명령에는 인수가 필요하지 않습니다.
 
-
-
 [list]
 
-
-
 소스 파일의 코드 행을 나열합니다.
-
 예:
-
   list
-
     현재 파일의 이전 목록 뒤나 주위에 행을 10개 더 나열합니다.
-
   list -
-
     현재 파일의 이전 목록 앞에 행을 10개 나열합니다.
-
   list 87
-
     현재 파일의 87행 주위에 행을 10개 나열합니다.
-
   list 87 102
-
     현재 파일의 87행부터 102행까지 나열합니다.
-
 위와 같이 간단한 행 번호를 사용하는 방법 외에 다른 일곱 가지 
-
 방법으로 행을 지정할 수 있습니다.
-
   doThis
-
       현재 파일에 있는 doThis() 함수의 첫 번째 행입니다.
-
    myapp.mxml
-
       myapp.mxml의 1행입니다.
-
    myapp.mxml:doThat
-
       myapp.mxml에 있는 doThat() 함수의 첫 번째 행입니다.
-
    myapp.mxml:56
-
       myapp.mxml의 56행입니다.
-
    #3
-
       파일 #3의 1행입니다.
-
    #3:doOther
-
       파일 #3에서 doOther() 함수가 시작되는 행입니다.
-
    #3:29
-
       파일 #3의 29행입니다.
-
 파일 이름 및 번호를 보려면 'info sources' 또는 'info files'를 
-
 실행합니다.
-
 함수 이름을 보려면 'info functions'를 실행합니다.
-
 축약된 파일 이름 및 함수 이름이 모호하지 않다면 
-
 축약된 이름을 사용할 수 있습니다.
-
 파일을 나열하면 해당 파일이 현재 파일로 설정됩니다.
-
 ('cf' 명령을 참조하십시오.)
 
-
-
 [next]
 
-
-
 프로그램 단계를 진행하여 서브루틴 호출의 전 과정을 실행합니다.
-
   next
-
     단계를 한 번만 진행합니다.
-
   next 3
-
     단계를 세 번 진행하거나 다른 이유로 프로그램이 중지될 때까지 
-
     진행합니다.
-
 서브루틴 호출이 발생하지 않으면 'step' 명령처럼 진행되지만 
-
 서브루틴 호출이 발생하면 이 호출이 하나의 명령으로 처리됩니다.
 
-
-
 [print]
 
-
-
 변수 또는 표현식 값을 인쇄합니다.
-
 예:
-
   print i
-
     'i' 값을 인쇄합니다.
-
   print employee.name
-
     'employee.name' 값을 인쇄합니다.
-
   print employee
-
     'employee' 객체 값을 인쇄합니다.
-
     이 명령을 실행하면 [Object 10378]과 비슷한 형식으로만 정보가 
-
     표시될 수 있습니다.
-
   print employee.
-
     'employee' 객체의 모든 속성 값을 인쇄합니다.
-
   print *employee
-
     'employee' 객체의 모든 속성 값을 인쇄합니다.
-
     접두어 * 연산자는 접미어 . 연산자 대신 사용되는 접두어입니다.
-
   print #10378.
-
     #10378 객체의 모든 속성 값을 인쇄합니다.
-
 액세스 가능한 변수에는 선택한 스택 프레임의 어휘 환경에 
-
 대한 변수 외에도, 범위가 전역이거나 전체 파일인 모든 변수가 
-
 해당됩니다.
 
-
-
 [pwd]
 
-
-
 현재 작업 디렉토리를 인쇄합니다.
-
 이 디렉토리는 fdb가 시작된 디렉토리로, fdb 내에서 
-
 변경되지 못합니다.
-
 이 디렉토리를 기준으로 'run' 및 'source'에 대한 인수를 
-
 지정할 수 있습니다.
-
 이 명령에는 인수가 필요하지 않습니다.
 
-
-
 [quit]
 
-
-
 fdb를 종료합니다.
-
 이 명령에는 인수가 필요하지 않습니다.
 
-
-
 [run]
 
-
-
 디버깅 세션을 시작합니다.
-
 예:
-
   run http://www.mysite.com/myapp.mxml
-
     지정한 MXML 응용 프로그램을 실행합니다.
-
   run myapp.swf
-
   run mydir\myapp.swf
-
   run c:\mydir\myapp.swf
-
     로컬 SWF 파일인 myapp.swf를 실행합니다. 이 파일은 현재 
-
     디렉토리('pwd' 명령 참조)를 기준으로 한 상대 경로 또는 
-
     절대 경로를 지정할 수도 있습니다. 이러한 경우 myapp.swf가 있는 
-
     디렉토리에 myapp.swd(디버깅 정보가 포함된 파일)도 있어야
-
     합니다.
-
   run
-
     이전에 'file' 명령으로 지정한 응용 프로그램을 실행합니다.
-
     지정한 응용 프로그램이 없으면 fdb에서 한 응용 프로그램이 
-
     연결되기를 기다립니다. 연결되는 응용 프로그램이 없으면 
-
     연결 시간이 초과됩니다.
-
 'run'을 실행하면 브라우저 또는 독립 실행형 Flash Player에서 
-
 응용 프로그램이 시작됩니다.
-
 응용 프로그램이 시작되면 즉시 fdb로 연결되기 때문에, 
-
 사용자가 중단점 등을 설정할 수 있습니다.
 
-
-
 Macintosh에서는 인수가 없는 'run' 명령만 실행할 수 있습니다.
-
 그런 다음 수동으로 Flash Player를 시작해야 합니다.
 
-
-
 [set]
 
-
-
 변수 또는 편리 변수 값을 설정합니다.
-
 편리 변수는 fdb 전체에 존재하는 변수로, 프로그램의 일부가 아닙니다.
-
 편리 변수에는 '$'가 접두어로 지정되고 기존 변수와 충돌하지 
-
 않는다면 어떤 이름이든 지정할 수 있습니다. 예를 들어 $myVar로 
-
 지정할 수 있습니다. 편리 변수는 fdb의 다양한 면을 제어하는 
-
 데에도 사용됩니다.
 
-
-
 다음은 fdb에서 사용되는 편리 변수입니다.
-
 $listsize          - '목록'에 표시할 소스 행 수
-
 $columnwrap        - 줄 바꿈하여 출력할 열 번호
-
 $infostackshowthis - 0인 경우 스택 역추적에 '이 정보'가 표시되지 않음
-
 $invokegetters     - 0인 경우 fdb에서 getter 함수가 실행되지 않음
-
 $bpnum             - 마지막으로 정의된 중단점 번호
-
 $displayattributes - 1인 경우 'print var.'를 실행하면 'var' 구성원의 
-
                      모든 특성(예: 전용, 정적)이 표시됨
 
-
-
 예:
-
   set i = 3
-
     변수 'i'를 숫자 3으로 설정합니다.
-
   set employee.name = "Susan"
-
     변수 'employee.name'을 문자열 "Susan"으로 설정합니다.
-
   set $myVar = 20
-
     편리 변수 '$myVar'를 숫자 20으로 설정합니다.
 
-
-
 [show]
 
-
-
 fdb 상태에 대한 정보를 표시하는 데 사용되는 일반 명령입니다.
-
 show 하위 명령 목록:
-
 show break (sh b)       일시 중단된 실행 위치 및 이유
-
 show directories (sh d) 소스 파일을 검색할 디렉토리
-
 show files (sh f)       대상 파일 및 경로
-
 show functions (sh fu)  함수 행 매핑 정보
-
 show locations (sh l)   중단점 위치
-
 show memory (sh m)      현재 메모리 사용
-
 show net (sh n)         플레이어 메시지 통계
-
 show properties (sh p)  속성 값
-
 show uri (sh u)         이 세션 플레이어의 URI
-
 show variable (sh v)    원시 변수 검색
-
 전체 설명서를 보려면 'help show'를 입력한 다음 show 하위 명령 
-
 이름을 입력합니다.
 
-
-
 [show break]
 
-
-
 SWF 내에서 프로그램이 중단된 오프셋을 표시합니다.
 
-
-
 [show directories]
 
-
-
 소스 파일을 찾을 현재 검색 경로를 표시합니다.
 
-
-
 [show files]
 
-
-
 모든 대상 파일의 파일 이름과 경로를 표시합니다.
 
-
-
 [show functions]
 
-
-
 함수와 행 번호 간의 매핑 정보를 표시합니다.
-
 예:
-
   show functions .
-
     현재 파일의 모든 함수에 대한 매핑 정보를 표시합니다.
-
   show functions myapp.mxml
-
     myapp.mxml의 모든 함수에 대한 매핑 정보를 표시합니다.
-
   show functions #3
-
     파일 #3의 모든 함수에 대한 매핑 정보를 표시합니다.
-
   show functions
-
     모든 파일의 모든 함수에 대한 매핑 정보를 표시합니다.
-
 파일 이름 및 번호를 보려면 'info sources' 또는 'info files'를 
-
 실행합니다.
-
 축약된 파일 이름이 모호하지 않다면 축약된 이름을 
-
 사용할 수 있습니다.
 
-
-
 [show locations]
 
-
-
 각 중단점에 설정된 위치 목록을 표시합니다.
 
-
-
 [show memory]
 
-
-
 Java VM 메모리 통계를 표시합니다.
 
-
-
 [show net]
 
-
-
 Flash Player로 보내거나 Flash Player로부터 받은 메시지에 대한 
-
 정보를 표시합니다.
 
-
-
 [show properties]
 
-
-
 디버거 내에 사용된 편리 변수 목록을 표시합니다.
 
-
-
 [show uri]
 
-
-
 이 세션과 관련해 플레이어에서 보낸 URI를 표시합니다.
 
-
-
 [show variable]
 
-
-
 변수의 구성원 값을 표시합니다. 매개 변수 두 개가 필요합니다.
-
 하나는 숫자 변수 식별자이고 또 하나는 변수에 대한 속성 이름입니다.
-
 편리 변수 $invokegetters는 getter 속성이 있는 경우 이 속성을 
-
 실행할지 결정하는 데 사용됩니다.
-
 예:
-
     show variable 1 __proto__
 
-
-
 [show ?]
 
-
-
 정의되지 않은 show 명령입니다. 'help show'를 실행해 보십시오.
 
-
-
 [source]
 
-
-
 파일에서 fdb 명령을 읽고 실행합니다.
-
   source mycommands.txt
-
   source mydir\mycommands.txt
-
   source c:\mydir\mycommands.txt
-
     mycommands.txt를 읽고 그 안의 fdb 명령을 실행합니다.
-
     명령이 포함된 파일은 현재 디렉토리('pwd' 명령 참조)를 
-
     기준으로 한 상대 경로 또는 절대 경로를 지정할 수 있습니다.
-
 fdb를 시작하면 이런 방식으로 .fdbinit 파일을 자동으로 읽습니다.
-
 .fdbinit의 현재 디렉토리만 검색됩니다. 따라서 서로 다른 
-
 프로젝트에 대해 여러 .fdbinit 파일을 설정할 수 있습니다.
 
-
-
 [step]
 
-
-
 다른 소스 행에 도달할 때까지 프로그램 단계를 진행합니다.
-
 예:
-
   step
-
     단계를 한 번만 진행합니다.
-
   step 3
-
     단계를 세 번 진행하거나 다른 이유로 프로그램이 중지될 
-
     때까지 진행합니다.
 
-
-
 [tutorial]
 
-
-
 fdb 사용 방법에 대한 자습서를 표시합니다.
-
 이 명령에는 인수가 필요하지 않습니다.
 
-
-
 [Tutorial]
 
-
-
 일반적인 fdb 세션:
-
 'run'으로 응용 프로그램을 시작합니다.
-
 'info sources'로 파일 이름을 봅니다.
-
 'list'로 파일을 나열합니다.
-
 'break'로 중단점을 설정합니다.
-
 중단점에 도달할 때까지 'continue'로 프로그램을 실행합니다.
-
 'where', 'print', 'info locals'로 프로그램 상태를 검사합니다.
-
 'next', 'step', 'finish'로 개별 명령문을 실행합니다.
-
 'continue'로 실행을 다시 시작합니다.
-
 'quit'로 fdb를 종료합니다.
 
-
-
 [undisplay]
 
-
-
 자동 표시 표현식을 하나 이상 제거합니다.
-
 예:
-
   undisplay
-
     자동 표시 표현식을 모두 제거합니다.
-
   undisplay 2 7
-
     자동 표시 표현식 #2과 #7을 제거합니다.
-
 자동 표시 표현식 및 해당 번호 목록을 보려면 'info display'를 
-
 실행합니다.
 
-
-
 [up]
 
-
-
 이 명령을 호출하는 스택 프레임을 선택한 후 인쇄합니다.
-
 이 명령 뒤에 'info arguments' 및 'info locals' 명령을 사용하면 
-
 선택한 프레임의 로컬 및 인수가 표시됩니다.
-
 'down' 및 'frame'을 참조하십시오.
 
-
-
 [viewswf]
 
-
-
 swf 이름을 기준으로 파일을 나열하는 필터(즉: 'info files' 
-
 및 'info sources')를 설정하거나 지웁니다.
-
 매개 변수가 없으면 모든 파일이 표시됩니다. 같은 파일이 
-
 하나 이상의 swf에 있으면 해당 파일의 첫 번째 인스턴스만 
-
 목록에 표시됩니다. 파일의 다른 인스턴스에 액세스하려면
-
 파일 번호(예: 'list #192')를 사용하거나 이 명령을 매개 변수
-
 (아래 참조)와 함께 사용합니다. 그러면 특정 swf 파일이 
-
 표시됩니다. 매개 변수 하나, 즉 'info swfs' 명령을 통해 표시되는 
-
 swf 이름을 사용하면 지정한 swf 파일만 파일 목록에 표시됩니다.
-
 다른 swf 파일은 표시되지 않습니다. 이 명령은 파일을 
-
 매개 변수로 사용할 수 있는 명령(예: 'break')에도 영향을 줍니다.
-
 예:
-
   viewswf myApp.mxml.swf
-
     myApp.mxml.swf 파일만 표시됩니다.
-
   viewswf
-
     모든 swf 파일이 모두 표시됩니다.
 
-
-
 [watch]
 
-
-
 지정된 변수에 대한 감시점을 추가합니다. 변수 값이 변경되면 
-
 디버거가 실행을 중단합니다.
-
 예:
-
   watch foo
 
-
-
 [what]
 
-
-
 변수가 확인된 컨텍스트를 표시합니다.
 
-
-
 [where]
 
-
-
 스택 역추적입니다.
 
-
-
 [zzz]
 
-
-
 ((( 이 미사용 항목을 파일의 마지막으로 유지하면 )))
-
 ((( 마지막 두 번째 항목을 제대로 구문 분석할 수 있습니다.)))
 
-
-


[03/15] FLEX-34291: Merge the donated FDB with the current one.

Posted by ft...@apache.org.
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_nl.txt
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_nl.txt b/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_nl.txt
index 13f3bee..5949e02 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_nl.txt
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_nl.txt
@@ -1,4 +1,4 @@
-
+    
       Licensed to the Apache Software Foundation (ASF) under one or more
       contributor license agreements.  See the NOTICE file distributed with
       this work for additional information regarding copyright ownership.
@@ -14,1741 +14,873 @@
       See the License for the specific language governing permissions and
       limitations under the License.
 
-This file contains the text displayed by the 'help' command in fdb.
-
-
-
-It is divided into "topics". For example, when an fdb user types
-
-'help break', the [break] topic below is displayed.
-
-
-
-The first and last lines of each topic should be blank.
-
-They don't get displayed in fdb; they are here only
-
-to make this file more easily readable.
-
-
-
-Help text should be formatted to not wrap
-
-when displayed on an 80-character-wide console.
-
-The following line is 80 characters wide.
-
-
-
---------------------------------------------------------------------------------
-
-
-
-[?]
-
-
-
-Niet-gedefinieerde opdracht. Voer alleen "help" in voor een lijst met alle 
-
-fdb-opdrachten.
-
-
-
-[break]
-
-
-
-Een onderbrekingspunt instellen op de opgegeven regel of functie.
-
-Voorbeelden:
-
-  break 87
-
-    Hiermee wordt een onderbrekingspunt ingesteld op regel 87 van het huidige 
-
-    bestand.
-
-  break myapp.mxml:56
-
-    Hiermee wordt een onderbrekingspunt ingesteld op regel 56 van myapp.mxml.
-
-  break #3:29
-
-    Hiermee wordt een onderbrekingspunt ingesteld op regel 29 van bestand #3.
-
-  break doThis
-
-    Hiermee wordt een onderbrekingspunt ingesteld bij de functie doThis() in 
-
-    het huidige bestand.
-
-  break myapp.mxml:doThat
-
-    Hiermee wordt een onderbrekingspunt ingesteld bij de functie doThat() in 
-
-    het bestand myapp.mxml.
-
-  break #3:doOther
-
-    Hiermee wordt een onderbrekingspunt ingesteld bij de functie doOther() in 
-
-    bestand #3.
-
-  break
-
-   Hiermee wordt een onderbrekingspunt ingesteld op het uitvoeradres in het 
-
-   stackframe. Dit is handig voor onderbreking bij terugkeer naar een 
-
-   stackframe.
-
-Voer "info sources" of "info files" in voor een overzicht van bestandsnamen en 
-
-nummers.
-
-Voer "info functions" in voor functienamen.
-
-Afgekorte bestandsnamen en functienamen worden geaccepteerd als ze eenduidig 
-
-zijn.
-
-Bij opgave van een regelnummer wordt aan het begin van de code voor die regel 
-
-onderbroken.
-
-Bij opgave van een functie wordt aan het begin van de code voor die functie 
-
-onderbroken.
-
-Zie "commands" en "condition" voor meer controle over onderbrekingspunten.
-
-
-
-[bt]
-
-
-
-Backtrace van de stack.
-
-
-
-[catch]
-
-
-
-Stoppen wanneer er een uitzondering optreedt.  Dit heeft alleen gevolgen voor 
-
-afgevangen uitzonderingen, ofwel uitzonderingen die door een "catch"-blok 
-
-worden verwerkt.  Niet-afgevangen uitzonderingen stoppen altijd in het
-
-foutopsporingsprogramma.
-
-
-
-Gebruik de opdracht "verwijderen" om een catch-punt te verwijderen.
-
-
-
-Voorbeelden:
-
-  catch *
-
-    Hiermee wordt gestopt bij elke uitzondering die er optreedt.
-
-  catch ReferenceError
-
-    Hiermee wordt gestopt wanneer er een ReferenceError optreedt, al dan niet 
-
-    afgevangen.
-
-
-
-[cf]
-
-
-
-De naam en het nummer van het huidige bestand weergeven of het huidige bestand 
-
-veranderen.
-
-Voorbeelden:
-
-  cf
-
-    Hiermee wordt de naam en het nummer van het huidige bestand weergegeven.
-
-  cf myapp.mxml
-
-    Hiermee wordt het huidige bestand veranderd in myapp.mxml.
-
-  cf #29
-
-    Hiermee wordt het huidige bestand veranderd in bestand #29.
-
-Voer "info sources" of "info files" in voor een overzicht van bestandsnamen en 
-
-nummers.
-
-Afgekorte bestandsnamen worden geaccepteerd als ze eenduidig zijn.
-
-Wanneer u een bestand met "list" vermeldt, wordt dat bestand eveneens het 
-
-huidige bestand.
-
-
-
-[clear]
-
-
-
-Een onderbrekingspunt op een opgegeven regel of bij een functie wissen.
-
-Voorbeelden:
-
-  clear 87
-
-    Hiermee wordt het onderbrekingspunt op regel 87 uit het huidige bestand 
-
-    gewist.
-
-  clear myapp.mxml:56
-
-    Hiermee wordt het onderbrekingspunt op regel 56 van myapp.mxml gewist.
-
-  clear #3:29
-
-    Hiermee wordt het onderbrekingspunt op regel 29 van bestand #3 gewist.
-
-  clear doThis
-
-    Hiermee wordt het onderbrekingspunt bij de functie doThis() uit het huidige 
-
-    bestand gewist.
-
-  clear myapp.mxml:doThat
-
-    Hiermee wordt het onderbrekingspunt bij de functie doThat() uit het bestand 
-
-    myapp.mxml gewist.
-
-  clear #3:doOther
-
-    Hiermee wordt het onderbrekingspunt bij de functie doOther() uit bestand #3 
-
-    gewist.
-
-  clear
-
-    Hiermee wordt het onderbrekingspunt op de huidige regel uit het huidige 
-
-    bestand gewist. 
-
-Voer "info sources" of "info files" in voor een overzicht van bestandsnamen en 
-
-nummers.
-
-Voer "info functions" in voor functienamen.
-
-Afgekorte bestandsnamen en functienamen worden geaccepteerd als ze eenduidig 
-
-zijn.
-
-Als het regelnummer is opgegeven, worden alle onderbrekingspunten van die regel 
-
-verwijderd.
-
-Als een functie is opgegeven, worden onderbrekingspunten aan het begin van de 
-
-functie verwijderd.
-
-
-
-[continue]
-
-
-
-De uitvoering voortzetten nadat gestopt is bij het onderbrekingspunt.
-
-Deze opdracht heeft geen argumenten.
-
-
-
-[condition]
-
-
-
-
-
-Nummer N van onderbrekingspunt opgeven om alleen te onderbreken als COND 
-
-waar is.
-
-Deze opdracht kan gebruikt worden als 'condition N COND' waarbij N een geheel 
-
-getal is en COND een expressie die telkens wanneer onderbrekingspunt N bereikt 
-
-wordt, moet worden geëvalueerd.
-
-
-
-[commands]
-
-
-
-Opdrachten instellen die moeten worden uitgevoerd wanneer een onderbrekingspunt 
-
-wordt bereikt.
-
-Geef het nummer van het onderbrekingspunt als argument op na "commands".
-
-Zonder argument is het beoogde onderbrekingspunt het laatst ingestelde.
-
-De opdrachten zelf volgen vanaf de volgende regel.
-
-Typ een regel die "end" bevat om het einde van de opdrachten aan te geven.
-
-Voer "silent" in als eerste regel om het onderbrekingspunt stil te maken; dit 
-
-betekent dat er behalve dat wat de opdrachten weergeven, geen uitvoer wordt 
-
-weergegeven.
-
-Voorbeeld:
-
-  (fdb) commands
-
-  Typ opdrachten die moeten worden uitgevoerd bij het bereiken van 
-
-  onderbrekingspunt 1, één per regel.
-
-  Eindig met een regel die alleen "end" bevat.
-
-  >w
-
-  >end
-
-
-
-[delete]
-
-
-
-Een of meer onderbrekingspunten verwijderen.
-
-Voorbeelden:
-
-  delete
-
-    Hiermee worden alle onderbrekingspunten verwijderd.
-
-  delete 2 5
-
-    Hiermee worden de onderbrekingspunten #2 en #5 verwijderd.
-
-Voer "info breakpoints" in als u de nummers van de onderbrekingspunten wilt 
-
-zien.
-
-
-
-[directory]
-
-
-
-De lijst met mappen waarin fdb naar bronbestanden zoekt, wijzigen.
-
-
-
-Voorbeelden:
-
-
-
-  directory
-
-    Hiermee wordt de standaardlijst hersteld, bestaande uit de map waarin het 
-
-    bronbestand is gecompileerd naar objectcode, gevolgd door de huidige 
-
-    werkmap.
-
-
-
-  directory C:\MySource        (Windows)
-
-  directory /MySource          (Mac)
-
-    Hiermee wordt de opgegeven map toegevoegd aan het begin van de lijst met 
-
-    mappen waarin naar de bron wordt gezocht.  Bij het zoeken naar de bron voor 
-
-    de klasse mypackage.MyClass zal het foutopsporingsprogramma bijvoorbeeld 
-
-    zoeken naar zowel C:\MySource\mypackage\MyClass.as als 
-
-    C:\MySource\MyClass.as.
-
-
-
-  directory C:\Dir1;C:\Dir2    (Windows -- gebruik ';' als scheidingsteken)
-
-  directory /Dir1:/Dir2        (Mac -- gebruik ':' als scheidingsteken)
-
-    Hiermee worden verschillende mappen toegevoegd aan het begin van de lijst 
-
-    met mappen waarin naar de bron wordt gezocht.
-
-
-
-Gebruik "show directories" voor een overzicht van de huidige lijst.
-
-
-
-[disable]
-
-
-
-Een of meer onderbrekingspunten of automatisch weergegeven expressies 
-
-uitschakelen.
-
-Voorbeelden:
-
-  disable
-
-  disable breakpoints
-
-    Hiermee worden alle onderbrekingspunten uitgeschakeld.
-
-  disable 2 5
-
-  disable breakpoints 2 5
-
-    Hiermee worden de onderbrekingspunten #2 en #5 uitgeschakeld.
-
-  disable display
-
-    Hiermee worden alle automatisch weergegeven expressies uitgeschakeld.
-
-  disable display 1 3
-
-    Hiermee worden automatisch weergegeven expressies #1 en #3 uitgeschakeld.
-
-Voer "info breakpoints" in als u de nummers van de onderbrekingspunten wilt 
-
-zien.
-
-Voer "info display" in als u de nummers van de automatisch weergegeven 
-
-expressies wilt zien.
-
-
-
-[disassemble]
-
-
-
-(Alleen ActionScript 2; wordt niet ondersteund bij de foutopsporing van 
-
-ActionScript 3)
-
-
-
-Disassembleer een opgegeven deel van de broncode.
-
-De standaardinstelling is de huidige regel in de lijst.
-
-De ondersteunde argumenten zijn dezelfde als bij de lijstopdracht
-
-Voorbeelden:
-
-  disassemble 87
-
-    Hiermee wordt regel 87 in het huidige bestand gedisassembleerd.
-
-  disassemble 87 102
-
-    Hiermee worden de regels 87 tot 102 in het huidige bestand 
-
-    gedisassembleerd.
-
-  disassemble doThis
-
-      Hiermee wordt de functie doThis() in het huidige bestand gedisassembleerd.
-
-Behalve eenvoudige regelnummers zoals hierboven kunt u ook op andere manieren 
-
-regels opgeven:
-
-   myapp.mxml
-
-      Regel 1 in myapp.mxml.
-
-   myapp.mxml:doThat
-
-      De eerste regel van de functie doThat() in myapp.mxml.
-
-   myapp.mxml:56
-
-      Regel 56 in myapp.mxml.
-
-   #3
-
-      Regel 1 in bestand #3.
-
-   #3:doOther
-
-      De regel in bestand #3 waar de functie doOther() begint.
-
-   #3:29
-
-      Regel 29 in bestand #3.
-
-
-
-[display]
-
-
-
-Een expressie toevoegen aan de lijst met automatisch weergegeven expressies.
-
-Voorbeeld:
-
-  display employee.name
-
-    Voeg 'employee.name' toe aan de lijst met automatisch weergegeven 
-
-    expressies.
-
-    Telkens wanneer fdb stopt, wordt de waarde van employee.name weergegeven.
-
-Het argument voor deze opdracht is hetzelfde als dat voor 'print'.
-
-Voer "info display" in als u de lijst en de nummers van de automatisch 
-
-weergegeven expressies wilt zien.
-
-
-
-[down]
-
-
-
-Het stackframe selecteren dat hierdoor wordt aangeroepen en deze afdrukken.
-
-De volgende opdrachten 'info arguments' en 'info locals' tonen de lokale 
-
-variabelen en argumenten van het geselecteerde frame.
-
-Zie 'up' en 'frame' 
-
-
-
-[enable]
-
-
-
-Een of meer onderbrekingspunten of automatisch weergegeven expressies 
-
-inschakelen.
-
-Voorbeelden:
-
-  enable
-
-  enable breakpoints
-
-    Hiermee worden alle onderbrekingspunten ingeschakeld.
-
-  enable 2 5
-
-  enable breakpoints 2 5
-
-    Hiermee worden de onderbrekingspunten #2 en #5 ingeschakeld.
-
-  enable display
-
-    Hiermee worden alle automatisch weergegeven expressies ingeschakeld.
-
-  enable display 1 3
-
-    Hiermee worden automatisch weergegeven expressies #1 en #3 ingeschakeld.
-
-Voer "info breakpoints" in als u de nummers van de onderbrekingspunten wilt 
-
-zien.
-
-Voer "info display" in als u de nummers van de automatisch weergegeven 
-
-expressies wilt zien.
-
-
-
-[file]
-
-
-
-Een toepassing opgeven waarin u fouten wilt opsporen zonder deze te starten.
-
-Voorbeelden:
-
-  file http://www.mysite.com/myapp.mxml
-
-    Geef een MXML-toepassing op om fouten in op te sporen.
-
-  file myapp.swf
-
-    Geef een lokaal SWF-bestand in de huidige map op voor foutopsporing.
-
-    In dit geval moet myapp.swd (het bestand dat de foutopsporingsinformatie 
-
-    bevat) ook in de huidige map staan.
-
-Met deze opdracht wordt de toepassing echter niet gestart; daarvoor gebruikt u 
-
-de opdracht 'run' zonder argumenten.
-
-In plaats van 'file <doel>' en 'run' te gebruiken, kunt u de toepassing waarin 
-
-u fouten wilt opsporen ook opgeven als argument van 'run':
-
-  run http://mysite.com/myapp.mxml
-
-  run myapp.swf
-
-U kunt de toepassing waarin u fouten wilt opsporen ook opgeven als argument van 
-
-een opdrachtregel bij het starten van fdb:
-
-  fdb http://www.mysite.com/myapp.mxml
-
-  fdb myapp.swf
-
-In dit geval hoeft u 'file' of 'run' niet te gebruiken.
-
-Als u 'run' invoert zonder een toepassing op te geven waarin u de fouten wilt 
-
-opsporen, wacht fdb tot een toepassing er verbinding mee maakt.
-
-
-
-[finish]
-
-
-
-Uitvoering voortzetten totdat de huidige functie terugkeert.
-
-Deze opdracht heeft geen argumenten.
-
-
-
-[frame]
-
-
-
-Een bepaald stackframe selecteren en afdrukken.
-
-Deze optie heeft als optioneel argument een framenummer.
-
-Zonder argument is de standaardactie terugkeren naar het huidige topframe 
-
-(d.w.z. frame 0).
-
-Voorbeelden:
-
-  frame 4
-
-  frame
-
-De volgende opdrachten 'info arguments' en 'info locals' tonen de lokale 
-
-variabelen en argumenten van het geselecteerde frame.
-
-Zie 'up', 'down' en 'bt' 
-
-
-
-[handle]
-
-
-
-Aangeven hoe fdb een fout in Flash Player moet afhandelen.
-
-Voorbeelden:
-
-  handle recursion_limit stop
-
-    Als de fout recursion_limit zich voordoet, toont fdb een bericht en stopt 
-
-    alsof het om een onderbrekingspunt gaat.
-
-  handle all print nostop
-
-    Als er een willekeurige fout optreedt, toont fdb een bericht zonder te 
-
-    stoppen.
-
-Het eerste argument is een foutnaam of 'all'.
-
-Overige argumenten zijn handelingen die betrekking hebben op die fout.
-
-Voer 'info handle' in voor foutnamen.
-
-Acties zijn print/noprint en stop/nostop.
-
-'print' betekent een bericht weergeven als er een fout optreedt.
-
-'stop' betekent teruggaan naar het foutopsporingsprogramma als deze fout 
-
-optreedt. Impliceert 'print'.
-
-
-
-[help]
-
-
-
-Nieuw bij fdb? Voer 'tutorial' in voor basisinfo.
-
-Lijst met fdb-opdrachten:
-
-bt (bt)             Een backtrace van alle stackframes weergeven
-
-break (b)           Een onderbrekingspunt instellen op een opgegeven regel of 
-
-                    bij een functie
-
-catch (ca)          Stoppen wanneer er een uitzondering optreedt
-
-cf (cf)             De naam en het nummer van het huidige bestand weergeven
-
-clear (cl)          Een onderbrekingspunt van een opgegeven regel of functie 
-
-                    wissen
-
-condition (cond)    Een voorwaardelijke expressie toevoegen aan of verwijderen 
-
-                    van een onderbrekingspunt
-
-continue (c)        Uitvoering voortzetten nadat gestopt is bij het 
-
-                    onderbrekingspunt
-
-commands (com)      Hiermee worden opdrachten ingesteld die worden uitgevoerd 
-
-                    wanneer het onderbrekingspunt bereikt wordt
-
-delete (d)          Alle onderbrekingspunten of automatisch weergegeven 
-
-                    expressies verwijderen
-
-directory (dir)     Een map toevoegen aan het zoekpad voor bronbestanden
-
-disable (disab)     Alle onderbrekingspunten of automatisch weergegeven 
-
-                    expressies uitschakelen
-
-disassemble (disas) Bronregels of functies disassembleren
-
-display (disp)      Een automatisch weergegeven expressie toevoegen
-
-enable (e)          Alle onderbrekingspunten of automatisch weergegeven 
-
-                    expressies inschakelen
-
-file (fil)          De toepassing opgeven waarin fouten moeten worden 
-
-                    opgespoord.
-
-finish (f)          Uitvoering voortzetten totdat de huidige functie terugkeert
-
-handle (han)        Opgeven hoe een fout moet worden verwerkt
-
-help (h)            Help weergeven voor fdb-opdrachten
-
-home (ho)           De locatie van de lijst instellen op het punt waar de 
-
-                    uitvoering is gestopt
-
-info (i)            Informatie weergeven over het programma waarin fouten 
-
-                    worden opgespoord
-
-kill (k)            Uitvoering stoppen van het programma waarin fouten worden 
-
-                    opgespoord
-
-list (l)            De opgegeven functie of regel weergeven
-
-next (n)            Stapsgewijs programma
-
-print (p)           De waarde van variabele EXP weergeven
-
-pwd (pw)            De werkmap weergeven
-
-quit (q)            Fdb afsluiten
-
-run (r)             Het programma starten waarin de fouten zijn opgespoord
-
-set (se)            De waarde van een variabele instellen
-
-source (so)         Fdb-opdrachten lezen vanuit een bestand
-
-step (s)            Stap voor stap het programma doorlopen totdat er een andere 
-
-                    bronregel bereikt wordt
-
-tutorial (t)        Een zelfstudie over het gebruik van fdb weergeven
-
-undisplay (u)       Een automatisch weergegeven expressie verwijderen
-
-viewswf (v)         Een filter instellen voor de bestandsweergave op basis van 
-
-                    swf of deze verwijderen
-
-watch (wa)          Een controlepunt toevoegen aan een gegeven variabele
-
-what (wh)           De context van een variabele weergeven
-
-where (w)           Gelijk aan bt
-
-Typ 'help' gevolgd door de naam van de opdracht voor de volledige documentatie.
-
-
-
-[home]
-
-
-
-De locatie van de lijst instellen op het punt waar de uitvoering is gestopt.
-
-
-
-[info]
-
-
-
-Generieke opdracht voor het weergeven van informatie over het programma waarin 
-
-fouten worden opgespoord.
-
-Lijst met subopdrachten voor informatie:
-
-info arguments (i a)    Argumentvariabelen van het huidige stackframe
-
-info breakpoints (i b)  Status van onderbrekingspunten die door gebruiker 
-
-                        kunnen worden ingesteld
-
-info display (i d)      Een lijst met automatisch weergegeven expressies tonen
-
-info files (i f)        Namen van doelen en bestanden waarin fouten worden 
-
-                        opgespoord
-
-info functions (i fu)   Alle functienamen
-
-info handle (i h)       Hoe verwerkt u een fout
-
-info locals (i l)       Lokale variabelen van het huidige stackframe
-
-info scopechain (i sc)  Bereikketen van het huidige stackframe
-
-info sources (i so)     Bronbestanden in het programma
-
-info stack (i s)        Backtrace van de stack
-
-info swfs (i sw)        Lijst met swf's in deze sessie
-
-info targets(i t)       Toepassing waarin fouten worden opgespoord
-
-info variables (i v)    Alle globale en statische namen van variabelen
-
-Typ 'help info' gevolgd door de naam van de subopdracht voor de volledige 
-
-documentatie.
-
-
-
-[info arguments]
-
-
-
-Argumenten van het huidige stackframe weergeven.
-
-
-
-[info breakpoints]
-
-
-
-De status van alle onderbrekingspunten en controlepunten weergeven.
-
-De kolom Type geeft één van de volgende punten aan:
-
-   breakpoint   - normaal onderbrekingspunt
-
-   watchpoint   - controlepunt
-
-De kolom Disp bevat een van de waarden 'keep', 'del' of 'dis' om de verwerking 
-
-van het onderbrekingspunt aan te geven nadat dit is bereikt. 'dis' betekent dat 
-
-het onderbrekingspunt wordt uitgeschakeld en 'del' betekent dat het wordt 
-
-gewist.  
-
-De kolommen 'Address' en 'What' geven respectievelijk het adres en het 
-
-bestand/regelnummer aan. 
-
-
-
-[info display]
-
-
-
-Een lijst met automatisch weergegeven expressies en hun nummers tonen.
-
-
-
-[info files]
-
-
-
-Namen en nummers van de bestanden weergeven voor de toepassing waarin fouten 
-
-worden opgespoord, waaronder bronbestanden, framework-bestanden en automatisch 
-
-gegenereerde bestanden.
-
-Voorbeelden:
-
-  info files
-
-    Hiermee wordt een alfabetisch overzicht weergegeven, gerangschikt op categorie
-
-  info files my
-
-  info files my*
-
-    Hiermee wordt een alfabetisch overzicht weergegeven van alle bestanden 
-
-    waarvan de namen met "my" beginnen.
-
-  info files *.as
-
-    Hiermee wordt een alfabetisch overzicht weergegeven van alle bestanden 
-
-    waarvan de namen op ".as" eindigen.
-
-  info files *foo*
-
-    Hiermee wordt een alfabetisch overzicht weergegeven van alle bestanden 
-
-    waarvan de naam "foo" bevat. 
-
-Bestanden worden weergegeven in de indeling naam#N, waarbij N het 
-
-bestandsnummer is.
-
-In veel opdrachten kunt u #N in plaats van een bestandsnaam gebruiken.
-
-
-
-[info functions]
-
-
-
-Functienamen weergeven
-
-Voorbeelden:
-
-  info functions .
-
-    Hiermee worden alle functies in het huidige bestand weergegeven.
-
-  info functions myapp.mxml
-
-    Hiermee worden alle functies in myapp.mxml weergegeven.
-
-  info functions #3
-
-    Hiermee worden alle functies in bestand #3 weergegeven.
-
-  info functions
-
-    Hiermee worden alle functies in alle bestanden weergegeven.
-
-Voer "info sources" of "info files" in voor een overzicht van bestandsnamen en 
-
-nummers.
-
-Afgekorte bestandsnamen worden geaccepteerd als ze eenduidig zijn.
-
-
-
-[info handle]
-
-
-
-Aangeven wat fdb doet als er een fout in Flash Player optreedt.
-
-Voorbeelden:
-
-  info handle
-
-    Hiermee wordt aangegeven hoe fdb alle fouten afhandelt.
-
-  info handle recursion_limit
-
-    Hiermee wordt aangegeven hoe fdb de fout recursion_limit afhandelt.
-
-
-
-[info locals]
-
-
-
-Lokale variabelen van het huidige stackframe weergeven.
-
-
-
-[info scopechain]
-
-
-
-De bereikketen van het huidige stackframe weergeven.  De bereikketen is de 
-
-lijst met objecten die wordt doorzocht als Flash Player een symboolnaam 
-
-probeert op te halen.
-
-
-
-[info sources]
-
-
-
-Namen en nummers van de bronbestanden weergeven voor de toepassing waarin 
-
-fouten worden opgespoord. Framework-bestanden en automatisch gegenereerde 
-
-bestanden worden uitgesloten.
-
-Bestanden worden weergegeven in de indeling naam#N, waarbij N het 
-
-bestandsnummer is.
-
-In veel opdrachten kunt u #N in plaats van een bestandsnaam gebruiken.
-
-
-
-[info stack]
-
-
-
-Backtrace van de stack.
-
-
-
-[info swfs]
-
-
-
-Swf's weergeven die in de opsporingssessie bekend zijn.  Zie de opdracht 
-
-'viewswf' voor details over hoe het bestandsoverzicht kan worden gefilterd aan 
-
-de hand van de swf-naam. 
-
-
-
-[info targets]
-
-
-
-De URL (http: of file:) weergeven van de toepassing waarin fouten worden 
-
-opgespoord.
-
-
-
-[info variables]
-
-
-
-De namen en waarden van alle globale en statische variabelen weergeven.
-
-
-
-[info ?]
-
-
-
-Opdracht niet-gedefinieerde info. Probeer 'help info'.
-
-
-
-[kill]
-
-
-
-Het uitvoeren van het programma waarin fouten worden opgespoord, beëindigen.
-
-Deze opdracht heeft geen argumenten.
-
-
-
-[list]
-
-
-
-Coderegels vermelden in een bronbestand.
-
-Voorbeelden:
-
-  list
-
-    Hiermee worden tien extra regels weergegeven in het huidige bestand achter 
-
-    of rond de vorige lijst.
-
-  list -
-
-    Hiermee worden de tien regels weergegeven in het huidige bestand voor een 
-
-    eerdere lijst.
-
-  list 87
-
-    Hiermee worden tien regels weergegeven in het huidige bestand rond regel 87.
-
-  list 87 102
-
-    Hiermee worden de regels 87 tot 102 weergegeven in het huidige bestand.
-
-Behalve eenvoudige regelnummers zoals hierboven kunt u ook op zeven andere 
-
-manieren regels opgeven:
-
-  doThis
-
-      De eerste regel van de functie doThis() in het huidige bestand.
-
-   myapp.mxml
-
-      Regel 1 in myapp.mxml.
-
-   myapp.mxml:doThat
-
-      De eerste regel van de functie doThat() in myapp.mxml.
-
-   myapp.mxml:56
-
-      Regel 56 in myapp.mxml.
-
-   #3
-
-      Regel 1 in bestand #3.
-
-   #3:doOther
-
-      De regel in bestand #3 waar de functie doOther() begint.
-
-   #3:29
-
-      Regel 29 in bestand #3.
-
-Voer "info sources" of "info files" in voor een overzicht van bestandsnamen en 
-
-nummers.
-
-Voer "info functions" in voor functienamen.
-
-Afgekorte bestandsnamen en functienamen worden geaccepteerd als ze eenduidig 
-
-zijn.
-
-Wanneer u een bestand in de lijst vermeldt, wordt dat bestand het huidige 
-
-bestand. (Zie de opdracht 'cf'.)
-
-
-
-[next]
-
-
-
-Stap voor stap door het programma gaan om de aanroepen van subroutines te 
-
-doorlopen.
-
-  next
-
-    Ga één stap verder.
-
-  next 3
-
-    Ga drie stappen verder of tot het programma om een andere reden stopt.
-
-Net als bij de opdracht 'step' gaat u door totdat er geen subroutines meer 
-
-worden aangeroepen. Als dat toch gebeurt, wordt de aanroep als één instructie 
-
-verwerkt.
-
-
-
-[print]
-
-
-
-De waarde van variabelen of expressies weergeven.
-
-Voorbeelden:
-
-  print i
-
-    Hiermee wordt de waarde van 'i' weergegeven.
-
-  print employee.name
-
-    Hiermee wordt de waarde van 'employee.name' weergegeven.
-
-  print employee
-
-    Hiermee wordt de waarde van het Object 'employee' weergegeven.
-
-    Dit geeft mogelijk iets weer als [Object 10378].
-
-  print employee.
-
-    Hiermee worden de waarden van alle eigenschappen van het Object 'employee' 
-
-    weergegeven.
-
-  print *employee
-
-    Hiermee worden de waarden van alle eigenschappen van het Object 'employee' 
-
-    weergegeven.
-
-    Voorvoegsel * operator is het alternatief voor achtervoegsel . operator.
-
-  print #10378.
-
-    Hiermee worden de waarden van alle eigenschappen van Object #10378 
-
-    weergegeven.
-
-De toegankelijke variabelen zijn die in de lexicale omgeving van het 
-
-geselecteerde stackframe en die waarvan het bereik globaal of een volledig 
-
-bestand is.
-
-
-
-[pwd]
-
-
-
-De huidige werkmap weergeven.
-
-Dit is de map vanwaaruit fdb is gestart; het is niet mogelijk om deze binnen 
-
-fdb te wijzigen. Het argument voor 'run' en 'source' kan worden opgegeven voor 
-
-deze map.
-
-Deze opdracht heeft geen argumenten.
-
-
-
-[quit]
-
-
-
-Fdb afsluiten.
-
-Deze opdracht heeft geen argumenten.
-
-
-
-[run]
-
-
-
-Een foutopsporingssessie starten.
-
-Voorbeelden:
-
-  run http://www.mysite.com/myapp.mxml
-
-    Hiermee wordt de opgegeven MXML-toepassing uitgevoerd.
-
-  run myapp.swf
-
-  run mydir\myapp.swf
-
-  run c:\mydir\myapp.swf
-
-    Hiermee wordt het lokale SWF-bestand myapp.swf dat kan worden opgegeven, 
-
-    uitgevoerd hetzij met betrekking tot de huidige map (zie de opdracht 'pwd')
-
-    of door een absoluut pad te gebruiken. In deze gevallen moet myapp.swd (het 
-
-    bestand dat de opsporingsinformatie bevat) ook in dezelfde map staan als 
-
-    myapp.swf.
-
-  run
-
-    Voer de toepassing uit die eerder is opgegeven met de opdracht 'file'.
-
-    Als er geen toepassing is opgegeven, wacht fdb totdat er een toepassing 
-
-    verbinding mee maakt en treedt er een time-out op als dit niet gebeurt.
-
-'run' start de toepassing in een browser of zelfstandige Flash Player.
-
-Zodra de toepassing start, maakt deze contact met fdb zodat u bijvoorbeeld 
-
-onderbrekingspunten in kunt stellen.
-
-
-
-Op de Macintosh is de enige ondersteunde vorm van de opdracht, 'run' zonder 
-
-argumenten.  Daarna moet u Flash Player handmatig starten.
-
-
-
-[set]
-
-
-
-De waarde van een variabele of een convenience-variabele instellen.
-
-Convenience-variabelen zijn variabelen die geheel binnen fdb bestaan; ze maken 
-
-geen deel uit van uw programma.
-
-Convenience-variabelen worden voorafgegaan door '$' en kunnen allerlei namen 
-
-hebben, zolang deze niet strijdig zijn met de bestaande variabele.  
-
-Bijvoorbeeld $myVar.  Convenience-variabelen worden ook gebruikt om de 
-
-verschillende aspecten van fdb te bepalen.  
-
-
-
-fdb gebruikt de volgende convenience-variabelen.
-
-$listsize          - aantal bronregels die 'list' toont
-
-$columnwrap        - kolomnummer op basis waarvan uitvoer omloopt
-
-$infostackshowthis - indien 0, wordt 'this' niet getoond in de stackbacktrace
-
-$invokegetters     - indien 0, wordt voorkomen dat fdb getter-functies activeert
-
-$bpnum             - het nummer van het laatst gedefinieerde onderbrekingspunt
-
-$displayattributes - indien 1, toont 'print var.' alle attributen van leden van 
-
-                     'var' (zoals private, static)
-
-
-
-Voorbeelden:
-
-  set i = 3
-
-    Hiermee wordt de variabele 'i' ingesteld op het getal 3.
-
-  set employee.name = "Susan"
-
-    Hiermee wordt de variabele 'employee.name' ingesteld op de tekenreeks 
-
-    "Susan".
-
-  set $myVar = 20
-
-    Hiermee de convenience-variabele '$myVar' ingesteld op het getal 20
-
-
-
-[show]
-
-
-
-Generieke opdracht voor het weergeven van informatie over de staat van fdb.
-
-Lijst met subopdrachten voor weergave:
-
-show break (sh b)       Locatie en reden voor tijdelijk onderbroken uitvoering
-
-show directories (sh d) Mappen die op bronbestanden moeten worden doorzocht
-
-show files (sh f)       Doelbestanden en -paden
-
-show functions (sh fu)  Informatie over toewijzen van functieregels 
-
-show locations (sh l)   Locaties van onderbrekingspunten
-
-show memory (sh m)      Huidig geheugengebruik
-
-show net (sh n)         Berichtstatistieken van Player 
-
-show properties (sh p)  Waarden van eigenschappen
-
-show uri (sh u)         URI van Player voor deze sessie 
-
-show variable (sh v)    Ophalen van onbewerkte variabelen
-
-Typ 'help show' gevolgd door de naam van de subopdracht voor de volledige 
-
-documentatie.
-
-
-
-[show break]
-
-
-
-De offset in de swf weergeven waarvoor het programma is gestopt
-
-
-
-[show directories]
-
-
-
-Het huidige zoekpad weergeven voor het zoeken naar bronbestanden.
-
-
-
-[show files]
-
-
-
-Het pad en de bestandsnaam voor alle doelbestanden weergeven.
-
-
-
-[show functions]
-
-
-
-Informatie weergegeven over de toewijzing functie-naar-regelnummer.
-
-Voorbeelden:
-
-  show functions .
-
-    Hiermee wordt toewijzingsinformatie weergegeven voor alle functies in het 
-
-    huidige bestand.
-
-  show functions myapp.mxml
-
-    Hiermee wordt toewijzingsinformatie weergegeven voor alle functies in 
-
-    myapp.mxml.
-
-  show functions #3
-
-    Hiermee wordt toewijzingsinformatie weergegeven voor alle functies in 
-
-    bestand #3.
-
-  show functions
-
-    Hiermee wordt toewijzingsinformatie weergegeven voor alle functies in alle 
-
-    bestanden.
-
-Voer "info sources" of "info files" in voor een overzicht van bestandsnamen en 
-
-nummers.
-
-Afgekorte bestandsnamen worden geaccepteerd als ze eenduidig zijn.
-
-
-
-[show locations]
-
-
-
-De lijst met locaties weergeven die zijn ingesteld voor elk onderbrekingspunt.
-
-
-
-[show memory]
-
-
-
-Java VM-geheugenstatistieken weergeven.
-
-
-
-[show net]
-
-
-
-Informatie weergeven over berichten die zijn verzonden naar en ontvangen van 
-
-Flash Player.
-
-
-
-[show properties]
-
-
-
-Een lijst met convenience-variabelen weergeven die binnen het 
-
-foutopsporingsprogramma worden gebruikt. 
-
-
-
-[show uri]
-
-
-
-De URI weergeven die de Player voor deze sessie heeft verzonden.
-
-
-
-[show variable]
-
-
-
-De waarde van een lid van een variabele weergeven.  Twee parameters zijn 
-
-verplicht. De eerste is de numerieke id van de variabele, de tweede de naam van 
-
-de eigenschap op de variabele.  De convenience-variabele $invokegetters wordt 
-
-gebruikt om te bepalen of de eigenschappen-getter, aangenomen dat deze bestaat, 
-
-wordt gestart of niet.
-
-Voorbeeld:
-
-    show variable 1 __proto__
-
-
-
-[show ?]
-
-
-
-Niet-gedefinieerde opdracht. Probeer 'help show'.
-
-
-
-[source]
-
-
-
-Fdb-opdrachten uit een bestand lezen en uitvoeren.
-
-  source mycommands.txt
-
-  source mydir\mycommands.txt
-
-  source c:\mydir\mycommands.txt
-
-    Hiermee wordt mycommands.txt gelezen en worden de fdb-opdrachten uitgevoerd 
-
-    die hierin staan.
-
-    Het bestand dat de opdrachten bevat, kan worden opgegeven met
-
-	betrekking tot de huidige map (zie de opdracht 'pwd')
-
-	of door een absoluut pad te gebruiken.
-
-Het bestand .fdbinit wordt automatisch op deze manier gelezen als fdb start.
-
-Alleen in de huidige map wordt naar .fdbinit gezocht. Dat houdt in dat u voor 
-
-verschillende projecten ook verschillende .fdbinit-bestanden kunt maken.
-
-
-
-[step]
-
-
-
-De stappen van het programma volgen totdat er een andere bronregel wordt 
-
-bereikt.
-
-Voorbeelden:
-
-  step
-
-    Ga één stap verder.
-
-  step 3
-
-    Ga drie stappen verder of tot het programma om een andere reden stopt.
-
-
-
-[tutorial]
-
-
-
-Een zelfstudie over het gebruik van fdb weergeven.
-
-Deze opdracht heeft geen argumenten.
-
-
-
-[Tutorial]
-
-
-
-Een gebruikelijke fdb-sessie:
-
-Start een toepassing met 'run'.
-
-Bekijk bestandsnamen met 'info sources'.
-
-Toon een lijst van een bestand met 'list'.
-
-Stel onderbrekingspunten in met  'break'.
-
-Voer het programma uit met 'continue' totdat een onderbrekingspunt is bereikt.
-
-Onderzoek de staat van het programma met 'where', 'print', 'info locals'.
-
-Voer individuele instructies uit met 'next', 'step' en 'finish'.
-
-Hervat de uitvoering met 'continue'.
-
-Verlaat fdb met 'quit'.
-
-
-
-[undisplay]
-
-
-
-Een of meer automatisch weergegeven expressies verwijderen.
-
-Voorbeelden:
-
-  undisplay
-
-    Hiermee worden alle automatisch weergegeven expressies verwijderd.
-
-  undisplay 2 7
-
-    Hiermee worden automatisch weergegeven expressies #2 en #3 verwijderd.
-
-Gebruik "info display" als u de lijst en de nummers van de automatisch 
-
-weergegeven expressies wilt zien.
-
-
-
-[up]
-
-
-
-Het stackframe dat deze heeft aangeroepen selecteren en weergeven.
-
-Volgende opdrachten 'info arguments' en 'info locals' tonen
-
-de lokale variabelen en argumenten van het geselecteerde frame.
-
-Zie 'down' en 'frame'
-
-
-
-[viewswf]
-
-
-
-Het filter instellen voor de bestandslijst (zoals 'info files' en 'info 
-
-sources') op basis van de swf-naam of deze verwijderen. 
-
-Zonder parameters worden alle bestanden getoond.  Als hetzelfde bestand in een 
-
-of meer swf-bestanden voorkomt, toont de lijst alleen het eerste exemplaar van 
-
-het bestand.  Als u andere exemplaren van het bestand wilt openen, moet u het 
-
-nummer van het bestand gebruiken (bijvoorbeeld 'list #192') of deze opdracht 
-
-met een parameter gebruiken (zie hieronder) om bestanden van een specifieke swf 
-
-te tonen.  Met een enkele parameter, de swf-naam zoals getoond door de opdracht 
-
-'info swfs', verschijnen alleen de bestanden van de opgegeven swf in de lijst.  
-
-Bestanden van andere swf's worden niet getoond.  Deze opdracht heeft ook 
-
-gevolgen voor opdrachten die een bestand als parameter accepteren (zoals 
-
-'break').
-
-Voorbeeld:
-
-  viewswf myApp.mxml.swf
-
-    Hiermee worden alleen bestanden van myApp.mxml.swf getoond.
-
-  viewswf 
-
-    Alle bestanden van alle swf's weergeven.
-
- 
-
-[watch]
-
-
-
-Een controlepunt toevoegen aan een gegeven variabele. Het 
-
-foutopsporingsprogramma stopt als de waarde van de variabele verandert.
-
-Voorbeeld:
-
-  watch foo
-
-
-
-[what]
-
-
-
-De context weergeven waarin een variabele wordt opgelost. 
-
-
-
-[where]
-
-
-
-Backtrace van de stack.
-
-
-
-[zzz]
-
-
-
-((( Keep this unused topic at the end of the file    )))
-
-((( so that the next-to-last one is parsed properly. )))
-
+
+This file contains the text displayed by the 'help' command in fdb.
+
+It is divided into "topics". For example, when an fdb user types
+'help break', the [break] topic below is displayed.
+
+The first and last lines of each topic should be blank.
+They don't get displayed in fdb; they are here only
+to make this file more easily readable.
+
+Help text should be formatted to not wrap
+when displayed on an 80-character-wide console.
+The following line is 80 characters wide.
+
+--------------------------------------------------------------------------------
+
+[?]
+
+Niet-gedefinieerde opdracht. Voer alleen "help" in voor een lijst met alle 
+fdb-opdrachten.
+
+[break]
+
+Een onderbrekingspunt instellen op de opgegeven regel of functie.
+Voorbeelden:
+  break 87
+    Hiermee wordt een onderbrekingspunt ingesteld op regel 87 van het huidige 
+    bestand.
+  break myapp.mxml:56
+    Hiermee wordt een onderbrekingspunt ingesteld op regel 56 van myapp.mxml.
+  break #3:29
+    Hiermee wordt een onderbrekingspunt ingesteld op regel 29 van bestand #3.
+  break doThis
+    Hiermee wordt een onderbrekingspunt ingesteld bij de functie doThis() in 
+    het huidige bestand.
+  break myapp.mxml:doThat
+    Hiermee wordt een onderbrekingspunt ingesteld bij de functie doThat() in 
+    het bestand myapp.mxml.
+  break #3:doOther
+    Hiermee wordt een onderbrekingspunt ingesteld bij de functie doOther() in 
+    bestand #3.
+  break
+   Hiermee wordt een onderbrekingspunt ingesteld op het uitvoeradres in het 
+   stackframe. Dit is handig voor onderbreking bij terugkeer naar een 
+   stackframe.
+Voer "info sources" of "info files" in voor een overzicht van bestandsnamen en 
+nummers.
+Voer "info functions" in voor functienamen.
+Afgekorte bestandsnamen en functienamen worden geaccepteerd als ze eenduidig 
+zijn.
+Bij opgave van een regelnummer wordt aan het begin van de code voor die regel 
+onderbroken.
+Bij opgave van een functie wordt aan het begin van de code voor die functie 
+onderbroken.
+Zie "commands" en "condition" voor meer controle over onderbrekingspunten.
+
+[bt]
+
+Backtrace van de stack.
+
+[catch]
+
+Stoppen wanneer er een uitzondering optreedt.  Dit heeft alleen gevolgen voor 
+afgevangen uitzonderingen, ofwel uitzonderingen die door een "catch"-blok 
+worden verwerkt.  Niet-afgevangen uitzonderingen stoppen altijd in het
+foutopsporingsprogramma.
+
+Gebruik de opdracht "verwijderen" om een catch-punt te verwijderen.
+
+Voorbeelden:
+  catch *
+    Hiermee wordt gestopt bij elke uitzondering die er optreedt.
+  catch ReferenceError
+    Hiermee wordt gestopt wanneer er een ReferenceError optreedt, al dan niet 
+    afgevangen.
+
+[cf]
+
+De naam en het nummer van het huidige bestand weergeven of het huidige bestand 
+veranderen.
+Voorbeelden:
+  cf
+    Hiermee wordt de naam en het nummer van het huidige bestand weergegeven.
+  cf myapp.mxml
+    Hiermee wordt het huidige bestand veranderd in myapp.mxml.
+  cf #29
+    Hiermee wordt het huidige bestand veranderd in bestand #29.
+Voer "info sources" of "info files" in voor een overzicht van bestandsnamen en 
+nummers.
+Afgekorte bestandsnamen worden geaccepteerd als ze eenduidig zijn.
+Wanneer u een bestand met "list" vermeldt, wordt dat bestand eveneens het 
+huidige bestand.
+
+[clear]
+
+Een onderbrekingspunt op een opgegeven regel of bij een functie wissen.
+Voorbeelden:
+  clear 87
+    Hiermee wordt het onderbrekingspunt op regel 87 uit het huidige bestand 
+    gewist.
+  clear myapp.mxml:56
+    Hiermee wordt het onderbrekingspunt op regel 56 van myapp.mxml gewist.
+  clear #3:29
+    Hiermee wordt het onderbrekingspunt op regel 29 van bestand #3 gewist.
+  clear doThis
+    Hiermee wordt het onderbrekingspunt bij de functie doThis() uit het huidige 
+    bestand gewist.
+  clear myapp.mxml:doThat
+    Hiermee wordt het onderbrekingspunt bij de functie doThat() uit het bestand 
+    myapp.mxml gewist.
+  clear #3:doOther
+    Hiermee wordt het onderbrekingspunt bij de functie doOther() uit bestand #3 
+    gewist.
+  clear
+    Hiermee wordt het onderbrekingspunt op de huidige regel uit het huidige 
+    bestand gewist. 
+Voer "info sources" of "info files" in voor een overzicht van bestandsnamen en 
+nummers.
+Voer "info functions" in voor functienamen.
+Afgekorte bestandsnamen en functienamen worden geaccepteerd als ze eenduidig 
+zijn.
+Als het regelnummer is opgegeven, worden alle onderbrekingspunten van die regel 
+verwijderd.
+Als een functie is opgegeven, worden onderbrekingspunten aan het begin van de 
+functie verwijderd.
+
+[continue]
+
+De uitvoering voortzetten nadat gestopt is bij het onderbrekingspunt.
+Deze opdracht heeft geen argumenten.
+
+[condition]
+
+
+Nummer N van onderbrekingspunt opgeven om alleen te onderbreken als COND 
+waar is.
+Deze opdracht kan gebruikt worden als 'condition N COND' waarbij N een geheel 
+getal is en COND een expressie die telkens wanneer onderbrekingspunt N bereikt 
+wordt, moet worden geëvalueerd.
+
+[commands]
+
+Opdrachten instellen die moeten worden uitgevoerd wanneer een onderbrekingspunt 
+wordt bereikt.
+Geef het nummer van het onderbrekingspunt als argument op na "commands".
+Zonder argument is het beoogde onderbrekingspunt het laatst ingestelde.
+De opdrachten zelf volgen vanaf de volgende regel.
+Typ een regel die "end" bevat om het einde van de opdrachten aan te geven.
+Voer "silent" in als eerste regel om het onderbrekingspunt stil te maken; dit 
+betekent dat er behalve dat wat de opdrachten weergeven, geen uitvoer wordt 
+weergegeven.
+Voorbeeld:
+  (fdb) commands
+  Typ opdrachten die moeten worden uitgevoerd bij het bereiken van 
+  onderbrekingspunt 1, één per regel.
+  Eindig met een regel die alleen "end" bevat.
+  >w
+  >end
+
+[delete]
+
+Een of meer onderbrekingspunten verwijderen.
+Voorbeelden:
+  delete
+    Hiermee worden alle onderbrekingspunten verwijderd.
+  delete 2 5
+    Hiermee worden de onderbrekingspunten #2 en #5 verwijderd.
+Voer "info breakpoints" in als u de nummers van de onderbrekingspunten wilt 
+zien.
+
+[directory]
+
+De lijst met mappen waarin fdb naar bronbestanden zoekt, wijzigen.
+
+Voorbeelden:
+
+  directory
+    Hiermee wordt de standaardlijst hersteld, bestaande uit de map waarin het 
+    bronbestand is gecompileerd naar objectcode, gevolgd door de huidige 
+    werkmap.
+
+  directory C:\MySource        (Windows)
+  directory /MySource          (Mac)
+    Hiermee wordt de opgegeven map toegevoegd aan het begin van de lijst met 
+    mappen waarin naar de bron wordt gezocht.  Bij het zoeken naar de bron voor 
+    de klasse mypackage.MyClass zal het foutopsporingsprogramma bijvoorbeeld 
+    zoeken naar zowel C:\MySource\mypackage\MyClass.as als 
+    C:\MySource\MyClass.as.
+
+  directory C:\Dir1;C:\Dir2    (Windows -- gebruik ';' als scheidingsteken)
+  directory /Dir1:/Dir2        (Mac -- gebruik ':' als scheidingsteken)
+    Hiermee worden verschillende mappen toegevoegd aan het begin van de lijst 
+    met mappen waarin naar de bron wordt gezocht.
+
+Gebruik "show directories" voor een overzicht van de huidige lijst.
+
+[disable]
+
+Een of meer onderbrekingspunten of automatisch weergegeven expressies 
+uitschakelen.
+Voorbeelden:
+  disable
+  disable breakpoints
+    Hiermee worden alle onderbrekingspunten uitgeschakeld.
+  disable 2 5
+  disable breakpoints 2 5
+    Hiermee worden de onderbrekingspunten #2 en #5 uitgeschakeld.
+  disable display
+    Hiermee worden alle automatisch weergegeven expressies uitgeschakeld.
+  disable display 1 3
+    Hiermee worden automatisch weergegeven expressies #1 en #3 uitgeschakeld.
+Voer "info breakpoints" in als u de nummers van de onderbrekingspunten wilt 
+zien.
+Voer "info display" in als u de nummers van de automatisch weergegeven 
+expressies wilt zien.
+
+[disassemble]
+
+(Alleen ActionScript 2; wordt niet ondersteund bij de foutopsporing van 
+ActionScript 3)
+
+Disassembleer een opgegeven deel van de broncode.
+De standaardinstelling is de huidige regel in de lijst.
+De ondersteunde argumenten zijn dezelfde als bij de lijstopdracht
+Voorbeelden:
+  disassemble 87
+    Hiermee wordt regel 87 in het huidige bestand gedisassembleerd.
+  disassemble 87 102
+    Hiermee worden de regels 87 tot 102 in het huidige bestand 
+    gedisassembleerd.
+  disassemble doThis
+      Hiermee wordt de functie doThis() in het huidige bestand gedisassembleerd.
+Behalve eenvoudige regelnummers zoals hierboven kunt u ook op andere manieren 
+regels opgeven:
+   myapp.mxml
+      Regel 1 in myapp.mxml.
+   myapp.mxml:doThat
+      De eerste regel van de functie doThat() in myapp.mxml.
+   myapp.mxml:56
+      Regel 56 in myapp.mxml.
+   #3
+      Regel 1 in bestand #3.
+   #3:doOther
+      De regel in bestand #3 waar de functie doOther() begint.
+   #3:29
+      Regel 29 in bestand #3.
+
+[display]
+
+Een expressie toevoegen aan de lijst met automatisch weergegeven expressies.
+Voorbeeld:
+  display employee.name
+    Voeg 'employee.name' toe aan de lijst met automatisch weergegeven 
+    expressies.
+    Telkens wanneer fdb stopt, wordt de waarde van employee.name weergegeven.
+Het argument voor deze opdracht is hetzelfde als dat voor 'print'.
+Voer "info display" in als u de lijst en de nummers van de automatisch 
+weergegeven expressies wilt zien.
+
+[down]
+
+Het stackframe selecteren dat hierdoor wordt aangeroepen en deze afdrukken.
+De volgende opdrachten 'info arguments' en 'info locals' tonen de lokale 
+variabelen en argumenten van het geselecteerde frame.
+Zie 'up' en 'frame' 
+
+[enable]
+
+Een of meer onderbrekingspunten of automatisch weergegeven expressies 
+inschakelen.
+Voorbeelden:
+  enable
+  enable breakpoints
+    Hiermee worden alle onderbrekingspunten ingeschakeld.
+  enable 2 5
+  enable breakpoints 2 5
+    Hiermee worden de onderbrekingspunten #2 en #5 ingeschakeld.
+  enable display
+    Hiermee worden alle automatisch weergegeven expressies ingeschakeld.
+  enable display 1 3
+    Hiermee worden automatisch weergegeven expressies #1 en #3 ingeschakeld.
+Voer "info breakpoints" in als u de nummers van de onderbrekingspunten wilt 
+zien.
+Voer "info display" in als u de nummers van de automatisch weergegeven 
+expressies wilt zien.
+
+[file]
+
+Een toepassing opgeven waarin u fouten wilt opsporen zonder deze te starten.
+Voorbeelden:
+  file http://www.mysite.com/myapp.mxml
+    Geef een MXML-toepassing op om fouten in op te sporen.
+  file myapp.swf
+    Geef een lokaal SWF-bestand in de huidige map op voor foutopsporing.
+    In dit geval moet myapp.swd (het bestand dat de foutopsporingsinformatie 
+    bevat) ook in de huidige map staan.
+Met deze opdracht wordt de toepassing echter niet gestart; daarvoor gebruikt u 
+de opdracht 'run' zonder argumenten.
+In plaats van 'file <doel>' en 'run' te gebruiken, kunt u de toepassing waarin 
+u fouten wilt opsporen ook opgeven als argument van 'run':
+  run http://mysite.com/myapp.mxml
+  run myapp.swf
+U kunt de toepassing waarin u fouten wilt opsporen ook opgeven als argument van 
+een opdrachtregel bij het starten van fdb:
+  fdb http://www.mysite.com/myapp.mxml
+  fdb myapp.swf
+In dit geval hoeft u 'file' of 'run' niet te gebruiken.
+Als u 'run' invoert zonder een toepassing op te geven waarin u de fouten wilt 
+opsporen, wacht fdb tot een toepassing er verbinding mee maakt.
+
+[finish]
+
+Uitvoering voortzetten totdat de huidige functie terugkeert.
+Deze opdracht heeft geen argumenten.
+
+[frame]
+
+Een bepaald stackframe selecteren en afdrukken.
+Deze optie heeft als optioneel argument een framenummer.
+Zonder argument is de standaardactie terugkeren naar het huidige topframe 
+(d.w.z. frame 0).
+Voorbeelden:
+  frame 4
+  frame
+De volgende opdrachten 'info arguments' en 'info locals' tonen de lokale 
+variabelen en argumenten van het geselecteerde frame.
+Zie 'up', 'down' en 'bt' 
+
+[handle]
+
+Aangeven hoe fdb een fout in Flash Player moet afhandelen.
+Voorbeelden:
+  handle recursion_limit stop
+    Als de fout recursion_limit zich voordoet, toont fdb een bericht en stopt 
+    alsof het om een onderbrekingspunt gaat.
+  handle all print nostop
+    Als er een willekeurige fout optreedt, toont fdb een bericht zonder te 
+    stoppen.
+Het eerste argument is een foutnaam of 'all'.
+Overige argumenten zijn handelingen die betrekking hebben op die fout.
+Voer 'info handle' in voor foutnamen.
+Acties zijn print/noprint en stop/nostop.
+'print' betekent een bericht weergeven als er een fout optreedt.
+'stop' betekent teruggaan naar het foutopsporingsprogramma als deze fout 
+optreedt. Impliceert 'print'.
+
+[help]
+
+Nieuw bij fdb? Voer 'tutorial' in voor basisinfo.
+Lijst met fdb-opdrachten:
+bt (bt)             Een backtrace van alle stackframes weergeven
+break (b)           Een onderbrekingspunt instellen op een opgegeven regel of 
+                    bij een functie
+catch (ca)          Stoppen wanneer er een uitzondering optreedt
+cf (cf)             De naam en het nummer van het huidige bestand weergeven
+clear (cl)          Een onderbrekingspunt van een opgegeven regel of functie 
+                    wissen
+condition (cond)    Een voorwaardelijke expressie toevoegen aan of verwijderen 
+                    van een onderbrekingspunt
+continue (c)        Uitvoering voortzetten nadat gestopt is bij het 
+                    onderbrekingspunt
+commands (com)      Hiermee worden opdrachten ingesteld die worden uitgevoerd 
+                    wanneer het onderbrekingspunt bereikt wordt
+delete (d)          Alle onderbrekingspunten of automatisch weergegeven 
+                    expressies verwijderen
+directory (dir)     Een map toevoegen aan het zoekpad voor bronbestanden
+disable (disab)     Alle onderbrekingspunten of automatisch weergegeven 
+                    expressies uitschakelen
+disassemble (disas) Bronregels of functies disassembleren
+display (disp)      Een automatisch weergegeven expressie toevoegen
+enable (e)          Alle onderbrekingspunten of automatisch weergegeven 
+                    expressies inschakelen
+file (fil)          De toepassing opgeven waarin fouten moeten worden 
+                    opgespoord.
+finish (f)          Uitvoering voortzetten totdat de huidige functie terugkeert
+handle (han)        Opgeven hoe een fout moet worden verwerkt
+help (h)            Help weergeven voor fdb-opdrachten
+home (ho)           De locatie van de lijst instellen op het punt waar de 
+                    uitvoering is gestopt
+info (i)            Informatie weergeven over het programma waarin fouten 
+                    worden opgespoord
+kill (k)            Uitvoering stoppen van het programma waarin fouten worden 
+                    opgespoord
+list (l)            De opgegeven functie of regel weergeven
+next (n)            Stapsgewijs programma
+print (p)           De waarde van variabele EXP weergeven
+pwd (pw)            De werkmap weergeven
+quit (q)            Fdb afsluiten
+run (r)             Het programma starten waarin de fouten zijn opgespoord
+set (se)            De waarde van een variabele instellen
+source (so)         Fdb-opdrachten lezen vanuit een bestand
+step (s)            Stap voor stap het programma doorlopen totdat er een andere 
+                    bronregel bereikt wordt
+tutorial (t)        Een zelfstudie over het gebruik van fdb weergeven
+undisplay (u)       Een automatisch weergegeven expressie verwijderen
+viewswf (v)         Een filter instellen voor de bestandsweergave op basis van 
+                    swf of deze verwijderen
+watch (wa)          Een controlepunt toevoegen aan een gegeven variabele
+what (wh)           De context van een variabele weergeven
+where (w)           Gelijk aan bt
+Typ 'help' gevolgd door de naam van de opdracht voor de volledige documentatie.
+
+[home]
+
+De locatie van de lijst instellen op het punt waar de uitvoering is gestopt.
+
+[info]
+
+Generieke opdracht voor het weergeven van informatie over het programma waarin 
+fouten worden opgespoord.
+Lijst met subopdrachten voor informatie:
+info arguments (i a)    Argumentvariabelen van het huidige stackframe
+info breakpoints (i b)  Status van onderbrekingspunten die door gebruiker 
+                        kunnen worden ingesteld
+info display (i d)      Een lijst met automatisch weergegeven expressies tonen
+info files (i f)        Namen van doelen en bestanden waarin fouten worden 
+                        opgespoord
+info functions (i fu)   Alle functienamen
+info handle (i h)       Hoe verwerkt u een fout
+info locals (i l)       Lokale variabelen van het huidige stackframe
+info scopechain (i sc)  Bereikketen van het huidige stackframe
+info sources (i so)     Bronbestanden in het programma
+info stack (i s)        Backtrace van de stack
+info swfs (i sw)        Lijst met swf's in deze sessie
+info targets(i t)       Toepassing waarin fouten worden opgespoord
+info variables (i v)    Alle globale en statische namen van variabelen
+Typ 'help info' gevolgd door de naam van de subopdracht voor de volledige 
+documentatie.
+
+[info arguments]
+
+Argumenten van het huidige stackframe weergeven.
+
+[info breakpoints]
+
+De status van alle onderbrekingspunten en controlepunten weergeven.
+De kolom Type geeft één van de volgende punten aan:
+   breakpoint   - normaal onderbrekingspunt
+   watchpoint   - controlepunt
+De kolom Disp bevat een van de waarden 'keep', 'del' of 'dis' om de verwerking 
+van het onderbrekingspunt aan te geven nadat dit is bereikt. 'dis' betekent dat 
+het onderbrekingspunt wordt uitgeschakeld en 'del' betekent dat het wordt 
+gewist.  
+De kolommen 'Address' en 'What' geven respectievelijk het adres en het 
+bestand/regelnummer aan. 
+
+[info display]
+
+Een lijst met automatisch weergegeven expressies en hun nummers tonen.
+
+[info files]
+
+Namen en nummers van de bestanden weergeven voor de toepassing waarin fouten 
+worden opgespoord, waaronder bronbestanden, framework-bestanden en automatisch 
+gegenereerde bestanden.
+Voorbeelden:
+  info files
+    Hiermee wordt een alfabetisch overzicht weergegeven, gerangschikt op categorie
+  info files my
+  info files my*
+    Hiermee wordt een alfabetisch overzicht weergegeven van alle bestanden 
+    waarvan de namen met "my" beginnen.
+  info files *.as
+    Hiermee wordt een alfabetisch overzicht weergegeven van alle bestanden 
+    waarvan de namen op ".as" eindigen.
+  info files *foo*
+    Hiermee wordt een alfabetisch overzicht weergegeven van alle bestanden 
+    waarvan de naam "foo" bevat. 
+Bestanden worden weergegeven in de indeling naam#N, waarbij N het 
+bestandsnummer is.
+In veel opdrachten kunt u #N in plaats van een bestandsnaam gebruiken.
+
+[info functions]
+
+Functienamen weergeven
+Voorbeelden:
+  info functions .
+    Hiermee worden alle functies in het huidige bestand weergegeven.
+  info functions myapp.mxml
+    Hiermee worden alle functies in myapp.mxml weergegeven.
+  info functions #3
+    Hiermee worden alle functies in bestand #3 weergegeven.
+  info functions
+    Hiermee worden alle functies in alle bestanden weergegeven.
+Voer "info sources" of "info files" in voor een overzicht van bestandsnamen en 
+nummers.
+Afgekorte bestandsnamen worden geaccepteerd als ze eenduidig zijn.
+
+[info handle]
+
+Aangeven wat fdb doet als er een fout in Flash Player optreedt.
+Voorbeelden:
+  info handle
+    Hiermee wordt aangegeven hoe fdb alle fouten afhandelt.
+  info handle recursion_limit
+    Hiermee wordt aangegeven hoe fdb de fout recursion_limit afhandelt.
+
+[info locals]
+
+Lokale variabelen van het huidige stackframe weergeven.
+
+[info scopechain]
+
+De bereikketen van het huidige stackframe weergeven.  De bereikketen is de 
+lijst met objecten die wordt doorzocht als Flash Player een symboolnaam 
+probeert op te halen.
+
+[info sources]
+
+Namen en nummers van de bronbestanden weergeven voor de toepassing waarin 
+fouten worden opgespoord. Framework-bestanden en automatisch gegenereerde 
+bestanden worden uitgesloten.
+Bestanden worden weergegeven in de indeling naam#N, waarbij N het 
+bestandsnummer is.
+In veel opdrachten kunt u #N in plaats van een bestandsnaam gebruiken.
+
+[info stack]
+
+Backtrace van de stack.
+
+[info swfs]
+
+Swf's weergeven die in de opsporingssessie bekend zijn.  Zie de opdracht 
+'viewswf' voor details over hoe het bestandsoverzicht kan worden gefilterd aan 
+de hand van de swf-naam. 
+
+[info targets]
+
+De URL (http: of file:) weergeven van de toepassing waarin fouten worden 
+opgespoord.
+
+[info variables]
+
+De namen en waarden van alle globale en statische variabelen weergeven.
+
+[info ?]
+
+Opdracht niet-gedefinieerde info. Probeer 'help info'.
+
+[kill]
+
+Het uitvoeren van het programma waarin fouten worden opgespoord, beëindigen.
+Deze opdracht heeft geen argumenten.
+
+[list]
+
+Coderegels vermelden in een bronbestand.
+Voorbeelden:
+  list
+    Hiermee worden tien extra regels weergegeven in het huidige bestand achter 
+    of rond de vorige lijst.
+  list -
+    Hiermee worden de tien regels weergegeven in het huidige bestand voor een 
+    eerdere lijst.
+  list 87
+    Hiermee worden tien regels weergegeven in het huidige bestand rond regel 87.
+  list 87 102
+    Hiermee worden de regels 87 tot 102 weergegeven in het huidige bestand.
+Behalve eenvoudige regelnummers zoals hierboven kunt u ook op zeven andere 
+manieren regels opgeven:
+  doThis
+      De eerste regel van de functie doThis() in het huidige bestand.
+   myapp.mxml
+      Regel 1 in myapp.mxml.
+   myapp.mxml:doThat
+      De eerste regel van de functie doThat() in myapp.mxml.
+   myapp.mxml:56
+      Regel 56 in myapp.mxml.
+   #3
+      Regel 1 in bestand #3.
+   #3:doOther
+      De regel in bestand #3 waar de functie doOther() begint.
+   #3:29
+      Regel 29 in bestand #3.
+Voer "info sources" of "info files" in voor een overzicht van bestandsnamen en 
+nummers.
+Voer "info functions" in voor functienamen.
+Afgekorte bestandsnamen en functienamen worden geaccepteerd als ze eenduidig 
+zijn.
+Wanneer u een bestand in de lijst vermeldt, wordt dat bestand het huidige 
+bestand. (Zie de opdracht 'cf'.)
+
+[next]
+
+Stap voor stap door het programma gaan om de aanroepen van subroutines te 
+doorlopen.
+  next
+    Ga één stap verder.
+  next 3
+    Ga drie stappen verder of tot het programma om een andere reden stopt.
+Net als bij de opdracht 'step' gaat u door totdat er geen subroutines meer 
+worden aangeroepen. Als dat toch gebeurt, wordt de aanroep als één instructie 
+verwerkt.
+
+[print]
+
+De waarde van variabelen of expressies weergeven.
+Voorbeelden:
+  print i
+    Hiermee wordt de waarde van 'i' weergegeven.
+  print employee.name
+    Hiermee wordt de waarde van 'employee.name' weergegeven.
+  print employee
+    Hiermee wordt de waarde van het Object 'employee' weergegeven.
+    Dit geeft mogelijk iets weer als [Object 10378].
+  print employee.
+    Hiermee worden de waarden van alle eigenschappen van het Object 'employee' 
+    weergegeven.
+  print *employee
+    Hiermee worden de waarden van alle eigenschappen van het Object 'employee' 
+    weergegeven.
+    Voorvoegsel * operator is het alternatief voor achtervoegsel . operator.
+  print #10378.
+    Hiermee worden de waarden van alle eigenschappen van Object #10378 
+    weergegeven.
+De toegankelijke variabelen zijn die in de lexicale omgeving van het 
+geselecteerde stackframe en die waarvan het bereik globaal of een volledig 
+bestand is.
+
+[pwd]
+
+De huidige werkmap weergeven.
+Dit is de map vanwaaruit fdb is gestart; het is niet mogelijk om deze binnen 
+fdb te wijzigen. Het argument voor 'run' en 'source' kan worden opgegeven voor 
+deze map.
+Deze opdracht heeft geen argumenten.
+
+[quit]
+
+Fdb afsluiten.
+Deze opdracht heeft geen argumenten.
+
+[run]
+
+Een foutopsporingssessie starten.
+Voorbeelden:
+  run http://www.mysite.com/myapp.mxml
+    Hiermee wordt de opgegeven MXML-toepassing uitgevoerd.
+  run myapp.swf
+  run mydir\myapp.swf
+  run c:\mydir\myapp.swf
+    Hiermee wordt het lokale SWF-bestand myapp.swf dat kan worden opgegeven, 
+    uitgevoerd hetzij met betrekking tot de huidige map (zie de opdracht 'pwd')
+    of door een absoluut pad te gebruiken. In deze gevallen moet myapp.swd (het 
+    bestand dat de opsporingsinformatie bevat) ook in dezelfde map staan als 
+    myapp.swf.
+  run
+    Voer de toepassing uit die eerder is opgegeven met de opdracht 'file'.
+    Als er geen toepassing is opgegeven, wacht fdb totdat er een toepassing 
+    verbinding mee maakt en treedt er een time-out op als dit niet gebeurt.
+'run' start de toepassing in een browser of zelfstandige Flash Player.
+Zodra de toepassing start, maakt deze contact met fdb zodat u bijvoorbeeld 
+onderbrekingspunten in kunt stellen.
+
+Op de Macintosh is de enige ondersteunde vorm van de opdracht, 'run' zonder 
+argumenten.  Daarna moet u Flash Player handmatig starten.
+
+[set]
+
+De waarde van een variabele of een convenience-variabele instellen.
+Convenience-variabelen zijn variabelen die geheel binnen fdb bestaan; ze maken 
+geen deel uit van uw programma.
+Convenience-variabelen worden voorafgegaan door '$' en kunnen allerlei namen 
+hebben, zolang deze niet strijdig zijn met de bestaande variabele.  
+Bijvoorbeeld $myVar.  Convenience-variabelen worden ook gebruikt om de 
+verschillende aspecten van fdb te bepalen.  
+
+fdb gebruikt de volgende convenience-variabelen.
+$listsize          - aantal bronregels die 'list' toont
+$columnwrap        - kolomnummer op basis waarvan uitvoer omloopt
+$infostackshowthis - indien 0, wordt 'this' niet getoond in de stackbacktrace
+$invokegetters     - indien 0, wordt voorkomen dat fdb getter-functies activeert
+$bpnum             - het nummer van het laatst gedefinieerde onderbrekingspunt
+$displayattributes - indien 1, toont 'print var.' alle attributen van leden van 
+                     'var' (zoals private, static)
+
+Voorbeelden:
+  set i = 3
+    Hiermee wordt de variabele 'i' ingesteld op het getal 3.
+  set employee.name = "Susan"
+    Hiermee wordt de variabele 'employee.name' ingesteld op de tekenreeks 
+    "Susan".
+  set $myVar = 20
+    Hiermee de convenience-variabele '$myVar' ingesteld op het getal 20
+
+[show]
+
+Generieke opdracht voor het weergeven van informatie over de staat van fdb.
+Lijst met subopdrachten voor weergave:
+show break (sh b)       Locatie en reden voor tijdelijk onderbroken uitvoering
+show directories (sh d) Mappen die op bronbestanden moeten worden doorzocht
+show files (sh f)       Doelbestanden en -paden
+show functions (sh fu)  Informatie over toewijzen van functieregels 
+show locations (sh l)   Locaties van onderbrekingspunten
+show memory (sh m)      Huidig geheugengebruik
+show net (sh n)         Berichtstatistieken van Player 
+show properties (sh p)  Waarden van eigenschappen
+show uri (sh u)         URI van Player voor deze sessie 
+show variable (sh v)    Ophalen van onbewerkte variabelen
+Typ 'help show' gevolgd door de naam van de subopdracht voor de volledige 
+documentatie.
+
+[show break]
+
+De offset in de swf weergeven waarvoor het programma is gestopt
+
+[show directories]
+
+Het huidige zoekpad weergeven voor het zoeken naar bronbestanden.
+
+[show files]
+
+Het pad en de bestandsnaam voor alle doelbestanden weergeven.
+
+[show functions]
+
+Informatie weergegeven over de toewijzing functie-naar-regelnummer.
+Voorbeelden:
+  show functions .
+    Hiermee wordt toewijzingsinformatie weergegeven voor alle functies in het 
+    huidige bestand.
+  show functions myapp.mxml
+    Hiermee wordt toewijzingsinformatie weergegeven voor alle functies in 
+    myapp.mxml.
+  show functions #3
+    Hiermee wordt toewijzingsinformatie weergegeven voor alle functies in 
+    bestand #3.
+  show functions
+    Hiermee wordt toewijzingsinformatie weergegeven voor alle functies in alle 
+    bestanden.
+Voer "info sources" of "info files" in voor een overzicht van bestandsnamen en 
+nummers.
+Afgekorte bestandsnamen worden geaccepteerd als ze eenduidig zijn.
+
+[show locations]
+
+De lijst met locaties weergeven die zijn ingesteld voor elk onderbrekingspunt.
+
+[show memory]
+
+Java VM-geheugenstatistieken weergeven.
+
+[show net]
+
+Informatie weergeven over berichten die zijn verzonden naar en ontvangen van 
+Flash Player.
+
+[show properties]
+
+Een lijst met convenience-variabelen weergeven die binnen het 
+foutopsporingsprogramma worden gebruikt. 
+
+[show uri]
+
+De URI weergeven die de Player voor deze sessie heeft verzonden.
+
+[show variable]
+
+De waarde van een lid van een variabele weergeven.  Twee parameters zijn 
+verplicht. De eerste is de numerieke id van de variabele, de tweede de naam van 
+de eigenschap op de variabele.  De convenience-variabele $invokegetters wordt 
+gebruikt om te bepalen of de eigenschappen-getter, aangenomen dat deze bestaat, 
+wordt gestart of niet.
+Voorbeeld:
+    show variable 1 __proto__
+
+[show ?]
+
+Niet-gedefinieerde opdracht. Probeer 'help show'.
+
+[source]
+
+Fdb-opdrachten uit een bestand lezen en uitvoeren.
+  source mycommands.txt
+  source mydir\mycommands.txt
+  source c:\mydir\mycommands.txt
+    Hiermee wordt mycommands.txt gelezen en worden de fdb-opdrachten uitgevoerd 
+    die hierin staan.
+    Het bestand dat de opdrachten bevat, kan worden opgegeven met
+	betrekking tot de huidige map (zie de opdracht 'pwd')
+	of door een absoluut pad te gebruiken.
+Het bestand .fdbinit wordt automatisch op deze manier gelezen als fdb start.
+Alleen in de huidige map wordt naar .fdbinit gezocht. Dat houdt in dat u voor 
+verschillende projecten ook verschillende .fdbinit-bestanden kunt maken.
+
+[step]
+
+De stappen van het programma volgen totdat er een andere bronregel wordt 
+bereikt.
+Voorbeelden:
+  step
+    Ga één stap verder.
+  step 3
+    Ga drie stappen verder of tot het programma om een andere reden stopt.
+
+[tutorial]
+
+Een zelfstudie over het gebruik van fdb weergeven.
+Deze opdracht heeft geen argumenten.
+
+[Tutorial]
+
+Een gebruikelijke fdb-sessie:
+Start een toepassing met 'run'.
+Bekijk bestandsnamen met 'info sources'.
+Toon een lijst van een bestand met 'list'.
+Stel onderbrekingspunten in met  'break'.
+Voer het programma uit met 'continue' totdat een onderbrekingspunt is bereikt.
+Onderzoek de staat van het programma met 'where', 'print', 'info locals'.
+Voer individuele instructies uit met 'next', 'step' en 'finish'.
+Hervat de uitvoering met 'continue'.
+Verlaat fdb met 'quit'.
+
+[undisplay]
+
+Een of meer automatisch weergegeven expressies verwijderen.
+Voorbeelden:
+  undisplay
+    Hiermee worden alle automatisch weergegeven expressies verwijderd.
+  undisplay 2 7
+    Hiermee worden automatisch weergegeven expressies #2 en #3 verwijderd.
+Gebruik "info display" als u de lijst en de nummers van de automatisch 
+weergegeven expressies wilt zien.
+
+[up]
+
+Het stackframe dat deze heeft aangeroepen selecteren en weergeven.
+Volgende opdrachten 'info arguments' en 'info locals' tonen
+de lokale variabelen en argumenten van het geselecteerde frame.
+Zie 'down' en 'frame'
+
+[viewswf]
+
+Het filter instellen voor de bestandslijst (zoals 'info files' en 'info 
+sources') op basis van de swf-naam of deze verwijderen. 
+Zonder parameters worden alle bestanden getoond.  Als hetzelfde bestand in een 
+of meer swf-bestanden voorkomt, toont de lijst alleen het eerste exemplaar van 
+het bestand.  Als u andere exemplaren van het bestand wilt openen, moet u het 
+nummer van het bestand gebruiken (bijvoorbeeld 'list #192') of deze opdracht 
+met een parameter gebruiken (zie hieronder) om bestanden van een specifieke swf 
+te tonen.  Met een enkele parameter, de swf-naam zoals getoond door de opdracht 
+'info swfs', verschijnen alleen de bestanden van de opgegeven swf in de lijst.  
+Bestanden van andere swf's worden niet getoond.  Deze opdracht heeft ook 
+gevolgen voor opdrachten die een bestand als parameter accepteren (zoals 
+'break').
+Voorbeeld:
+  viewswf myApp.mxml.swf
+    Hiermee worden alleen bestanden van myApp.mxml.swf getoond.
+  viewswf 
+    Alle bestanden van alle swf's weergeven.
+ 
+[watch]
+
+Een controlepunt toevoegen aan een gegeven variabele. Het 
+foutopsporingsprogramma stopt als de waarde van de variabele verandert.
+Voorbeeld:
+  watch foo
+
+[what]
+
+De context weergeven waarin een variabele wordt opgelost. 
+
+[where]
+
+Backtrace van de stack.
+
+[zzz]
+
+((( Keep this unused topic at the end of the file    )))
+((( so that the next-to-last one is parsed properly. )))


[05/15] FLEX-34291: Merge the donated FDB with the current one.

Posted by ft...@apache.org.
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_fi.txt
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_fi.txt b/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_fi.txt
index f9c2fb9..ef48e9a 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_fi.txt
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_fi.txt
@@ -1,4 +1,4 @@
-
+    
       Licensed to the Apache Software Foundation (ASF) under one or more
       contributor license agreements.  See the NOTICE file distributed with
       this work for additional information regarding copyright ownership.
@@ -14,1603 +14,804 @@
       See the License for the specific language governing permissions and
       limitations under the License.
 
-This file contains the text displayed by the 'help' command in fdb.
-
 
+This file contains the text displayed by the 'help' command in fdb.
 
 It is divided into "topics". For example, when an fdb user types
-
 'help break', the [break] topic below is displayed.
 
-
-
 The first and last lines of each topic should be blank.
-
 They don't get displayed in fdb; they are here only
-
 to make this file more easily readable.
 
-
-
 Help text should be formatted to not wrap
-
 when displayed on an 80-character-wide console.
-
 The following line is 80 characters wide.
 
-
-
 --------------------------------------------------------------------------------
 
-
-
 [?]
 
-
-
 M��ritt�m�t�n komento. Sy�tt�m�ll� 'help' n�et luettelon kaikista 
-
 fdb-komennoista.
 
-
-
 [break]
 
-
-
 M��rit� keskeytyskohta tietyll� rivill� tai tietyss� toiminnossa.
-
 Esimerkkej�:
-
   break 87
-
     Asettaa keskeytyskohdan riville 87 nykyisess� tiedostossa.
-
   break myapp.mxml:56
-
     Asettaa keskeytyskohdan riville 56 tiedostossa myapp.mxml.
-
   break #3:29
-
     Asettaa keskeytyskohdan riville 29 tiedostossa #3.
-
   break doThis
-
     Asettaa keskeytyskohdan toimintoon doThis() nykyisess� tiedostossa.
-
   break myapp.mxml:doThat
-
     Asettaa keskeytyskohdan toimintoon doThat() tiedostossa myapp.mxml.
-
   break #3:doOther
-
     Asettaa keskeytyskohdan toimintoon doOther() tiedostossa #3.
-
   break
-
    Asettaa keskeytyskohdan nykyiseen suoritusosoitteeseen nykyisen pinon 
-
    kehyksess�. T�m� on hy�dyllist�, kun keskeytys tapahtuu pinokehykseen 
-
    palattaessa.
-
 Tiedostonimet ja -numerot n�et sy�tt�m�ll� 'info sources' tai 'info files'.
-
 Toimintojen nimet n�et sy�tt�m�ll� 'info functions'.
-
 Lyhennetyt tiedostojen ja toimintojen nimet hyv�ksyt��n, jos ne ovat selvi�.
-
 Jos m��ritet��n rivinumero, keskeytys tapahtuu koodin alussa sill� rivill�.
-
 Jos m��ritet��n toiminto, keskeytys tapahtuu koodin alussa siin� toiminnossa.
-
 Lis�tietoa keskeytyskohdista n�et komennoilla 'commands' ja 'condition'.
 
-
-
 [bt]
 
-
-
 Pinon backtrace.
 
-
-
 [catch]
 
-
-
 Keskeytys poikkeuksen sattuessa.  Vaikuttaa vain catch-lohkon k�sittelemiin 
-
 poikkeuksiin.  K�sittelem�tt�m�t poikkeukset keskeytt�v�t aina 
-
 virheenkorjauksen.
 
-
-
 Voit poistaa k�sittelypisteen Delete-komennolla.
 
-
-
 Esimerkkej�:
-
   catch *
-
     Keskeytys mink� tahansa poikkeuksen sattuessa.
-
   catch ReferenceError
-
     Keskeytys aina ReferenceError-virheen syntyess�, olipa se k�sitelty tai ei.
 
-
-
 [cf]
 
-
-
 N�ytt�� nykyisen tiedoston nimen ja numeron tai vaihtaa nykyist� tiedostoa.
-
 Esimerkkej�:
-
   cf
-
     N�ytt�� nykyisen tiedoston nimen ja numeron.
-
   cf myapp.mxml
-
     Vaihtaa nykyisen tiedoston tiedostoksi myapp.mxml.
-
   cf #29
-
     Vaihtaa nykyisen tiedoston tiedostoksi #29.
-
 Tiedostonimet ja -numerot n�et sy�tt�m�ll� 'info sources' tai 'info files'.
-
 Lyhennetyt tiedostonimet hyv�ksyt��n, jos ne ovat selvi�.
-
 Komennon 'list' k�ytt�minen tiedostoon tekee tiedostosta nykyisen tiedoston.
 
-
-
 [clear]
 
-
-
 Poistaa keskeytyskohdan tietylt� rivilt� tai tietyst� toiminnosta.
-
 Esimerkkej�:
-
   clear 87
-
     Poistaa keskeytyskohdan rivilt� 87 nykyisess� tiedostossa.
-
   clear myapp.mxml:56
-
     Poistaa keskeytyskohdan rivilt� 56 tiedostossa myapp.mxml.
-
   clear #3:29
-
     Poistaa keskeytyskohdan rivilt� 29 tiedostossa #3.
-
   clear doThis
-
     Poistaa keskeytyskohdan toiminnosta doThis() nykyisess� tiedostossa.
-
   clear myapp.mxml:doThat
-
     Poistaa keskeytyskohdan toiminnosta doThat() tiedostossa myapp.mxml.
-
   clear #3:doOther
-
     Poistaa keskeytyskohdan toiminnosta doOther() tiedostossa #3.
-
   clear
-
     Poistaa keskeytyskohdan nykyisen tiedoston nykyiselt� rivilt�. 
-
 Tiedostonimet ja -numerot n�et sy�tt�m�ll� 'info sources' tai 'info files'.
-
 Toimintojen nimet n�et sy�tt�m�ll� 'info functions'.
-
 Lyhennetyt tiedostojen ja toimintojen nimet hyv�ksyt��n, jos ne ovat selvi�.
-
 Jos m��ritet��n rivinumero, silt� rivilt� poistetaan kaikki keskeytyskohdat.
-
 Jos m��ritet��n toiminto, toiminnon alussa olevat keskeytyskohdat poistetaan.
 
-
-
 [continue]
 
-
-
 Jatka suorittamista keskeytyskohdassa pys�htymisen j�lkeen.
-
 T�m� komento ei hyv�ksy argumentteja.
 
-
-
 [condition]
 
 
-
-
-
 M��rit� keskeytyskohdan numero N. Keskeytys tapahtuu vain, jos COND toteutuu.
-
 K�ytt� on `condition N COND', jossa N on kokonaisluku ja COND on lauseke, joka 
-
 arvioidaan aina, kun keskeytyskohta N saavutetaan.
 
-
-
 [commands]
 
-
-
 M��rit� komennot, jotka suoritetaan, kun t�rm�t��n keskeytyskohtaan.
-
 Anna keskeytyskohdan numero argumenttina `commands`-komennon j�lkeen.
-
 Jos argumenttia ei anneta, kohteena oleva keskeytyskohta m��ritet��n viimeisen�.
-
 Komennot alkavat seuraavalta rivilt�.
-
 Kirjoita rivi, joka sis�lt� sanan "end", merkitsem��n kohtaa, miss� komennot 
-
 loppuvat.
-
 M��ritt�m�ll� ehdon "silent" ensimm�iseksi riviksi teet keskeytyskohdasta 
-
 hiljaisen. T�ll�in mit��n ei tulosteta, kun kohta saavutetaan, lukuun ottamatta 
-
 komennon tulostamaa tulostetta.
-
 Esimerkki:
-
   (fdb) commands
-
   Kirjoita komennot sit� varten, kun keskeytyskohta 1 tulee vastaan, yksi 
-
   komento riville.
-
   P��t� rivill�, jolla lukee vain 'end'.
-
   >w
-
   >end
 
-
-
 [delete]
 
-
-
 Poista yksi tai useampi keskeytyskohta.
-
 Esimerkkej�:
-
   delete
-
     Poistaa kaikki keskeytyskohdat.
-
   delete 2 5
-
     Poistaa keskeytyskohdat #2 ja #5.
-
 N�et keskeytyskohtien numerot sy�tt�m�ll� 'info breakpoints'.
 
-
-
 [directory]
 
-
-
 M��rit� luettelo hakemistoista, joista fdb etsii l�hdetiedostoja.
 
-
-
 Esimerkkej�:
 
-
-
   directory
-
     Palauttaa luettelon oletusasetuksiin. Luettelo sis�lt�� silloin hakemiston, 
-
     jossa l�hdetiedosto koottiin objektikoodiksi, ja sen j�lkeen nykyisen 
-
     hakemiston.
 
-
-
   directory C:\MySource        (Windows)
-
   directory /MySource          (Mac)
-
     Lis�� m��ritetyn hakemiston sen hakemistoluettelon alkuun, josta l�hdett� 
-
     haetaan.  Jos haetaan esimerkiksi luokan mypackage.MyClass l�hdett�, 
-
     virheenkorjaustoiminto etsii l�hdett� sek� kansiosta 
-
     C:\MySource\mypackage\MyClass.as ett� kansiosta C:\MySource\MyClass.as.
 
-
-
   directory C:\Dir1;C:\Dir2    (Windows � k�yt� pilkkua ';' erottimena)
-
   directory /Dir1:/Dir2        (Mac � k�yt� pistett� ':' erottimena)
-
     Lis�� useita hakemistoja sen hakemistoluettelon alkuun, josta l�hdett� 
-
     haetaan.
 
-
-
 Nykyisen luettelon n�et sy�tt�m�ll� 'show directories'.
 
-
-
 [disable]
 
-
-
 Poista k�yt�st� yksi tai useita keskeytyskohtia tai automaattisen n�yt�n 
-
 ilmaukset.
-
 Esimerkkej�:
-
   disable
-
   disable breakpoints
-
     Poistaa k�yt�st� kaikki keskeytyskohdat.
-
   disable 2 5
-
   disable breakpoints 2 5
-
     Poistaa k�yt�st� keskeytyskohdat #2 ja #5.
-
   disable display
-
     Poistaa k�yt�st� kaikki automaattisen n�yt�n ilmaukset.
-
   disable display 1 3
-
     Poistaa k�yt�st� automaattisen n�yt�n ilmaukset #1 ja #3.
-
 N�et keskeytyskohtien numerot sy�tt�m�ll� 'info breakpoints'.
-
 N�et automaattisen n�yt�n ilmausten numerot sy�tt�m�ll� 'info display'.
 
-
-
 [disassemble]
 
-
-
 (Vain ActionScript 2. Ei tukea ActionScript 3:n virheenkorjaukselle.)
 
-
-
 Pura jokin l�hdekoodin tietty osa.
-
 Oletus on aina nykyinen rivi.
-
 Samoja argumentteja tuetaan kuin list-komennossakin.
-
 Esimerkkej�:
-
   disassemble 87
-
     Purkaa nykyisen tiedoston rivin 87.
-
   disassemble 87 102
-
     Purkaa nykyisen tiedoston rivit 87�102.
-
   disassemble doThis
-
       Purkaa toiminnon doThis() nykyisess� tiedostossa.
-
 Sen lis�ksi, ett� k�yt�t yksinkertaisia rivinumeroita yll� olevan esimerkin 
-
 mukaisesti, voit m��ritt�� rivej� muillakin tavoilla:
-
    myapp.mxml
-
       Rivi 1 tiedostossa myapp.mxml.
-
    myapp.mxml:doThat
-
       Toiminnon doThat() ensimm�inen rivi tiedostossa myapp.mxml.
-
    myapp.mxml:56
-
       Rivi 56 tiedostossa myapp.mxml.
-
    #3
-
       Rivi 1 tiedostossa #3.
-
    #3:doOther
-
       Se tiedoston #3 rivi, jolla toiminto doOther() alkaa.
-
    #3:29
-
       Rivi 29 tiedostossa #3.
 
-
-
 [display]
 
-
-
 Lis�� ilmaus automaattisen n�yt�n ilmausten luetteloon.
-
 Esimerkki:
-
   display employee.name
-
     Lis�� 'employee.name' automaattisen n�yt�n ilmausten luetteloon.
-
     Joka kerta, kun fdb pys�htyy, arvo employee.name tulee n�kyviin.
-
 T�m�n komennon argumentti on sama kuin komennolle 'print'.
-
 N�et automaattisen n�yt�n ilmaukset ja niiden numerot sy�tt�m�ll� 'info 
-
 display'.
 
-
-
 [down]
 
-
-
 Valitse ja tulosta t�m�n kutsuma pinokehys.
-
 Seuraavat 'info arguments'- ja 'info locals' -komennot n�ytt�v�t valitun 
-
 kehyksen argumentit ja paikalliset muuttujat.
-
 Katso komennot 'up' ja 'frame'. 
 
-
-
 [enable]
 
-
-
 Ota k�ytt��n yksi tai useita keskeytyskohtia tai automaattisen n�yt�n ilmaukset.
-
 Esimerkkej�:
-
   enable
-
   enable breakpoints
-
     Ottaa k�ytt��n kaikki keskeytyskohdat.
-
   enable 2 5
-
   enable breakpoints 2 5
-
     Ottaa k�ytt��n keskeytyskohdat #2 ja #5.
-
   enable display
-
     Ottaa k�ytt��n kaikki automaattisen n�yt�n ilmaukset.
-
   enable display 1 3
-
     Ottaa k�ytt��n automaattisen n�yt�n ilmaukset #1 ja #3.
-
 N�et keskeytyskohtien numerot sy�tt�m�ll� 'info breakpoints'.
-
 N�et automaattisen n�yt�n ilmausten numerot sy�tt�m�ll� 'info display'.
 
-
-
 [file]
 
-
-
 M��rit� sovellus, josta korjataan virheit�, k�ynnist�m�tt� sit�.
-
 Esimerkkej�:
-
   file http://www.mysite.com/myapp.mxml
-
     M��rit� MXML-sovellus, josta korjataan virheit�.
-
   file myapp.swf
-
     M��rit� nykyisest� hakemistosta paikallinen SWF-tiedosto, josta korjataan 
-
     virheit�.
-
     T�ss� tapauksessa (virheenkorjaustiedot sis�lt�v�n) tiedoston myapp.swd 
-
     pit�� sijaita my�s nykyisess� hakemistossa.
-
 Komento ei k�ynnist� sovellusta. K�ynnist� sovelluksen virheenkorjaus 
-
 komennolla 'run' ilman argumentteja.
-
 Sen sijaan, ett� k�ytt�isit komentoa 'file <target>' ja sen j�lkeen komentoa 
-
 'run', voit yksinkertaisesti m��ritt�� korjattavan sovelluksen komennon 'run' 
-
 argumentiksi:
-
   run http://mysite.com/myapp.mxml
-
   run myapp.swf
-
 Voit my�s m��r�t� tiedoston virheenkorjauksen komentorivin argumentilla, kun 
-
 k�ynnist�t fdb:n:
-
   fdb http://www.mysite.com/myapp.mxml
-
   fdb myapp.swf
-
 T�ss� tapauksessa sinun ei tarvitse k�ytt�� komentoa 'file' eik� komentoa 'run'.
-
 Jos suoritat komennon 'run' m��ritt�m�tt� sovellusta virheenkorjausta varten, 
-
 fdb odottaa, kunnes jokin sovellus muodostaa siihen yhteyden.
 
-
-
 [finish]
 
-
-
 Suorita, kunnes nykyinen toiminto palaa.
-
 T�m� komento ei hyv�ksy argumentteja.
 
-
-
 [frame]
 
-
-
 Valitse ja tulosta jokin tietty pinokehys.
-
 T�m� komento hyv�ksyy valinnaisen argumentin: kehyksen numeron.
-
 Jos argumenttia ei m��ritet�, oletuksena palataan nykyiseen ylimp��n kehykseen 
-
 (kehykseen 0).
-
 Esimerkkej�:
-
   frame 4
-
   frame
-
 Seuraavat 'info arguments'- ja 'info locals' -komennot n�ytt�v�t valitun 
-
 kehyksen argumentit ja paikalliset muuttujat.
-
 Katso komennot 'up', 'down' ja 'bt'. 
 
-
-
 [handle]
 
-
-
 M��rit�, miten fdb k�sittelee Flash Playerin virheet.
-
 Esimerkkej�:
-
   handle recursion_limit stop
-
     N�yt� fdb:ss� ilmoitus virheest� recursion_limit ja pys�yt�, kuten 
-
     keskeytyskohdassa.
-
   handle all print nostop
-
     N�yt� ilmoitus kaikista virheist� fdb:ss�, mutta �l� pys�yt�.
-
 Ensimm�inen argumentti on virheen nimi tai 'all'.
-
 Lis�argumentit ovat toimintoja, jotka koskevat virhett�.
-
 Virheiden nimet n�et sy�tt�m�ll� 'info handle'.
-
 Toiminnot ovat print/noprint ja stop/nostop.
-
 Toiminnolla 'print' sanoma tulostetaan t�m�n virheen sattuessa.
-
 Toiminnolla 'stop' palataan virheenkorjaustoimintoon t�m�n virheen sattuessa. 
-
 Toiminto 'print' suoritetaan samalla.
 
-
-
 [help]
 
-
-
 Onko fdb sinulle uusi? N�et sen perustiedot sy�tt�m�ll� 'tutorial'.
-
 Luettelo fdb:n komennoista:
-
 bt (bt)             Tulosta kaikkien pinokehysten backtrace-luettelot.
-
 break (b)           M��rit� keskeytyskohta tietyll� rivill� tai tietyss� 
-
                     toiminnossa.
-
 catch (ca)          Keskeytys poikkeuksen sattuessa.
-
 cf (cf)             N�yt� nykyisen tiedoston nimi ja numero.
-
 clear (cl)          Poista keskeytyskohta tietylt� rivilt� tai tietyst� 
-
                     toiminnosta.
-
 condition (cond)    K�yt� ehdollista ilmausta keskeytyspisteess� tai poista 
-
                     ilmaus.
-
 continue (c)        Jatka suorittamista keskeytyskohdassa pys�htymisen j�lkeen.
-
 commands (com)      M��rit� komennot, jotka suoritetaan keskeytyspisteeseen 
-
                     saavuttaessa.
-
 delete (d)          Poista keskeytyspisteet tai automaattisen n�yt�n ilmaukset.
-
 directory (dir)     Lis�� hakemisto l�hdetiedostojen hakupolkuun.
-
 disable (disab)     Poista keskeytyspisteet tai automaattisen n�yt�n ilmaukset 
-
                     k�yt�st�.
-
 disassemble (disas) Pura l�hderivit tai -toiminnot.
-
 display (disp)      Lis�� automaattisen n�yt�n ilmaus.
-
 enable (e)          Ota keskeytyspisteet tai automaattisen n�yt�n ilmaukset 
-
                     k�ytt��n.
-
 file (fil)          M��rit� sovelluksen virheenkorjaus.
-
 finish (f)          Suorita, kunnes nykyinen toiminto palaa.
-
 handle (han)        M��rit�, miten virhe k�sitell��n.
-
 help (h)            N�yt� fdb-komentojen ohje.
-
 home (ho)           M��rit� luettelosijainti paikkaan, miss� suorittaminen 
-
                     keskeytet��n.
-
 info (i)            N�yt� tiedot ohjelmasta, josta korjataan virheit�.
-
 kill (k)            Lopeta sen ohjelman suorittaminen, josta korjataan virheit�.
-
 list (l)            Lis�� m��ritetty toiminto tai rivi luetteloon.
-
 next (n)            Askelluta ohjelma.
-
 print (p)           Tulosta EXP-muuttujan arvo.
-
 pwd (pw)            Tulosta ty�hakemisto.
-
 quit (q)            Sulje fdb.
-
 run (r)             K�ynnist� ohjelma, jonka virheet on korjattu.
-
 set (se)            Aseta muuttujan arvo.
-
 source (so)         Lue fdb-komennot tiedostosta.
-
 step (s)            Askelluta ohjelma, kunnes ohjelma saavuttaa eri l�hderivin.
-
 tutorial (t)        N�yt� opetusohjelma, jossa selitet��n fdb:n k�ytt�.
-
 undisplay (u)       Poista automaattisen n�yt�n ilmaus.
-
 viewswf (v)         M��rit� tai tyhjenn� suodatin tiedostoluettelolle swf:n 
-
                     perusteella.
-
 watch (wa)          Lis�� katselukohta annettuun muuttujaan.
-
 what (wh)           N�ytt�� muuttujan sis�ll�n.
-
 where (w)           Sama kuin bt.
-
 Kirjoita 'help' ja sen j�lkeen komennon nimi, niin n�et t�ydet k�ytt�ohjeet.
 
-
-
 [home]
 
-
-
 M��rit� luettelosijainti paikkaan, miss� suorittaminen keskeytet��n.
 
-
-
 [info]
 
-
-
 Yleiskomento, jolla n�hd��n erilaisia tietoja ohjelmasta, josta korjataan 
-
 virheit�.
-
 Luettelo info-alikomennoista:
-
 info arguments (i a)    Nykyisen pinokehyksen argumenttimuuttujat.
-
 info breakpoints (i b)  K�ytt�j�n asetettavien keskeytyskohtien tilat.
-
 info display (i d)      N�yt� luettelo automaattisen n�yt�n ilmauksista.
-
 info files (i f)        Niiden kohteiden ja tiedostojen nimet, joista korjataan 
-
                         virheit�.
-
 info functions (i fu)   Kaikki toimintojen nimet.
-
 info handle (i h)       Miten virhe k�sitell��n.
-
 info locals (i l)       Nykyisen pinokehyksen paikalliset muuttujat.
-
 info scopechain (i sc)  Nykyisen pinokehyksen vaikutusalueketju.
-
 info sources (i so)     L�hdetiedostot ohjelmassa.
-
 info stack (i s)        Pinon backtrace.
-
 info swfs (i sw)        T�m�n istunnon swf-luettelo.
-
 info targets(i t)       Sovellus, josta korjataan virheit�.
-
 info variables (i v)    Kaikki yleisten ja staattisten muuttujien nimet.
-
 Kirjoita 'help info' ja sen j�lkeen info-alikomennon nimi, niin n�et t�ydet 
-
 k�ytt�ohjeet.
 
-
-
 [info arguments]
 
-
-
 N�yt� nykyisen pinokehyksen argumentit.
 
-
-
 [info breakpoints]
 
-
-
 N�yt� kaikkien keskeytyskohtien ja katselukohtien tila.
-
 Type-sarakkeesta n�kyy jompikumpi n�ist�:
-
    breakpoint   - tavallinen keskeytyskohta
-
    watchpoint   - katselukohta
-
 Disp-sarake sis�lt�� jonkin seuraavista: 'keep', 'del', 'dis'. T�m� kertoo, 
-
 mit� keskeytyskohdassa tapahtuu. Vaihtoehto 'dis' tarkoittaa sit�, ett� 
-
 keskeytyskohta poistetaan k�yt�st�. Vaihtoehto 'del' tarkoittaa sit�, ett� 
-
 keskeytyskohta poistetaan.  
-
 'Address'-sarake kertoo osoitteen. 'What'-sarake kertoo tiedoston/rivinumeron. 
 
-
-
 [info display]
 
-
-
 N�yt� luettelo automaattisen n�yt�n ilmauksista ja niiden numeroista.
 
-
-
 [info files]
 
-
-
 N�yt� tiedostojen nimet ja numerot sovellukselle, josta korjataan virheit�, 
-
 mukaan luettuna l�hdetiedostot, kehystiedostot ja automaattisesti luodut 
-
 tiedostot.
-
 Esimerkkej�:
-
   info files
-
     N�ytt�� aakkosj�rjestyksess� kaikki tiedostot luokan mukaan.
-
   info files my
-
   info files my*
-
     N�ytt�� aakkosj�rjestyksess� kaikki tiedostot, joiden nimi alkaa "my".
-
   info files *.as
-
     N�ytt�� aakkosj�rjestyksess� kaikki tiedostot, joiden nimi p��ttyy ".as".
-
   info files *foo*
-
     N�ytt�� aakkosj�rjestyksess� kaikki tiedostot, joiden nimeen sis�ltyy "foo".
-
 Tiedostot n�ytet��n muodossa name#N, jossa N on tiedoston numero.
-
 Monissa komennoissa tiedoston nimen voi korvata #N.
 
-
-
 [info functions]
 
-
-
 N�yt� toimintojen nimet.
-
 Esimerkkej�:
-
   info functions .
-
     N�yt� kaikki toiminnot nykyisess� tiedostossa.
-
   info functions myapp.mxml
-
     N�yt� kaikki toiminnot tiedostossa myapp.mxml.
-
   info functions #3
-
     N�yt� kaikki toiminnot tiedostossa #3.
-
   info functions
-
     N�yt� kaikki toiminnot kaikissa tiedostoissa.
-
 Tiedostonimet ja -numerot n�et sy�tt�m�ll� 'info sources' tai 'info files'.
-
 Lyhennetyt tiedostonimet hyv�ksyt��n, jos ne ovat selvi�.
 
-
-
 [info handle]
 
-
-
 N�yt�, mit� fdb tekee, kun Flash Playeriss� tapahtuu virhe.
-
 Esimerkkej�:
-
   info handle
-
     N�yt�, miten fdb k�sittelee kaikki virheet.
-
   info handle recursion_limit
-
     N�yt�, miten fdb k�sittelee virheen recursion_limit.
 
-
-
 [info locals]
 
-
-
 N�yt� nykyisen pinokehyksen paikalliset muuttujat.
 
-
-
 [info scopechain]
 
-
-
 N�yt� nykyisen pinokehyksen vaikutusalueketju.  Vaikutusalueketju on 
-
 objektiluettelo, jossa Flash Player suorittaa haun yritt�ess��n ratkaista 
-
 symbolin nimen.
 
-
-
 [info sources]
 
-
-
 N�yt� l�hdetiedostojen nimet ja numerot sovellukselle, josta korjataan virheit�.
-
 Ei sis�ll� kehystiedostoja ja automaattisesti luotuja tiedostoja.
-
 Tiedostot n�ytet��n muodossa name#N, jossa N on tiedoston numero.
-
 Monissa komennoissa tiedoston nimen voi korvata #N.
 
-
-
 [info stack]
 
-
-
 Pinon backtrace.
 
-
-
 [info swfs]
 
-
-
 N�yt� virheenkorjausistunnon tuntemat swf-tiedostot.  Komennolla 'viewswf' n�et 
-
 lis�tietoja siit�, miten tiedostoluettelo voidaan suodattaa swf-nimen 
-
 perusteella. 
 
-
-
 [info targets]
 
-
-
 N�yt� URL (http: tai tiedosto:) sovellukselle, josta korjataan virheit�.
 
-
-
 [info variables]
 
-
-
 N�yt� kaikki yleisten ja staattisten muuttujien nimet ja arvot.
 
-
-
 [info ?]
 
-
-
 M��ritt�m�t�n info-komento. Kokeile komentoa 'help info'.
 
-
-
 [kill]
 
-
-
 Lopeta sen ohjelman suorittaminen, josta korjataan virheit�.
-
 T�m� komento ei hyv�ksy argumentteja.
 
-
-
 [list]
 
-
-
 Luetteloi koodirivit l�hdetiedostossa.
-
 Esimerkkej�:
-
   list
-
     Luetteloi kymmenen lis�rivi� nykyisess� tiedostossa edellisen luettelon 
-
     j�lkeen tai sen ymp�rille.
-
   list -
-
     Luetteloi kymmenen rivi� nykyisess� tiedostossa ennen edellist� luetteloa.
-
   list 87
-
     Luetteloi kymmenen rivi� nykyisess� tiedostossa rivin 87 ymp�rill�.
-
   list 87 102
-
     Luetteloi nykyisen tiedoston rivit 87�102.
-
 Sen lis�ksi, ett� k�yt�t yksinkertaisia rivinumeroita yll� olevan esimerkin 
-
 mukaisesti, voit m��ritt�� rivej� seitsem�ll� muulla tavalla:
-
   doThis
-
       Toiminnon doThis() ensimm�inen rivi nykyisess� tiedostossa.
-
    myapp.mxml
-
       Rivi 1 tiedostossa myapp.mxml.
-
    myapp.mxml:doThat
-
       Toiminnon doThat() ensimm�inen rivi tiedostossa myapp.mxml.
-
    myapp.mxml:56
-
       Rivi 56 tiedostossa myapp.mxml.
-
    #3
-
       Rivi 1 tiedostossa #3.
-
    #3:doOther
-
       Se tiedoston #3 rivi, jolla toiminto doOther() alkaa.
-
    #3:29
-
       Rivi 29 tiedostossa #3.
-
 Tiedostonimet ja -numerot n�et sy�tt�m�ll� 'info sources' tai 'info files'.
-
 Toimintojen nimet n�et sy�tt�m�ll� 'info functions'.
-
 Lyhennetyt tiedostojen ja toimintojen nimet hyv�ksyt��n, jos ne ovat selvi�.
-
 Tiedoston lis��minen luetteloon tekee tiedostosta nykyisen tiedoston. (Katso 
-
 komento 'cf'.)
 
-
-
 [next]
 
-
-
 Askelluta ohjelma alirutiinikutsujen l�pi.
-
   next
-
     Askelluta kerran.
-
   next 3
-
     Askelluta kolmasti, tai kunnes ohjelma pys�htyy jostain muusta syyst�.
-
 Toimii kuten komento 'step', kunhan alirutiinikutsuja ei tapahdu. Jos 
-
 alirutiinikutsu tapahtuu, sit� k�sitell��n yhten� ohjeena.
 
-
-
 [print]
 
-
-
 Tulosta muuttujan tai ilmauksen arvo.
-
 Esimerkkej�:
-
   print i
-
     Tulosta 'i'-arvo.
-
   print employee.name
-
     Tulosta 'employee.name'-arvo.
-
   print employee
-
     Tulosta objektin 'employee' arvo.
-
     Tulos saattaa olla esimerkiksi [Object 10378].
-
   print employee.
-
     Tulosta objektin 'employee' kaikkien ominaisuuksien arvot.
-
   print *employee
-
     Tulosta objektin 'employee' kaikkien ominaisuuksien arvot.
-
     Etuliiteoperaattori * on j�lkiliiteoperaattorin . etuliitevaihtoehto.
-
   print #10378.
-
     Tulosta kaikkien Object #10378:n ominaisuuksien arvot.
-
 K�ytett�viss� ovat valitun pinokehyksen sanastollisen ymp�rist�n muuttujat sek� 
-
 kaikki ne muuttujat, joiden vaikutusalue on yleinen tai kokonainen tiedosto.
 
-
-
 [pwd]
 
-
-
 Tulosta nykyinen ty�hakemisto.
-
 T�m� on hakemisto, josta fdb k�ynnistettiin. Hakemistoa ei voi muuttaa fdb:n 
-
 sis�ll�. Komentojen 'run' ja 'source' argumentti voidaan m��ritt�� suhteessa 
-
 t�h�n hakemistoon.
-
 T�m� komento ei hyv�ksy argumentteja.
 
-
-
 [quit]
 
-
-
 Sulje fdb.
-
 T�m� komento ei hyv�ksy argumentteja.
 
-
-
 [run]
 
-
-
 Aloita virheenkorjausistunto.
-
 Esimerkkej�:
-
   run http://www.mysite.com/myapp.mxml
-
     Suorittaa m��ritetyn MXML-sovelluksen.
-
   run myapp.swf
-
   run mydir\myapp.swf
-
   run c:\mydir\myapp.swf
-
     Suorittaa paikallisen SWF-tiedoston myapp.swf, joka voidaan m��ritt�� joko 
-
     suhteessa nykyiseen hakemistoon (katso komento 'pwd') tai k�ytt�en 
-
     absoluuttista polkua. N�iss� tapauksissa tiedoston myapp.swd 
-
     (virheenkorjaustiedot sis�lt�v� tiedosto) pit�� sijaita samassa 
-
     hakemistossa kuin tiedosto myapp.swf.
-
   run
-
     Suorita edell� komennossa 'file' m��ritetty sovellus.
-
     Jos sovellusta ei ole m��ritetty, fdb odottaa, kunnes jokin sovellus 
-
     muodostaa siihen yhteyden. Jos mik��n sovellus ei tee niin, fdb suorittaa 
-
     aikakatkaisun.
-
 Komento 'run' k�ynnist�� sovelluksen selaimessa tai erillisess� Flash 
-
 Playeriss�.
-
 Heti, kun sovellus k�ynnistyy, se keskeytyy fdb-tilaan, jotta voit m��ritt�� 
-
 keskeytyskohdat.
 
-
-
 Macintosh-k�ytt�j�rjestelm�ss� komennon ainoa tuettu muoto on 'run', ilman 
-
 argumentteja.  Flash Player pit�� k�ynnist�� manuaalisesti.
 
-
-
 [set]
 
-
-
 M��rit� muuttujan tai mukavuusmuuttujan arvo.
-
 Mukavuusmuttujia esiintyy ainoastaan fdb:ss�. Ne eiv�t ole osa ohjelmaa.
-
 Mukavuusmuuttujilla on etuliite '$'. Muuttujilla voi olla mik� tahansa nimi, 
-
 joka ei ole jo olemassa olevan muuttujan nimi.  Esimerkiksi $myVar.  
-
 Mukavuusmuuttujilla voidaan hallita useita fdb:n ominaisuuksia.  
 
-
-
 Seuraavat mukavuusmuuttujat ovat fdb:n k�yt�ss�.
-
 $listsize          - komennolle 'list' n�ytett�vien l�hderivien m��r�
-
 $columnwrap        - sen sarakkeen numero, jossa tulostus rivitet��n
-
 $infostackshowthis - jos 0, pinon backtrace-luettelossa ei lue 'this'
-
 $invokegetters     - jos 0, est�� fdb:t� suorittamasta get-funktioita
-
 $bpnum             - viimeinen m��ritetty keskeytyskohdan numero
-
 $displayattributes - jos 1, 'print var.' n�ytt�� kaikki 'var'-j�senien 
-
                      attribuutit (esim. yksityinen, staattinen)
 
-
-
 Esimerkkej�:
-
   set i = 3
-
     M��ritt�� muuttujan 'i' numerolle 3.
-
   set employee.name = "Susan"
-
     M��ritt�� muuttujan 'employee.name' merkkijonolle "Susan".
-
   set $myVar = 20
-
     M��ritt�� mukavuusmuuttujan '$myVar' numerolle 20.
 
-
-
 [show]
 
-
-
 Yleiskomento, jolla n�hd��n erilaisia tilatietoja fdb:st�.
-
 Luettelo show-alikomennoista:
-
 show break (sh b)       Suorituksen keskeytyksen paikka ja syy.
-
 show directories (sh d) Hakemistot, joista etsit��n l�hdetiedostoja.
-
 show files (sh f)       Kohdetiedostot ja -polut.
-
 show functions (sh fu)  Toimintorivin m��ritystiedot. 
-
 show locations (sh l)   Keskeytyskohtien paikat.
-
 show memory (sh m)      Nykyinen muistin k�ytt�.
-
 show net (sh n)         Soittimen viestitilastot. 
-
 show properties (sh p)  Ominaisuuksien arvot.
-
 show uri (sh u)         Soittimen URI t�t� istuntoa varten. 
-
 show variable (sh v)    Raw-muuttujan noutaminen.
-
 Kirjoita 'help show' ja sen j�lkeen show-alikomennon nimi, niin n�et t�ydet 
-
 k�ytt�ohjeet.
 
-
-
 [show break]
 
-
-
 N�yt� siirtym� SWF:ss�, johon ohjelma pys�htyi.
 
-
-
 [show directories]
 
-
-
 N�yt� nykyinen hakupolku l�hdetiedostojen l�yt�mist� varten.
 
-
-
 [show files]
 
-
-
 N�yt� kaikkien kohdetiedostojen polku ja tiedostonimi.
 
-
-
 [show functions]
 
-
-
 N�yt� toiminnon/rivinumeron m��ritystiedot.
-
 Esimerkkej�:
-
   show functions .
-
     N�ytt�� kaikkien toimintojen m��ritystiedot nykyisess� tiedostossa.
-
   show functions myapp.mxml
-
     N�ytt�� kaikkien toimintojen m��ritystiedot tiedostossa myapp.mxml.
-
   show functions #3
-
     N�ytt�� kaikkien toimintojen m��ritystiedot tiedostossa #3.
-
   show functions
-
     N�ytt�� kaikkien toimintojen m��ritystiedot kaikissa tiedostoissa.
-
 Tiedostonimet ja -numerot n�et sy�tt�m�ll� 'info sources' tai 'info files'.
-
 Lyhennetyt tiedostonimet hyv�ksyt��n, jos ne ovat selvi�.
 
-
-
 [show locations]
 
-
-
 N�ytt�� luettelon sijainneista, jotka kullekin keskeytyskohdalle on m��ritetty.
 
-
-
 [show memory]
 
-
-
 N�ytt�� Java-n�enn�ismuistin tilastot.
 
-
-
 [show net]
 
-
-
 N�ytt�� tiedot Flash Playeriin l�hetetyist� ja silt� vastaanotetuista 
-
 viesteist�.
 
-
-
 [show properties]
 
-
-
 N�ytt�� luettelon virheenkorjauksessa k�ytetyist� mukavuusmuuttujista. 
 
-
-
 [show uri]
 
-
-
 N�ytt�� URI:n, jonka soitin l�hetti t�t� istuntoa varten.
 
-
-
 [show variable]
 
-
-
 N�ytt�� muuttujan j�senten arvot.  Vaaditaan kaksi parametri�. Ensimm�inen on 
-
 numeroarvoinen muuttujan tunniste. Toinen on muuttujan ominaisuuden nimi.  
-
 Mukavuusmuuttujaa $invokegetters k�ytet��n m��ritt�m��n, k�ynnistet��nk� 
-
 get-ominaisuus, jos sellainen on olemassa.
-
 Esimerkki:
-
     show variable 1 __proto__
 
-
-
 [show ?]
 
-
-
 M��ritt�m�t�n show-komento. Kokeile komentoa 'help show'.
 
-
-
 [source]
 
-
-
 Lue fdb-komennot tiedostosta ja suorita ne.
-
   source mycommands.txt
-
   source mydir\mycommands.txt
-
   source c:\mydir\mycommands.txt
-
     Lukee kohteen mycommands.txt ja suorittaa siin� olevat fdb-komennot.
-
     Komennot sis�lt�v� tiedosto voidaan m��ritt�� joko
-
 	suhteessa nykyiseen hakemistoon (katso komento 'pwd')
-
 	tai k�ytt�en absoluuttista polkua.
-
 Tiedosto .fdbinit luetaan automaattisesti t�ll� tavalla, kun fdb k�ynnistet��n.
-
 Tiedostoa .fdbinit haetaan vain nykyisest� hakemistosta. T�m� tarkoittaa sit�, 
-
 ett� voit m��ritt�� useita .fdbinit-tiedostoja eri projekteja varten.
 
-
-
 [step]
 
-
-
 Askelluta ohjelma, kunnes ohjelma saavuttaa eri l�hderivin.
-
 Esimerkkej�:
-
   step
-
     Askelluta kerran.
-
   step 3
-
     Askelluta kolmasti, tai kunnes ohjelma pys�htyy jostain muusta syyst�.
 
-
-
 [tutorial]
 
-
-
 N�yt� opetusohjelma, jossa selitet��n fdb:n k�ytt�.
-
 T�m� komento ei hyv�ksy argumentteja.
 
-
-
 [Tutorial]
 
-
-
 Tyypillinen fdb-istunto:
-
 K�ynnist� sovellus komennolla 'run'.
-
 Tarkastele tiedostonimi� komennolla 'info sources'.
-
 Lis�� tiedosto luetteloon komenolla 'list'.
-
 M��rit� keskeytyskohdat komennolla 'break'.
-
 Suorita ohjelma komennolla 'continue', kunnes osutaan keskeytyskohtaan.
-
 Tutki ohjelman tilaa komennoilla 'where', 'print', 'info locals'.
-
 Suorita yksitt�isi� lausekkeita komennoilla 'next', 'step', 'finish'.
-
 Jatka suorittamista komennolla 'continue'.
-
 Sulje fdb komennolla 'quit'.
 
-
-
 [undisplay]
 
-
-
 Poista yksi tai usea automaattisen n�yt�n ilmaus.
-
 Esimerkkej�:
-
   undisplay
-
     Poista kaikki automaattisen n�yt�n ilmaukset.
-
   undisplay 2 7
-
     Poista automaattisen n�yt�n ilmaukset #2 ja #7.
-
 N�et automaattisen n�yt�n ilmaukset ja niiden numerot sy�tt�m�ll� 'info 
-
 display'.
 
-
-
 [up]
 
-
-
 Valitse ja tulosta t�t� kutsunut pinokehys.
-
 Seuraavat komennot 'info arguments' ja 'info locals' n�ytt�v�t
-
 valitun kehyksen paikalliset muuttujat ja argumentit.
-
 Katso komennot 'down' ja 'frame'.
 
-
-
 [viewswf]
 
-
-
 M��ritt�� tai tyhjent�� tiedostoluettelon ('info files' tai 'info sources') 
-
 suodattimen swf-nimen perusteella. 
-
 Ilman parametrej� kaikki tiedostot n�ytet��n.  Jos sama tiedosto esiintyy 
-
 useassa swf:ss�, luettelossa n�kyy vain tiedoston ensimm�inen esiintym�.  
-
 Saat tiedoston muut esiintym�t n�kyviin k�ytt�m�ll� tiedoston numeroa (esim. 
-
 'list #192') tai t�t� komentoa parametrin kanssa (katso alla). N�in voit 
-
 tarkastella jonkin tietyn swf:n tiedostoja.  Jos k�yt�ss� on vain yksi 
-
 parametri, komennon 'info swfs' n�ytt�m� swf-nimi, ainoastaan m��ritetyn swf:n 
-
 tiedostot tulevat n�kyviin luetteloon.  
-
 Muissa swf-tiedostoissa olevia tiedostoja ei n�ytet�.  T�m� komento vaikuttaa 
-
 my�s komentoihin, jotka hyv�ksyv�t parametriksi tiedoston (esim. 'break').
-
 Esimerkki:
-
   viewswf myApp.mxml.swf
-
     Vain tiedostossa myApp.mxml.swf olevat tiedostot n�ytet��n.
-
   viewswf 
-
     Kaikkien swf-tiedostojen kaikki tiedostot n�ytet��n.
-
  
-
 [watch]
 
-
-
 Lis�� katselukohta annettuun muuttujaan. Virheenkorjaustoiminto keskeytt�� 
-
 suorittamisen muuttujan arvon vaihtuessa.
-
 Esimerkki:
-
   watch foo
 
-
-
 [what]
 
-
-
 N�ytt�� kontekstin, jonka sis�ll� muuttuja ratkaistaan. 
 
-
-
 [where]
 
-
-
 Pinon backtrace.
 
-
-
 [zzz]
 
-
-
 ((( Keep this unused topic at the end of the file    )))
-
 ((( so that the next-to-last one is parsed properly. )))
-

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_fr.txt
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_fr.txt b/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_fr.txt
index f17ff29..5caffc7 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_fr.txt
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_fr.txt
@@ -1,4 +1,4 @@
-
+    
       Licensed to the Apache Software Foundation (ASF) under one or more
       contributor license agreements.  See the NOTICE file distributed with
       this work for additional information regarding copyright ownership.
@@ -14,1691 +14,822 @@
       See the License for the specific language governing permissions and
       limitations under the License.
 
-This file contains the text displayed by the 'help' command in fdb.
-
 
+This file contains the text displayed by the 'help' command in fdb.
 
 It is divided into "topics". For example, when an fdb user types
-
 'help break', the [break] topic below is displayed.
 
-
-
 The first and last lines of each topic should be blank.
-
 They don't get displayed in fdb; they are here only
-
 to make this file more easily readable.
 
-
-
 Help text should be formatted to not wrap
-
 when displayed on an 80-character-wide console.
-
 The following line is 80 characters wide.
 
-
-
 --------------------------------------------------------------------------------
 
-
-
 [?]
 
-
-
-Commande non définie. Saisissez « help » pour afficher la liste de toutes les 
-
-commandes fdb.
-
-
+Commande non définie. Saisissez « help » pour afficher la liste de toutes les commandes 
+fdb.
 
 [break]
 
-
-
 Définit un point d'arrêt à une ligne ou une fonction spécifique.
-
 Exemples :
-
   break 87
-
     Définit un point d'arrêt à la ligne 87 du fichier en cours.
-
   break myapp.mxml:56
-
     Définit un point d'arrêt à la ligne 56 du fichier myapp.mxml.
-
   break #3:29
-
     Définit un point d'arrêt à la ligne 29 du fichier n° 3.
-
   break doThis
-
     Définit un point d'arrêt à la fonction doThis() du fichier en cours.
-
   break myapp.mxml:doThat
-
     Définit un point d'arrêt à la fonction doThat() du fichier myapp.mxml.
-
   break #3:doOther
-
     Définit un point d'arrêt à la fonction doOther() du fichier n° 3.
-
   break
-
-   Définit un point d'arrêt à l'adresse d'exécution actuelle dans le frame de 
-
-pile en cours. Cela sert à l'arrêt d'un retour vers un frame de pile.
-
-Pour afficher les noms et numéros de fichiers, saisissez « info sources » ou 
-
-« info files ».
-
+   Définit un point d'arrêt à l'adresse d'exécution actuelle dans le frame de pile en cours.
+Cela sert à l'arrêt d'un retour vers un frame de pile.
+Pour afficher les noms et numéros de fichiers, saisissez « info sources » ou « info files ».
 Pour afficher les noms de fonctions, saisissez « info functions ».
-
-Les noms de fichiers et de fonctions abrégés sont acceptés s'ils ne sont pas 
-
-ambigus.
-
-Si le numéro de ligne est spécifié, arrêtez au début du code de cette ligne.
-
-Si la fonction est spécifiée, arrêtez au début du code de cette fonction.
-
+Les noms de fichiers et de fonctions abrégés sont acceptés s'ils ne sont pas ambigus.
+Si un numéro de ligne est spécifié, l'arrêt se produit au début du code de cette ligne.
+Si une fonction est spécifiée, l'arrêt se produit au début du code de cette fonction.
 Pour plus de contrôle des points d'arrêt, voir « commands » et « condition ».
 
-
-
 [bt]
 
-
-
 Parcours arrière de la pile.
 
-
-
 [catch]
 
-
-
-S'arrête lorsqu'une exception est émise.  Cela affecte uniquement les 
-
-exceptions interceptées, c'est-à-dire celles qui seront gérées par un bloc 
-
-« catch ».  Les exceptions non interceptées s'arrêtent toujours dans le 
-
-débogueur.
-
-
+S'arrête lorsqu'une exception est émise.  Cela affecte uniquement les exceptions 
+interceptées, c'est-à-dire celles qui seront gérées par un bloc « catch ».  
+Les exceptions non interceptées s'arrêtent toujours dans le débogueur.
 
 Utilisez la commande « delete » pour supprimer un point d'interception.
 
-
-
 Exemples :
-
   catch *
-
     S'arrête lorsqu'une exception est émise.
-
   catch ReferenceError
-
-    S'arrête lorsqu'une erreur de référence (ReferenceError) est émise, qu'elle 
-
-    soit interceptée ou non.
-
-
+    S'arrête lorsqu'une erreur de référence (ReferenceError) est émise, qu'elle soit 
+interceptée ou non.
 
 [cf]
 
-
-
 Affiche le nom et le numéro du fichier en cours ou modifie le fichier en cours.
-
 Exemples :
-
   cf
-
     Affiche le nom et le numéro du fichier en cours.
-
   cf myapp.mxml
-
-    Change le fichier en cours en fichier myapp.mxml.
-
+    myapp.mxml devient le fichier en cours.
   cf #29
-
-    Change le fichier en cours en fichier n° 29.
-
-Pour afficher les noms et numéros de fichiers, saisissez « info sources » ou 
-
-« info files ».
-
+    Le fichier n° 29 devient le fichier en cours.
+Pour afficher les noms et numéros de fichiers, saisissez « info sources » ou « info files ».
 Les noms de fichiers abrégés sont acceptés s'ils ne sont pas ambigus.
-
-Le classement d'un fichier avec « list » fait également de ce fichier celui en 
-
-cours.
-
-
+Un fichier devient également le fichier en cours lorsque vous l'affichez avec la commande 
+« list ».
 
 [clear]
 
-
-
-Supprime un point d'arrêt à une ligne ou une fonction spécifique.
-
+Supprime un point d'arrêt à la ligne ou la fonction spécifiée.
 Exemples :
-
   clear 87
-
     Supprime le point d'arrêt à la ligne 87 du fichier en cours.
-
   clear myapp.mxml:56
-
     Supprime le point d'arrêt à la ligne 56 du fichier myapp.mxml.
-
   clear #3:29
-
     Supprime le point d'arrêt à la ligne 29 du fichier n° 3.
-
   clear doThis
-
     Supprime le point d'arrêt à la fonction doThis() du fichier en cours.
-
   clear myapp.mxml:doThat
-
     Supprime le point d'arrêt à la fonction doThat() du fichier myapp.mxml.
-
   clear #3:doOther
-
     Supprime le point d'arrêt à la fonction doOther() du fichier n° 3.
-
   clear
-
     Supprime le point d'arrêt à la ligne actuelle du fichier en cours. 
-
-Pour afficher les noms et numéros de fichiers, saisissez « info sources » ou 
-
-« info files ».
-
+Pour afficher les noms et numéros de fichiers, saisissez « info sources » ou « info files ».
 Pour afficher les noms de fonctions, saisissez « info functions ».
-
-Les noms de fichiers et de fonctions abrégés sont acceptés s'ils ne sont pas 
-
-ambigus.
-
-Si le numéro de ligne est spécifié, tous les points d'arrêt de cette ligne sont 
-
-supprimés.
-
-Si la fonction est spécifiée, les points d'arrêt situés en début de fonction 
-
-sont supprimés.
-
-
+Les noms de fichiers et de fonctions abrégés sont acceptés s'ils ne sont pas ambigus.
+Si une numéro de ligne est spécifié, tous les points d'arrêt de cette ligne sont supprimés.
+Si une fonction est spécifiée, les points d'arrêt situés en début de fonction sont supprimés.
 
 [continue]
 
-
-
 Continue l'exécution après l'arrêt au point d'arrêt.
-
 Cette commande ne prend aucun argument.
 
-
-
 [condition]
 
 
-
-
-
-Spécifie le numéro de point d'arrêt N auquel s'arrêter si COND est vraie.
-
-Utilisation : « condition N COND », où N est un entier et COND une expression à 
-
-évaluer lorsque le point d'arrêt N est atteint.
-
-
+Spécifie le numéro de point d'arrêt N auquel s'arrêter si COND est vrai.
+Utilisation : « condition N COND », où N est un entier et COND une expression à évaluer 
+lorsque le point d'arrêt N est atteint.
 
 [commands]
 
-
-
-Définit des commandes à exécuter lorsqu'un point d'arrêt est atteint.
-
+Définit les commandes à exécuter lorsqu'un point d'arrêt est atteint.
 Indiquez le numéro de point d'arrêt en tant qu'argument après « commands ».
-
 Sans argument, le dernier point d'arrêt défini est celui ciblé.
-
-Les commandes viennent ensuite, en commençant sur la ligne d'après.
-
+Les commandes sont insérées ensuite à partir de la ligne suivante.
 Tapez une ligne contenant « end » pour indiquer la fin des commandes.
-
-Saisissez « silent » sur la première ligne pour rendre le point d'arrêt 
-
-silencieux. Aucune sortie n'est alors imprimée lorsqu'il est atteint, excepté 
-
-les éléments imprimés par les commandes.
-
+Saisissez « silent°» sur la première ligne pour rendre le point d'arrêt silencieux.
+Aucune sortie n'est alors imprimée lorsqu'il est atteint, excepté les éléments 
+imprimés par les commandes.
 Exemple :
-
   (fdb) commands
-
-  Tapez les commandes, pour le moment où le point d'arrêt 1 est atteint, une 
-
-par ligne.
-
+  Tapez les commandes, pour le moment où le point d'arrêt 1 est atteint, une par ligne.
   Terminez avec une ligne indiquant simplement « end ».
-
   >w
-
   >end
 
+[connect]
 
+Se connecte à la version de débogage de Flash Player qui écoute un port.
+Le seul lecteur écoutant actuellement les connexions de débogage est spécifique au mobile, 
+les autres se connectent toujours.
 
-[delete]
+Exemples :
+  connect
+    Se connecte à la version de débogage de Flash Player qui écoute le port 7936.
+  connect 7938
+    Se connecte à la version de débogage de Flash Player qui écoute le port 7938.
+    
+[worker]
 
+Définit l'opérateur actif auquel les commandes de débogueur suivantes sont envoyées.
+Saisissez « info workers » pour obtenir la liste des opérateurs. 
+Le thread principal a l'ID 0.
 
+Exemples :
+  worker 3
+    Définit l'opérateur possédant l'ID 3 comme opérateur actif.        
 
-Supprime un ou plusieurs points d'arrêt.
+[delete]
 
+Supprime un ou plusieurs points d'arrêt.
 Exemples :
-
   delete
-
     Supprime tous les points d'arrêt.
-
   delete 2 5
-
     Supprime les points d'arrêt n° 2 et 5.
-
-Pour afficher des numéros de points d'arrêt, saisissez « info breakpoints ».
-
-
+Pour afficher les numéros des points d'arrêt, saisissez « info breakpoints ».
 
 [directory]
 
-
-
-Modifie la liste des répertoires dans lesquels fdb recherche les fichiers 
-
-sources.
-
-
+Modifie la liste des répertoires dans lesquels fdb recherche les fichiers source.
 
 Exemples :
 
-
-
   directory
-
-    Restaure la valeur par défaut de la liste, c'est-à-dire le répertoire dans 
-
-    lequel le fichier source a été compilé en code objet, suivi par le 
-
-    répertoire de travail actuel.
-
-
+    Restaure la valeur par défaut de la liste, c'est-à-dire le répertoire dans lequel 
+le fichier source a été compilé en code objet, suivi par le répertoire de travail actuel.
 
   directory C:\MySource        (Windows)
-
   directory /MySource          (Mac)
-
-    Ajoute le répertoire spécifié au début de la liste de répertoires, pour y 
-
-    rechercher une source.  Lors d'une recherche de la source pour la classe 
-
-    mypackage.MyClass, par exemple, le débogueur recherche 
-
-    C:\MySource\mypackage\MyClass.as et C:\MySource\MyClass.as.
-
-
+    Ajoute le répertoire spécifié au début de la liste de répertoires, pour y rechercher 
+une source.  
+Lors d'une recherche de la source pour la classe mypackage.MyClass, par exemple,le débogueur 
+recherche C:\MySource\mypackage\MyClass.as et C:\MySource\MyClass.as.
 
   directory C:\Dir1;C:\Dir2    (Windows : utiliser le séparateur « ; »)
-
   directory /Dir1:/Dir2        (Mac : utiliser le séparateur « : »)
-
-    Ajoute plusieurs répertoires au début de la liste de répertoires, pour y 
-
-    rechercher une source.
-
-
+    Ajoute plusieurs répertoires au début de la liste de répertoires, pour y rechercher 
+une source.
 
 Pour afficher la liste actuelle, saisissez « show directories ».
 
-
-
 [disable]
 
-
-
 Désactive un ou plusieurs points d'arrêt ou expressions d'affichage automatique.
-
 Exemples :
-
   disable
-
   disable breakpoints
-
     Désactive tous les points d'arrêt.
-
   disable 2 5
-
   disable breakpoints 2 5
-
     Désactive les points d'arrêt n° 2 et 5.
-
   disable display
-
     Désactive toutes les expressions d'affichage automatique.
-
   disable display 1 3
-
     Désactive les expressions d'affichage automatique n° 1 et 3.
-
-Pour afficher des numéros de points d'arrêt, saisissez « info breakpoints ».
-
-Pour afficher des numéros d'expressions d'affichage automatique, saisissez 
-
-« info breakpoints ».
-
-
+Pour afficher les numéros des points d'arrêt, saisissez « info breakpoints ».
+Pour afficher les numéros des expressions d'affichage automatique, 
+saisissez « info display ».
 
 [disassemble]
 
-
-
-(ActionScript 2 uniquement, non prise en charge lors du débogage 
-
-d'ActionScript 3)
-
-
+(ActionScript 2 uniquement, non pris en charge lors du débogage d'ActionScript 3)
 
 Désassemble une partie spécifique du code source.
-
 La valeur par défaut est la ligne de la liste actuelle.
-
 Les arguments pris en charge sont les mêmes que ceux pour la commande list.
-
 Exemples :
-
   disassemble 87
-
     Désassemble la ligne 87 du fichier en cours.
-
   disassemble 87 102
-
     Désassemble les lignes 87 à 102 du fichier en cours.
-
   disassemble doThis
-
       Désassemble la fonction doThis() du fichier en cours.
-
-Outre l'utilisation des numéros de ligne, comme illustré ci-dessus, vous pouvez 
-
-également spécifier des lignes des manières suivantes :
-
+Outre l'utilisation des numéros de ligne, comme illustré ci-dessus, vous pouvez également 
+spécifier des lignes des manières suivantes :
    myapp.mxml
-
       Ligne 1 du fichier myapp.mxml.
-
    myapp.mxml:doThat
-
       La première ligne de la fonction doThat() du fichier myapp.mxml.
-
    myapp.mxml:56
-
       Ligne 56 du fichier myapp.mxml.
-
    #3
-
       Ligne 1 du fichier n° 3.
-
    #3:doOther
-
       La ligne du fichier n° 3 où commence la fonction doOther().
-
    #3:29
-
       Ligne 29 du fichier n° 3.
 
-
-
 [display]
 
-
-
 Ajoute une expression à la liste des expressions d'affichage automatique.
-
 Exemple :
-
   display employee.name
-
     Ajoute « employee.name » à la liste des expressions d'affichage automatique.
-
     A chaque arrêt de fdb, la valeur employee.name s'affiche.
-
 L'argument de cette commande est similaire à celui de « print ».
-
-Pour afficher la liste des expressions d'affichage automatique avec leur 
-
-numéro, saisissez « info display ».
-
-
+Pour afficher la liste des expressions d'affichage automatique avec leur numéro, 
+saisissez « info display ».
 
 [down]
 
-
-
 Sélectionne et imprime le frame de pile appelé par cette commande.
-
-Les commandes « info arguments » et « info locals » suivantes affichent les 
-
-variables locales et les arguments du frame sélectionné.
-
+Les commandes « info arguments » et « info locals » suivantes affichent les variables 
+locales et les arguments du frame sélectionné.
 Voir « up » et « frame » 
 
-
-
 [enable]
 
-
-
 Active un ou plusieurs points d'arrêt ou expressions d'affichage automatique.
-
 Exemples :
-
   enable
-
   enable breakpoints
-
     Active tous les points d'arrêt.
-
   enable 2 5
-
   enable breakpoints 2 5
-
     Active les points d'arrêt n° 2 et 5.
-
   enable display
-
     Active toutes les expressions d'affichage automatique.
-
   enable display 1 3
-
     Active les expressions d'affichage automatique n° 1 et 3.
-
-Pour afficher des numéros de points d'arrêt, saisissez « info breakpoints ».
-
-Pour afficher des numéros d'expressions d'affichage automatique, saisissez 
-
-« info breakpoints ».
-
-
+Pour afficher les numéros des points d'arrêt, saisissez « info breakpoints ».
+Pour afficher les numéros des expressions d'affichage automatique, 
+saisissez « info display ».
 
 [file]
 
-
-
 Spécifie une application à déboguer, sans la lancer.
-
 Exemples :
-
   file http://www.mysite.com/myapp.mxml
-
     Spécifie une application MXML à déboguer.
-
   file myapp.swf
-
     Spécifie un fichier SWF local à déboguer dans le répertoire actif.
-
-    Dans ce cas, myapp.swd (le fichier contenant les informations de débogage) 
-
-    doit également exister dans le répertoire actif.
-
-Cette commande ne lance pas l'application ; utilisez la commande « run » sans 
-
-argument pour démarrer le débogage de l'application.
-
-Au lieu d'utiliser « file <target> », puis « run », vous pouvez spécifier 
-
-l'application à déboguer en tant qu'argument de « run » :
-
+    Dans ce cas, myapp.swd (le fichier contenant les informations de débogage) doit également 
+exister dans le répertoire actif.
+Cette commande ne lance pas l'application ; utilisez la commande « run » sans argument 
+pour démarrer le débogage de l'application.
+Au lieu d'utiliser « file <cible> », puis « run », vous pouvez spécifier l'application 
+à déboguer en tant qu'argument de « run » :
   run http://mysite.com/myapp.mxml
-
   run myapp.swf
-
-Vous pouvez également spécifier l'application à déboguer en tant qu'argument de 
-
-ligne de commande lorsque vous lancez fdb :
-
+Vous pouvez également spécifier l'application à déboguer en tant qu'argument de ligne 
+de commande lorsque vous lancez fdb :
   fdb http://www.mysite.com/myapp.mxml
-
   fdb myapp.swf
-
 Dans ce cas, vous n'avez pas besoin d'utiliser « file » ni « run ».
-
 Si vous utilisez « run » sans spécifier d'application à déboguer, fdb attend 
-
-qu'une application s'y connecte, quelle qu'elle soit.
-
-
+qu'une application s'y connecte.
 
 [finish]
 
-
-
-S'exécute jusqu'au renvoi d'une valeur par la fonction en cours.
-
+S'exécute jusqu'au retour de la fonction en cours.
 Cette commande ne prend aucun argument.
 
-
-
 [frame]
 
-
-
 Sélectionne et imprime un frame de pile particulier.
-
 Cette commande prend un argument facultatif, un numéro de frame.
-
-Si aucun argument n'est fourni, la valeur par défaut renvoie au frame actif 
-
-supérieur (c'est-à-dire le frame 0).
-
+Si aucun argument n'est fourni, la valeur par défaut renvoie au frame actif supérieur 
+(c'est-à-dire le frame 0).
 Exemples :
-
   frame 4
-
   frame
-
-Les commandes « info arguments » et « info locals » suivantes affichent les 
-
-variables locales et les arguments du frame sélectionné.
-
+Les commandes « info arguments » et « info locals » suivantes affichent les variables 
+locales et les arguments du frame sélectionné.
 Voir « up », « frame » et « bt » 
 
-
-
 [handle]
 
-
-
 Spécifie la manière dont fdb doit gérer une erreur dans Flash Player.
-
 Exemples :
-
   handle recursion_limit stop
-
-    Lorsqu'une erreur recursion_limit se produit, affiche un message dans fdb 
-
-    et s'arrête comme devant un point d'arrêt.
-
+    Lorsqu'une erreur recursion_limit se produit, affiche un message dans fdb et s'arrête 
+comme devant un point d'arrêt.
   handle all print nostop
-
-    Quand une erreur se produit, affiche un message dans fdb, mais ne s'arrête 
-
-    pas.
-
+    Quand une erreur se produit, affiche un message dans fdb, mais ne s'arrête pas.
 Le premier argument est un nom d'erreur ou « all ».
-
 Les autres arguments sont des actions à appliquer à cette erreur.
-
 Pour afficher le nom des erreurs, saisissez « info handle ».
-
 Les actions sont print/noprint et stop/nostop.
-
 « print » entraîne l'impression d'un message lorsque cette erreur se produit.
-
-« stop » entraîne la réouverture de la session du débogueur lorsque cette 
-
-erreur se produit. Implique « print ».
-
-
+« stop » entraîne la réouverture de la session du débogueur lorsque cette erreur se produit.
+Implique « print ».
 
 [help]
 
-
-
-Nouvel utilisateur de fdb ? Saisissez « tutorial » pour obtenir des 
-
-informations de base.
-
+Nouvel utilisateur de fdb ? Saisissez « tutorial » pour obtenir des informations de base.
 Liste des commandes fdb :
-
-bt (bt)             Imprime le parcours arrière de tous les frames de pile
-
-break (b)           Définit un point d'arrêt à une ligne ou une fonction 
-
-                    spécifique
-
-catch (ca)          S'arrête lorsqu'une exception est émise
-
-cf (cf)             Affiche le nom et le numéro du fichier en cours
-
-clear (cl)          Supprime un point d'arrêt à une ligne ou une fonction 
-
-                    spécifique
-
-condition (cond)    Applique/supprime une expression conditionnelle à un point 
-
-                    d'arrêt
-
+bt (bt)               Imprime le parcours arrière de tous les frames de pile
+break (b)             Définit un point d'arrêt à une ligne ou une fonction spécifique
+catch (ca)            S'arrête lorsqu'une exception est émise
+cf (cf)               Affiche le nom et le numéro du fichier en cours
+clear (cl)           Supprime un point d'arrêt à la ligne ou la fonction spécifiée
+condition (cond)     Applique/supprime une expression conditionnelle à un point d'arrêt
+connect (con)        Se connecte à la version de débogage de Flash Player
 continue (c)        Continue l'exécution après l'arrêt au point d'arrêt
-
-commands (com)      Définit les commandes à exécuter lorsque le point d'arrêt 
-
-                    est atteint
-
-delete (d)          Supprime les points d'arrêt ou les expressions d'affichage 
-
-                    automatique
-
-directory (dir)     Ajoute un répertoire au chemin de recherche de fichiers 
-
-                    source
-
-disable (disab)     Désactive les points d'arrêt ou les expressions d'affichage 
-
-                    automatique
-
+commands (com)        Définit les commandes à exécuter lorsque le point d'arrêt est atteint
+delete (d)            Supprime les points d'arrêt ou les expressions d'affichage 
+                      automatique
+directory (dir)      Ajoute un répertoire au chemin de recherche de fichiers source
+disable (disab)      Désactive les points d'arrêt ou les expressions d'affichage 
+                      automatique
 disassemble (disas) Désassemble les fonctions ou les lignes source
-
-display (disp)      Ajoute des expressions d'affichage automatique
-
-enable (e)          Active des points d'arrêt ou des expressions d'affichage 
-
-                    automatique
-
-file (fil)          Spécifie une application à déboguer
-
-finish (f)          S'exécute jusqu'au renvoi d'une valeur par la fonction en 
-
-                    cours
-
-handle (han)        Spécifie la gestion d'une erreur
-
-help (h)            Affiche l'aide sur des commandes fdb
-
-home (ho)           Définit l'emplacement dans une liste où l'exécution est 
-
-                    arrêtée
-
-info (i)            Affiche des informations sur le programme en cours de 
-
-                    débogage
-
-kill (k)            Annule l'exécution du programme en cours de débogage
-
-list (l)            Répertorie une fonction ou ligne spécifiée
-
-next (n)            Avance d'un pas dans un programme
-
-print (p)           Imprime la valeur de la variable EXP
-
-pwd (pw)            Imprime le répertoire de travail
-
-quit (q)            Quitte fdb
-
-run (r)             Démarre le programme débogué
-
-set (se)            Définit la valeur d'une variable
-
-source (so)         Lit les commandes fdb à partir d'un fichier
-
-step (s)            Avance d'un ou plusieurs pas dans un programme jusqu'à 
-
-                    atteindre une ligne source différente
-
-tutorial (t)        Affiche un didacticiel sur l'utilisation de fdb
-
-undisplay (u)       Supprime une expression d'affichage automatique
-
-viewswf (v)         Définit ou supprime un filtre à appliquer à une liste de 
-
-                    fichiers basé sur l'extension .swf
-
-watch (wa)          Ajoute un point de contrôle sur une variable donnée
-
-what (wh)           Affiche le contexte d'une variable
-
-where (w)           Identique à bt
-
-Saisissez « help » suivi du nom de la commande pour obtenir une documentation 
-
-complète.
-
-
+display (disp)       Ajoute des expressions d'affichage automatique
+enable (e)            Active des points d'arrêt ou des expressions d'affichage automatique
+file (fil)           Spécifie une application à déboguer
+finish (f)           S'exécute jusqu'au retour de la fonction en cours
+handle (han)         Spécifie la gestion d'une erreur
+help (h)             Affiche l'aide des commandes fdb
+home (ho)            Définit l'emplacement dans une liste où l'exécution est arrêtée
+info (i)             Affiche des informations sur le programme en cours de débogage
+kill (k)             Annule l'exécution du programme en cours de débogage
+list (l)            Liste une fonction ou ligne spécifiée
+next (n)             Avance d'un pas dans un programme
+print (p)            Imprime la valeur de la variable EXP
+pwd (pw)             Imprime le répertoire de travail
+quit (q)             Quitte fdb
+run (r)              Démarre le programme débogué
+set (se)             Définit la valeur d'une variable
+source (so)          Lit les commandes fdb à partir d'un fichier
+step (s)             Avance d'un ou plusieurs pas dans un programme jusqu'à atteindre 
+                      une ligne source différente
+tutorial (t)         Affiche un didacticiel sur l'utilisation de fdb
+undisplay (u)        Supprime une expression d'affichage automatique
+viewswf (v)          Définit ou supprime un filtre à appliquer à une liste de fichiers 
+                      basé sur l'extension .swf
+watch (wa)           Ajoute un point de contrôle sur une variable donnée
+what (wh)            Affiche le contexte d'une variable
+where (w)            Identique à bt
+worker (wo)          Définit l'opérateur actif
+Saisissez « help » suivi du nom de la commande pour obtenir une documentation complète.
 
 [home]
 
-
-
 Définit l'emplacement dans une liste où l'exécution est arrêtée.
 
-
-
 [info]
 
-
-
-Commande générique pour l'affichage d'informations relatives au programme en 
-
-cours de débogage.
-
+Commande générique pour l'affichage d'informations relatives au programme 
+en cours de débogage.
 Liste des sous-commandes info :
-
-info arguments (i a)    Variables d'arguments du frame de pile en cours
-
+info arguments (i a)    Variables d'argument du frame de pile en cours
 info breakpoints (i b)  Etat des points d'arrêt définissables par l'utilisateur
-
 info display (i d)      Affiche la liste des expressions d'affichage automatique
-
 info files (i f)        Noms des cibles et fichiers en cours de débogage
-
 info functions (i fu)   Tous les noms de fonctions
-
 info handle (i h)       Gestion d'une erreur
-
 info locals (i l)       Variables locales du frame de pile en cours
-
 info scopechain (i sc)  Chaîne de portée du frame de pile en cours
-
 info sources (i so)     Fichiers source du programme
-
 info stack (i s)        Parcours arrière de la pile
-
-info swfs (i sw)        Liste des fichiers .swf de la session
-
+info swfs (i sw)        Liste les fichiers .swf de la session
 info targets(i t)       Application en cours de débogage
-
-info variables (i v)    Tous les noms de variables globales et statiques
-
-Saisissez « help info » suivi du nom de la sous-commande info pour obtenir une 
-
-documentation complète.
-
-
+info variables (i v)    Tous les noms des variables globales et statiques
+info workers (i w)      Liste tous les opérateurs
+Saisissez « help info » suivi du nom de la sous-commande info pour obtenir une documentation 
+complète.
 
 [info arguments]
 
-
-
 Affiche les arguments du frame de pile en cours.
 
-
-
 [info breakpoints]
 
-
-
 Affiche l'état de tous les points d'arrêt et points de contrôle.
-
 La colonne Type indique l'une des valeurs suivantes :
-
    breakpoint   - point d'arrêt normal
-
    watchpoint   - point de contrôle
-
-La colonne Disp contient « keep », « del » ou « dis » pour indiquer la 
-
-disposition du point d'arrêt une fois atteint. « dis » signifie que le point 
-
-d'arrêt sera désactivé, alors que « del » signifie qu'il sera supprimé.  
-
-Les colonnes « Address » et « What » indiquent l'adresse et le numéro de 
-
-fichier/ligne, respectivement. 
-
-
+La colonne Disp contient « keep », « del » ou « dis » pour indiquer la disposition 
+du point d'arrêt une fois celui-ci atteint. « dis » signifie que le point d'arrêt 
+sera désactivé, alors que « del » signifie qu'il sera supprimé.  
+Les colonnes « Address » et « What » indiquent l'adresse et le numéro de fichier/ligne, 
+respectivement. 
 
 [info display]
 
-
-
 Affiche la liste des expressions d'affichage automatique, avec leur numéro.
 
-
-
 [info files]
 
-
-
 Affiche le nom et numéro des fichiers pour l'application en cours de débogage, 
-
 y compris des fichiers source, de structure et générés automatiquement.
-
 Exemples :
-
   info files
-
-    Répertorie tous les fichiers, par ordre alphabétique des catégories
-
+    Liste tous les fichiers, par ordre alphabétique des catégories
   info files my
-
   info files my*
-
-    Répertorie, par ordre alphabétique, tous les fichiers dont le nom commence 
-
-    par « my ».
-
+    Liste, par ordre alphabétique, tous les fichiers dont le nom commence par « my ».
   info files *.as
-
-    Répertorie, par ordre alphabétique, tous les fichiers dont le nom finit par 
-
-    « as ».
-
+    Liste, par ordre alphabétique, tous les fichiers dont le nom finit par « as ».
   info files *foo*
-
-    Répertorie, par ordre alphabétique, tous les fichiers dont le nom contient 
-
-    « foo ». 
-
+    Liste, par ordre alphabétique, tous les fichiers dont le nom contient « foo ». 
 Les fichiers sont affichés au format nom#N, où N est le numéro de fichier.
-
-Dans de nombreuses commandes, vous pouvez utiliser #N à la place du nom d'un 
-
-fichier.
-
-
+Dans de nombreuses commandes, vous pouvez utiliser #N à la place du nom d'un fichier.
 
 [info functions]
 
-
-
-Affiche le nom de fonctions.
-
+Affiche le nom des fonctions.
 Exemples :
-
   info functions .
-
     Affiche toutes les fonctions du fichier en cours.
-
   info functions myapp.mxml
-
     Affiche toutes les fonctions du fichier myapp.mxml.
-
   info functions #3
-
     Affiche toutes les fonctions du fichier n° 3.
-
   info functions
-
-    Affiche toutes les fonctions de tous les fichiers.
-
-Pour afficher les noms et numéros de fichiers, saisissez « info sources » ou 
-
-« info files ».
-
+    Affiche les fonctions de tous les fichiers.
+Pour afficher les noms et numéros de fichiers, saisissez « info sources » ou « info files ».
 Les noms de fichiers abrégés sont acceptés s'ils ne sont pas ambigus.
 
-
-
 [info handle]
 
-
-
 Affiche l'action prise par fdb lorsqu'une erreur se produit dans Flash Player.
-
 Exemples :
-
   info handle
-
     Affiche la gestion de toutes les erreurs par fdb.
-
   info handle recursion_limit
-
     Affiche la gestion d'une erreur recursion_limit par fdb.
 
-
-
 [info locals]
 
-
-
 Affiche les variables locales du frame de pile en cours.
 
-
-
 [info scopechain]
 
-
-
-Affiche la chaîne de portée du frame de pile en cours.  La chaîne de portée est 
-
-la liste d'objets dans laquelle Flash Player effectue des recherches lorsqu'il 
-
-tente de résoudre un nom de symbole.
-
-
+Affiche la chaîne de portée du frame de pile en cours.  La chaîne de portée est la liste 
+d'objets dans laquelle Flash Player effectue des recherches lorsqu'il tente de résoudre 
+un nom de symbole.
 
 [info sources]
 
-
-
-Affiche le nom et le numéro des fichiers source pour l'application en cours de 
-
-débogage. Les fichiers de structure et générés automatiquement ne sont pas 
-
-inclus.
-
+Affiche le nom et le numéro des fichiers source pour l'application en cours de débogage. 
+Les fichiers de structure et générés automatiquement ne sont pas inclus.
 Les fichiers sont affichés au format nom#N, où N est le numéro de fichier.
-
-Dans de nombreuses commandes, vous pouvez utiliser #N à la place du nom d'un 
-
-fichier.
-
-
+Dans de nombreuses commandes, vous pouvez utiliser #N à la place du nom d'un fichier.
 
 [info stack]
 
-
-
 Parcours arrière de la pile.
 
-
-
 [info swfs]
 
-
-
-Affiche les fichiers .swf connus dans la session de débogage.  Voir la commande 
-
-« viewswf » pour obtenir des détails sur le filtrage d'une liste de fichiers en 
-
-fonction du nom d'un fichier .swf. 
-
-
+Affiche les fichiers .swf connus dans la session de débogage.  
+Voir la commande « viewswf » pour obtenir des détails sur le filtrage d'une liste de fichiers 
+en fonction du nom d'un fichier .swf. 
 
 [info targets]
 
-
-
 Affiche l'URL (http: ou file:) de l'application en cours de débogage.
 
-
-
 [info variables]
 
-
-
 Affiche les noms et valeurs de toutes les variables globales et statiques.
 
+[info workers]
 
+Affiche tous les opérateurs qui ont été démarrés.
 
 [info ?]
 
-
-
-Commande d'informations non définie. Essayez « help info ».
-
-
+Commande info non définie. Essayez « help info ».
 
 [kill]
 
-
-
 Annule l'exécution du programme en cours de débogage.
-
 Cette commande ne prend aucun argument.
 
-
-
 [list]
 
-
-
-Répertorie les lignes de code d'un fichier source.
-
+Liste les lignes de code d'un fichier source.
 Exemples :
-
   list
-
-    Répertorie dix lignes de plus dans le fichier en cours après ou autour de 
-
-    la liste précédente.
-
+    Liste dix lignes de plus dans le fichier en cours après ou autour de la liste précédente.
   list -
-
-    Répertorie les dix lignes du fichier en cours situées avant la liste 
-
-    précédente.
-
+    Liste les dix lignes du fichier en cours situées avant la liste précédente.
   list 87
-
-    Répertorie dix lignes du fichier en cours autour de la ligne 87.
-
+    Liste dix lignes du fichier en cours autour de la ligne 87.
   list 87 102
-
-    Répertorie les lignes 87 à 102 du fichier en cours.
-
-Outre l'utilisation des numéros de ligne, comme illustré ci-dessus, vous pouvez 
-
-également spécifier des lignes des sept manières suivantes :
-
+    Liste les lignes 87 à 102 du fichier en cours.
+Outre l'utilisation des numéros de ligne, comme illustré ci-dessus, vous pouvez également 
+spécifier des lignes de sept manières différentes :
   doThis
-
       La première ligne de la fonction doThis() du fichier en cours.
-
    myapp.mxml
-
       Ligne 1 du fichier myapp.mxml.
-
    myapp.mxml:doThat
-
       La première ligne de la fonction doThat() du fichier myapp.mxml.
-
    myapp.mxml:56
-
       Ligne 56 du fichier myapp.mxml.
-
    #3
-
       Ligne 1 du fichier n° 3.
-
    #3:doOther
-
       La ligne du fichier n° 3 où commence la fonction doOther().
-
    #3:29
-
       Ligne 29 du fichier n° 3.
-
-Pour afficher les noms et numéros de fichiers, saisissez « info sources » ou 
-
-« info files ».
-
+Pour afficher les noms et numéros de fichiers, saisissez « info sources » ou « info files ».
 Pour afficher les noms de fonctions, saisissez « info functions ».
-
-Les noms de fichiers et de fonctions abrégés sont acceptés s'ils ne sont pas 
-
-ambigus.
-
-Le classement d'un fichier fait de ce fichier celui en cours. (Voir la commande 
-
-« cf ».)
-
-
+Les noms de fichiers et de fonctions abrégés sont acceptés s'ils ne sont pas ambigus.
+Lorsque vous le listez, un fichier devient le fichier en cours. Voir la commande « cf ».
 
 [next]
 
-
-
 Avance d'un pas dans un programme, en procédant par appels de sous-routine.
-
   next
-
     Avance d'un pas.
-
   next 3
-
-    Avance de trois pas ou jusqu'à ce que le programme s'arrête pour toute 
-
-    autre raison.
-
-Identique à la commande « step », lorsque les appels de sous-routine ne se 
-
-produisent pas. Lorsqu'ils surviennent, l'appel est traité comme une 
-
-instruction.
-
-
+    Avance de trois pas ou jusqu'à ce que le programme s'arrête pour toute autre raison.
+Identique à la commande « step », lorsque les appels de sous-routine ne se produisent pas. 
+Lorsqu'ils surviennent, l'appel est traité comme une instruction.
 
 [print]
 
-
-
 Imprime la valeur de variable ou d'expression.
-
 Exemples :
-
   print i
-
     Imprime la valeur de « i ».
-
   print employee.name
-
     Imprime la valeur de « employee.name ».
-
   print employee
-
     Imprime la valeur de l'objet « employee ».
-
     Une valeur de type [Object 10378] peut s'afficher.
-
-  print employee.
-
+  print employee
     Imprime les valeurs de toutes les propriétés de l'objet « employee ».
-
   print *employee
-
     Imprime les valeurs de toutes les propriétés de l'objet « employee ».
-
-    L'opérateur * placé en préfixe est une alternative à l'opérateur . placé en 
-
-    suffixe.
-
+    L'opérateur * placé en préfixe est une alternative à l'opérateur . placé en suffixe.
   print #10378.
-
     Imprime les valeurs de toutes les propriétés de l'objet n° 10378.
-
-Les variables accessibles sont celles de l'environnement lexical du frame de 
-
-pile sélectionné, plus toutes celles dont la portée est globale ou d'un fichier 
-
-entier.
-
-
+Les variables accessibles sont celles de l'environnement lexical du frame de pile 
+sélectionné, auxquelles s'ajoutent toutes celles dont la portée est globale 
+ou d'un fichier entier.
 
 [pwd]
 
-
-
 Imprime le répertoire de travail actif.
-
-Il s'agit du répertoire à partir duquel a été lancé fdb ; il ne peut pas être 
-
-modifié dans fdb. L'argument pour « run » et « source » peut être spécifié par 
-
-rapport à ce répertoire.
-
+Il s'agit du répertoire à partir duquel a été lancé fdb ; il ne peut pas être modifié 
+dans fdb. L'argument pour « run » et « source » peut être spécifié par rapport 
+à ce répertoire.
 Cette commande ne prend aucun argument.
 
-
-
 [quit]
 
-
-
 Quitte fdb.
-
 Cette commande ne prend aucun argument.
 
-
-
 [run]
 
-
-
 Démarre une session de débogage.
-
 Exemples :
-
   run http://www.mysite.com/myapp.mxml
-
     Exécute l'application MXML spécifiée.
-
   run myapp.swf
-
   run mydir\myapp.swf
-
   run c:\mydir\myapp.swf
-
-    Exécute le fichier SWF local myapp.swf, qui peut être spécifié
-
-	soit par rapport au répertoire actif (voir la commande « pwd ») ;
-
-	soit en utilisant un chemin absolu. Dans ces cas, myapp.swd
-
-    (le fichier contenant les informations de débogage) doit également être 
-
-    présent dans le même répertoire que le fichier myapp.swf.
-
+    Exécute le fichier SWF local myapp.swf, qui peut être spécifié soit par rapport 
+au répertoire actif (voir la commande « pwd ») soit en utilisant un chemin absolu. 
+Dans ces cas, myapp.swd(le fichier contenant les informations de débogage) doit également 
+être présent dans le même répertoire que le fichier myapp.swf.
   run
-
     Exécute l'application auparavant spécifiée par la commande « file ».
-
-    Si aucune application n'est spécifiée, fdb attend qu'une application s'y 
-
-    connecte ou l'expiration du temps d'attente.
-
+    Si aucune application n'est spécifiée, fdb attend qu'une application s'y connecte 
+ou que le temps d'attente arrive à expiration.
 « run » démarre l'application dans un navigateur ou Flash Player autonome.
+Dès que l'application démarre, elle s'affiche dans fdb, pour que vous puissiez définir 
+des points d'arrêt, par exemple.
 
-Dès que l'application démarre, elle s'affiche dans fdb, pour que vous puissiez 
-
-définir des points d'arrêt, par exemple.
-
-
-
-Sur Macintosh, la seule forme prise en charge de la commande est « run » sans 
-
-argument.  Vous devez ensuite lancer manuellement Flash Player.
-
-
+Sur Macintosh, la seule forme prise en charge de la commande est « run » sans argument.  
+Vous devez ensuite lancer manuellement Flash Player.
 
 [set]
 
-
-
 Définit la valeur d'une variable ou d'une variable dite de convenance.
-
-Ces dernières sont des variables qui existent entièrement dans fdb ; elles ne 
-
-font pas partie de votre programme.
-
-Elles portent le préfixe « $ » et un nom quelconque, à condition qu'il ne soit 
-
-pas identique à celui d'une variable existante.  Par exemple, $myVar.  Ces 
-
-variables servent également à contrôler de nombreux aspects de fdb.  
-
-
+Ces dernières sont des variables qui existent uniquement dans fdb ; elles ne font pas partie 
+de votre programme.
+Elles portent le préfixe « $ » et un nom quelconque, à condition qu'il ne soit pas identique 
+à celui d'une variable existante.  Par exemple, $myVar.  Ces variables servent également 
+à contrôler de nombreux aspects de fdb.  
 
 Les variables de convenance suivantes sont utilisées par fdb :
-
 $listsize          - nombre de lignes source à afficher pour « list »
-
-$columnwrap        - numéro de colonne dans laquelle la sortie est renvoyée
-
-$infostackshowthis - si la valeur est 0, n'affiche pas « this » dans le 
-
-                     parcours arrière de la pile
-
-$invokegetters     - si la valeur est 0, empêche le lancement de fonctions 
-
-                     getter par fdb
-
+$columnwrap        - numéro de la colonne dans laquelle la sortie est renvoyée
+$infostackshowthis - si la valeur est 0, n'affiche pas « this » dans le parcours arrière 
+de la pile
+$invokegetters     - si la valeur est 0, empêche le lancement de fonctions d'accès get 
+par fdb
 $bpnum             - le dernier numéro de point d'arrêt défini
-
-$displayattributes - si la valeur est 1, « print var. » affiche tous les 
-
-                     attributs des membres de « var » (par ex., private et 
-
-                     static)
-
-
+$displayattributes - si la valeur est 1, « print var. » affiche tous les attributs des 
+membres
+                     de « var » (par ex., private et static)
 
 Exemples :
-
   set i = 3
-
     Définit la variable « i » sur le numéro 3.
-
   set employee.name = "Susan"
-
     Définit la variable « employee.name » sur la chaîne « Susan ».
-
   set $myVar = 20
-
     Définit la variable de convenance « $myVar » sur le numéro 20
 
-
-
 [show]
 
-
-
 Commande générique pour l'affichage d'informations relatives à l'état de fdb.
-
 Liste des sous-commandes show :
-
-show break (sh b)       Emplacement et raison de l'exécution suspendue
-
-show directories (sh d) Répertoires à atteindre pour les fichiers source
-
-show files (sh f)       Fichiers cible et chemins d'accès
-
+show break (sh b)        Emplacement et raison de l'exécution suspendue
+show directories (sh d) Répertoires dans lesquels rechercher les fichiers source
+show files (sh f)        Chemins et fichiers cible
 show functions (sh fu)  Informations sur le mappage de lignes de fonctions 
-
-show locations (sh l)   Emplacements des points d'arrêt
-
+show locations (sh l)   Emplacement des points d'arrêt
 show memory (sh m)      Utilisation de la mémoire en cours
-
-show net (sh n)         Statistiques des messages du lecteur 
-
+show net (sh n)          Statistiques des messages du lecteur 
 show properties (sh p)  Valeurs des propriétés
-
-show uri (sh u)         URI du lecteur pour cette session 
-
+show uri (sh u)          URI du lecteur pour cette session 
 show variable (sh v)    Extraction de variables brutes
-
-Saisissez « help show » suivi du nom de la sous-commande show pour obtenir une 
-
-documentation complète.
-
-
+Saisissez « help show » suivi du nom de la sous-commande show pour obtenir une documentation 
+complète.
 
 [show break]
 
-
-
-Affiche le décalage au sein du fichier SWF sur lequel s'est arrêté le programme
-
-
+Affiche le décalage au sein du fichier SWF sur lequel s'est arrêté le programme.
 
 [show directories]
 
-
-
 Affiche le chemin de recherche actif pour trouver des fichiers source.
 
-
-
 [show files]
 
-
-
-Affiche le chemin et le nom de fichier pour tous les fichiers cible
-
-
+Affiche le chemin et le nom de fichier pour tous les fichiers cible.
 
 [show functions]
 
-
-
 Affiche les informations de mappage des fonctions aux numéros de ligne.
-
 Exemples :
-
   show functions .
-
-    Affiche les informations de mappage pour toutes les fonctions du fichier en 
-
-    cours.
-
+    Affiche les informations de mappage pour toutes les fonctions du fichier en cours.
   show functions myapp.mxml
-
-    Affiche les informations de mappage pour toutes les fonctions du fichier 
-
-    myapp.mxml.
-
+    Affiche les informations de mappage pour toutes les fonctions du fichier myapp.mxml.
   show functions #3
-
-    Affiche les informations de mappage pour toutes les fonctions du fichier 
-
-    n° 3.
-
+    Affiche les informations de mappage pour toutes les fonctions du fichier n° 3.
   show functions
-
-    Affiche les informations de mappage pour toutes les fonctions de tous les 
-
-    fichiers.
-
-Pour afficher les noms et numéros de fichiers, saisissez « info sources » ou 
-
-« info files ».
-
+    Affiche les informations de mappage pour les fonctions de tous les fichiers.
+Pour afficher les noms et numéros de fichiers, saisissez « info sources » ou « info files ».
 Les noms de fichiers abrégés sont acceptés s'ils ne sont pas ambigus.
 
-
-
 [show locations]
 
-
-
-Affiche la liste des emplacements définis pour chaque point d'arrêt
-
-
+Affiche la liste des emplacements définis pour chaque point d'arrêt.
 
 [show memory]
 
-
-
 Affiche les statistiques de la mémoire de la VM Java.
 
-
-
 [show net]
 
-
-
-Affiche les informations relatives aux messages envoyés à et reçus de Flash 
-
-Player.
-
-
+Affiche les informations relatives aux messages que Flash Player envoie et reçoit.
 
 [show properties]
 
-
-
-Affiche une liste de variables de convenance utilisées dans le débogueur 
-
-
+Affiche la liste des variables de convenance utilisées dans le débogueur. 
 
 [show uri]
 
-
-
-Affiche l'URI envoyée pour cette session par le lecteur.
-
-
+Affiche l'URI envoyé pour cette session par le lecteur.
 
 [show variable]
 
-
-
-Affiche la valeur des membres d'une variable.  Deux paramètres sont requis : 
-
-le premier est l'identificateur de variable numérique, le second est le nom de 
-
-propriété sur la variable.  La variable de convenance $invokegetters est 
-
-utilisée pour déterminer si le getter de propriété, en supposant qu'il existe, 
-
-sera lancé ou non.
-
+Affiche la valeur des membres d'une variable.  Deux paramètres sont requis : le premier 
+est l'identificateur de variable numérique, le second est le nom de propriété sur la variable.  
+La variable de convenance $invokegetters est utilisée pour déterminer si la méthode d'accès 
+aux propriétés, en supposant qu'elle existe, sera lancée ou non.
 Exemple :
-
     show variable 1 __proto__
 
-
-
 [show ?]
 
-
-
 Commande show non définie. Essayez « help show ».
 
-
-
 [source]
 
-
-
 Lit des commandes fdb à partir d'un fichier et les exécute.
-
   source mycommands.txt
-
   source mydir\mycommands.txt
-
   source c:\mydir\mycommands.txt
-
     Lit le fichier mycommands.txt et y exécute les commandes fdb.
-
-    Le fichier contenant les commandes peut être spécifié
-
-	soit par rapport au répertoire actif (voir la commande « pwd ») ;
-
-	soit en utilisant un chemin absolu.
-
-Le fichier .fdbinit est automatiquement lu de cette manière lorsque fdb est 
-
-lancé.
-
-Le fichier .fdbinit est uniquement recherché dans le répertoire actif. Cela 
-
-signifie que vous avez pu paramétrer plusieurs fichiers .fdbinit pour 
-
-différents projets.
-
-
+    Le fichier contenant les commandes peut être spécifié soit par rapport 
+au répertoire actif (voir la commande « pwd ») soit en utilisant un chemin absolu.
+Le fichier .fdbinit est automatiquement lu de cette manière lorsque fdb est lancé.
+Le fichier .fdbinit est uniquement recherché dans le répertoire actif. Cela signifie que 
+vous avez pu paramétrer plusieurs fichiers .fdbinit pour différents projets.
 
 [step]
 
-
-
-Avance d'un ou plusieurs pas dans un programme jusqu'à atteindre une ligne 
-
-source différente.
-
+Avance d'un ou plusieurs pas dans un programme jusqu'à atteindre une ligne source différente.
 Exemples :
-
   step
-
     Avance d'un pas.
-
   step 3
-
-    Avance de trois pas ou jusqu'à ce que le programme s'arrête pour toute 
-
-autre raison.
-
-
+    Avance de trois pas ou jusqu'à ce que le programme s'arrête pour toute autre raison.
 
 [tutorial]
 
-
-
 Affiche un didacticiel sur l'utilisation de fdb.
-
 Cette commande ne prend aucun argument.
 
-
-
 [Tutorial]
 
-
-
 Session fdb typique :
-
 Démarrez une application avec « run ».
-
 Affichez les noms de fichiers avec « info sources ».
-
-Répertoriez un fichier avec « list ».
-
+Listez un fichier avec « list ».
 Définissez des points d'arrêt avec « break ».
-
-Exécutez un programme avec « continue » jusqu'à ce qu'un point d'arrêt soit 
-
-atteint.
-
+Exécutez un programme avec « continue » jusqu'à ce qu'un point d'arrêt soit atteint.
 Examinez l'état d'un programme avec « where », « print » et « info locals ».
-
 Exécutez des instructions individuelles avec « next », « step » et « finish ».
-
 Reprenez l'exécution avec « continue ».
-
 Quittez fdb avec « quit ».
 
-
-
 [undisplay]
 
-
-
 Supprime une ou plusieurs expressions d'affichage automatique.
-
 Exemples :
-
   undisplay
-
     Supprime toutes les expressions d'affichage automatique.
-
   undisplay 2 7
-
     Supprime les expressions d'affichage automatique n° 2 et 7.
-
-Pour afficher la liste des expressions d'affichage automatique avec leur 
-
-numéro, saisissez « info display ».
-
-
+Pour afficher la liste des expressions d'affichage automatique avec leur numéro, 
+saisissez « info display ».
 
 [up]
 
-
-
 Sélectionne et imprime le frame de pile ayant appelé cette commande.
-
-Les commandes « info arguments » et « info locals » suivantes affichent
-
-les variables locales et les arguments du frame sélectionné.
-
+Les commandes « info arguments » et « info locals » suivantes affichent les variables 
+locales et les arguments du frame sélectionné.
 Voir « down » et « frame »
 
-
-
 [viewswf]
 
-
-
-Définit ou supprime un filtre d'une liste de fichiers (c.-à-d. « info files » 
-
-et « info sources »), en fonction du nom d'un fichier .swf. 
-
-Sans paramètre, tous les fichiers sont affichés.  Si le même fichier est 
-
-présent dans un ou plusieurs fichiers .swf, la liste affiche uniquement la 
-
-première instance du fichier.  Pour accéder à d'autres instances du fichier, 
-
-utilisez le numéro du fichier (par ex., « list #192 ») ou utilisez cette 
-
-commande avec un paramètre (voir ci-dessous) pour afficher des fichiers d'un 
-
-fichier .swf spécifique.  Avec un seul paramètre, et le nom du fichier .swf, 
-
-tel qu'il est affiché par la commande « info swfs », seuls les fichiers issus 
-
-du fichier .swf spécifié sont affichés dans la liste de fichiers.  
-
-Les fichiers issus d'autres fichiers .swf ne sont pas affichés.  Cette commande 
-
-affecte également les commandes qui acceptent un fichier en tant que paramètre 
-
-(par ex., « break »)
-
+Définit ou supprime un filtre d'une liste de fichiers (c.-à-d. « info files » et 
+« info sources »), en fonction du nom d'un fichier .swf. 
+Sans paramètre, tous les fichiers sont affichés.  Si le même fichier est présent dans un 
+ou plusieurs fichiers .swf, la liste affiche uniquement la première instance du fichier.  
+Pour accéder à d'autres instances du fichier, utilisez le numéro du fichier (par ex., 
+« list #192 ») ou utilisez cette commande avec un paramètre (voir ci-dessous) pour afficher 
+des fichiers d'un fichier .swf spécifique.  Avec un seul paramètre, et le nom du fichier .swf, 
+tel qu'il est affiché par la commande « info swfs », seuls les fichiers issus du fichier .swf 
+spécifié sont affichés dans la liste de fichiers.  
+Les fichiers issus d'autres fichiers .swf ne sont pas affichés.  Cette commande affecte 
+également les commandes qui acceptent un fichier en tant que paramètre (par ex., « break »)
 Exemple :
-
   viewswf myApp.mxml.swf
-
     Seuls les fichiers issus du fichier myApp.mxml.swf sont affichés.
-
   viewswf 
-
-    Tous les fichiers de tous les fichiers .swf sont affichés.
-
+    Les fichiers de tous les fichiers .swf sont affichés.
  
-
 [watch]
 
-
-
-Ajoute un point de contrôle sur une variable donnée. Le débogueur arrête 
-
-l'exécution lorsque la valeur de la variable change.
-
+Ajoute un point de contrôle sur une variable donnée. Le débogueur arrête l'exécution lorsque 
+la valeur de la variable change.
 Exemple :
-
   watch foo
 
-
-
 [what]
 
-
-
 Affiche le contexte dans lequel est résolue une variable. 
 
-
-
 [where]
 
-
-
 Parcours arrière de la pile.
 
-
-
 [zzz]
 
-
-
 ((( Keep this unused topic at the end of the file    )))
-
 ((( so that the next-to-last one is parsed properly. )))
-


[12/15] FLEX-34291: Merge the donated FDB with the current one.

Posted by ft...@apache.org.
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/concrete/DMessage.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/concrete/DMessage.java b/modules/debugger/src/java/flash/tools/debugger/concrete/DMessage.java
index e66edb4..a0658a5 100644
--- a/modules/debugger/src/java/flash/tools/debugger/concrete/DMessage.java
+++ b/modules/debugger/src/java/flash/tools/debugger/concrete/DMessage.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger.concrete;
@@ -22,6 +20,7 @@ package flash.tools.debugger.concrete;
 import java.lang.ArrayIndexOutOfBoundsException;
 import java.io.UnsupportedEncodingException;
 
+import flash.tools.debugger.Isolate;
 import flash.util.FieldFormat;
 import flash.util.Trace;
 
@@ -96,9 +95,16 @@ public class DMessage
     public static final int InWatch2					= 55;
     public static final int InPassAllExceptionsToDebugger = 56;
     public static final int InBinaryOp					= 57;
+    public static final int InIsolateCreate				= 58;
+    public static final int InIsolateExit   			= 59;
+    public static final int InIsolateEnumerate			= 60;
+    public static final int InSetActiveIsolate			= 61;
+    public static final int InIsolate			        = 62;
+    public static final int InSetExceptionBreakpoint	= 63;
+    public static final int InRemoveExceptionBreakpoint	= 64;
     // If you add another message here, adjust the following line
     // and add a new case to the inTypeName() method below.
-	public static final int InSIZE						= InBinaryOp + 1;	 /* last ID used +1 */
+	public static final int InSIZE						= InRemoveExceptionBreakpoint + 1;	 /* last ID used +1 */
 
 	/**
 	 * This set of constants defines the message types SENT to the player from our
@@ -152,9 +158,13 @@ public class DMessage
     public static final int OutRemoveWatch2				= 50; // 32-bit id; used for as3
     public static final int OutPassAllExceptionsToDebugger = 51;
     public static final int OutBinaryOp					= 52;
+    public static final int OutIsolateEnumerate			= 53;
+    public static final int OutSetActiveIsolate         = 54;
+    public static final int OutSetExceptionBreakpoint   = 55;
+    public static final int OutRemoveExceptionBreakpoint= 56;
     // If you add another message here, adjust the following line
     // and add a new case to the outTypeName() method below.
-	public static final int OutSIZE						= OutBinaryOp + 1;	 /* last ID used +1 */
+	public static final int OutSIZE						= OutRemoveExceptionBreakpoint + 1;	 /* last ID used +1 */
 
 	/**
 	 * Enums originally extracted from shared_tcserver/tcparser.h; these correspond
@@ -203,12 +213,15 @@ public class DMessage
 	/* Debugging only: The number of bytes from the input that we have formatted into m_debugFormatted */
 	private int m_debugFormattedThroughIndex;
 
+	private int m_targetIsolate;
+	
 	/* used by our cache to create empty DMessages */
 	public DMessage(int size)
 	{
 		m_content = new byte[size];
 		m_debugFormatted = new StringBuilder();
 		m_debugFormattedThroughIndex = 0;
+		m_targetIsolate = Isolate.DEFAULT_ID;
 		clear();
 	}
 
@@ -220,7 +233,9 @@ public class DMessage
 	public int    getSize()				{ return (m_content == null) ? 0 : m_content.length; }
 	public int    getRemaining()		{ return getSize()-m_index; }
 	public int    getPosition()			{ return m_index; }
+	public int getTargetIsolate()      { return m_targetIsolate; }
 	public void   setType(int t)		{ m_type = t; }
+	public void setTargetIsolate(int id) {m_targetIsolate = id;}
 
 	/**
 	 * Gets pointer size (in bytes) expected by the Flash player; either
@@ -256,6 +271,7 @@ public class DMessage
 	public void clear()
 	{
 		setType(-1);
+		setTargetIsolate(Isolate.DEFAULT_ID);
 		m_debugFormatted.setLength(0);
 		m_debugFormattedThroughIndex = 0;
 		reset();
@@ -752,6 +768,34 @@ public class DMessage
             case InBinaryOp:
             	s = "InBinaryOp"; //$NON-NLS-1$
             	break;
+            	
+            case InIsolateCreate:
+            	s = "InIsolateCreate"; //$NON-NLS-1$
+            	break;
+            	
+            case InIsolateExit:
+            	s = "InIsolateExit"; //$NON-NLS-1$
+            	break;
+            	
+            case InIsolateEnumerate:
+            	s = "InIsolateEnumerate"; //$NON-NLS-1$
+            	break;
+            	
+            case InSetActiveIsolate:
+            	s = "InSetActiveIsolate"; //$NON-NLS-1$
+            	break;
+            	
+            case InIsolate:
+            	s = "InIsolate"; //$NON-NLS-1$
+            	break;
+            	
+            case InSetExceptionBreakpoint:
+            	s = "InSetExceptionBreakpoint"; //$NON-NLS-1$
+            	break;
+            	
+            case InRemoveExceptionBreakpoint:
+            	s = "InRemoveExceptionBreakpoint"; //$NON-NLS-1$
+            	break;
 		}
 		return s;
 	}
@@ -949,6 +993,23 @@ public class DMessage
             case OutBinaryOp:
             	s = "OutBinaryOp"; //$NON-NLS-1$
             	break;
+            	
+            case OutIsolateEnumerate:
+            	s = "OutIsolateEnumerate"; //$NON-NLS-1$
+            	break;
+            	
+            case OutSetActiveIsolate:
+            	s = "OutSetActiveIsolate"; //$NON-NLS-1$
+            	break;
+            	
+            case OutSetExceptionBreakpoint:
+            	s = "OutSetExceptionBreakpoint"; //$NON-NLS-1$
+            	break;
+            	
+            case OutRemoveExceptionBreakpoint:
+            	s = "OutRemoveExceptionBreakpoint"; //$NON-NLS-1$
+            	break;
+            	
 		}
    		return s;
 	}

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/concrete/DMessageCache.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/concrete/DMessageCache.java b/modules/debugger/src/java/flash/tools/debugger/concrete/DMessageCache.java
index 0bd4012..319235b 100644
--- a/modules/debugger/src/java/flash/tools/debugger/concrete/DMessageCache.java
+++ b/modules/debugger/src/java/flash/tools/debugger/concrete/DMessageCache.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger.concrete;

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/concrete/DMessageCounter.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/concrete/DMessageCounter.java b/modules/debugger/src/java/flash/tools/debugger/concrete/DMessageCounter.java
index d9f3587..e13d601 100644
--- a/modules/debugger/src/java/flash/tools/debugger/concrete/DMessageCounter.java
+++ b/modules/debugger/src/java/flash/tools/debugger/concrete/DMessageCounter.java
@@ -1,24 +1,27 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger.concrete;
 
+import java.util.HashMap;
+import java.util.Map;
+
+import flash.tools.debugger.Isolate;
+
 /**
  * This class can be to count the number of messages
  * received during a debug session.
@@ -28,12 +31,19 @@ public class DMessageCounter implements DProtocolNotifierIF
 {
 	long[] m_inCounts;
 	long[] m_outCounts;
+	long m_lastIsolate;
+	Object m_isolateLock;
+	boolean m_isolate;
+	
+	Map<Long, DMessageCounter> m_isolateCounterMap;
 
 	public DMessageCounter()
 	{
 		m_inCounts = new long[DMessage.InSIZE+1];
 		m_outCounts = new long[DMessage.OutSIZE+1];
-
+		m_lastIsolate = 1;
+		m_isolateCounterMap = new HashMap<Long, DMessageCounter>();
+		m_isolateLock = new Object();
 		clearArray(m_inCounts);
 		clearArray(m_outCounts);
 	}
@@ -62,7 +72,7 @@ public class DMessageCounter implements DProtocolNotifierIF
 	 * to block until a message is sent.
 	 */
 	public Object getOutLock() { return m_outCounts; }
-
+	
 	/**
 	 * Collect stats on outgoing messages 
 	 */
@@ -71,13 +81,42 @@ public class DMessageCounter implements DProtocolNotifierIF
 	    int type = msg.getType();
 		if (type < 0 || type >=DMessage.OutSIZE)
 			type = DMessage.OutSIZE;
-
+		long targetIsolate = msg.getTargetIsolate();
 		Object outLock = getOutLock();
+		if (!m_isolate) {
+			synchronized (m_isolateLock) {
+				if (m_lastIsolate != Isolate.DEFAULT_ID) {
+					DMessageCounter counter = m_isolateCounterMap.get(m_lastIsolate);
+					outLock = counter.getOutLock();
+				}
+			}
+		}
 		synchronized (outLock) {
-			m_outCounts[type] += 1;
-			outLock.notifyAll(); // tell anyone who is waiting that a message has been sent
+			
+			if (!m_isolate && targetIsolate != Isolate.DEFAULT_ID) {
+//				if (m_isolateCounterMap.containsKey(targetIsolate)) {
+					DMessageCounter counter = m_isolateCounterMap.get(targetIsolate);				
+					counter.messageSent(msg);
+					m_outCounts[type] += 1;
+					outLock.notifyAll(); // tell anyone who is waiting that a message has been sent
+					//counter.getOutLock().notifyAll();
+//				}
+//				else {
+//					System.out.println("No counter for worker " + targetIsolate);
+//					m_outCounts[type] += 1;
+//					outLock.notifyAll(); // tell anyone who is waiting that a message has been sent
+//				}
+			}
+			else {
+				m_outCounts[type] += 1;
+				outLock.notifyAll(); // tell anyone who is waiting that a message has been sent
+			}
 		}
 	}
+	
+	public void setIsolate(boolean value) {
+		m_isolate = value;
+	}
 
 	/** 
 	 * Collect stats on the messages 
@@ -92,17 +131,67 @@ public class DMessageCounter implements DProtocolNotifierIF
 		/* anything we don't know about goes in a special slot at the end of the array. */
 		if (type < 0 || type >= DMessage.InSIZE)
 			type = DMessage.InSIZE;
-
 		Object inLock = getInLock();
+		if (!m_isolate) {
+			synchronized (m_isolateLock) {
+				if (m_lastIsolate != Isolate.DEFAULT_ID) {
+					DMessageCounter counter = m_isolateCounterMap.get(m_lastIsolate);
+					inLock = counter.getInLock();
+				}
+			}
+		}
+		
 		synchronized (inLock) {
-			m_inCounts[type] += 1;
-			inLock.notifyAll(); // tell anyone who is waiting that a message has been received
+			if (type == DMessage.InIsolate) {
+				long isolate = msg.getDWord();				
+				if (isolate != Isolate.DEFAULT_ID) {
+					/** Check if our map has a counter for this isolate */
+					if (!m_isolateCounterMap.containsKey(isolate)) {
+						DMessageCounter isolateCounter = new DMessageCounter();
+						isolateCounter.setIsolate(true);
+						m_isolateCounterMap.put(isolate, isolateCounter);
+					}
+				}
+				synchronized (m_isolateLock) {
+					m_lastIsolate = isolate;
+				}
+				m_inCounts[type] += 1;
+				inLock.notifyAll(); // tell anyone who is waiting that a message has been received
+			}
+			else if (!m_isolate && m_lastIsolate != Isolate.DEFAULT_ID) {
+				DMessageCounter counter = m_isolateCounterMap.get(m_lastIsolate);
+				counter.messageArrived(msg, which);
+				synchronized (counter.getInLock()) {
+					counter.getInLock().notifyAll();
+				}
+				
+			}
+			else {
+				m_inCounts[type] += 1;
+				inLock.notifyAll(); // tell anyone who is waiting that a message has been received
+			}
 		}
 	}
 
 	/* getters */
 	public long   getInCount(int type)  { synchronized (getInLock()) { return m_inCounts[type]; } }
 	public long   getOutCount(int type) { synchronized (getOutLock()) { return m_outCounts[type]; } }
+	
+	public long   getIsolateInCount(long isolate, int type)  { 
+		DMessageCounter counter = m_isolateCounterMap.get(isolate);
+		return counter.getInCount(type); 
+	}
+
+	public long getIsolateOutCount(long isolate, int type) { 
+		DMessageCounter counter = m_isolateCounterMap.get(isolate);
+		return counter.getOutCount(type); 
+	}
+
+	public Object getIsolateInLock(long isolate)  { 
+		DMessageCounter counter = m_isolateCounterMap.get(isolate);
+		return counter.getInLock(); 
+	}
+
 
 	/* setters */
 	public void clearInCounts()			{ synchronized (getInLock()) { clearArray(m_inCounts); } }

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/concrete/DModule.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/concrete/DModule.java b/modules/debugger/src/java/flash/tools/debugger/concrete/DModule.java
index c83c134..d2577cb 100644
--- a/modules/debugger/src/java/flash/tools/debugger/concrete/DModule.java
+++ b/modules/debugger/src/java/flash/tools/debugger/concrete/DModule.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger.concrete;
@@ -67,12 +65,13 @@ public class DModule implements SourceFile
 	private int					m_anonymousFunctionCounter = 0;
 	private SourceLocator		m_sourceLocator;
 	private int					m_sourceLocatorChangeCount;
+	private int m_isolateId;
 	private final static String	m_newline = System.getProperty("line.separator"); //$NON-NLS-1$
 
 	/**
 	 * @param name filename in "basepath;package;filename" format
 	 */
-	public DModule(SourceLocator sourceLocator, int id, int bitmap, String name, String script)
+	public DModule(SourceLocator sourceLocator, int id, int bitmap, String name, String script, int isolateId)
 	{
 		// If the caller gave us the script text, then we will create m_script
 		// now.  But if the caller gave us an empty string, then we won't bother
@@ -98,6 +97,7 @@ public class DModule implements SourceFile
 		m_func2LastLine = new HashMap<String, Integer>();
 		m_packageName = nameParser.getPackage();
         m_gotAllFncNames = false;
+        m_isolateId = isolateId;
 	}
 
 	public synchronized ScriptText getScript()
@@ -138,7 +138,7 @@ public class DModule implements SourceFile
 	public int			getId()					{ return m_id; }
 	public int			getBitmap()				{ return m_bitmap; }
 	public int			getLineCount()			{ return getScript().getLineCount(); }
-	public String		getLine(int i)			{ return (i > getLineCount()) ? "// code goes here" : getScript().getLine(i); }
+	public String		getLine(int i)			{ return (i > getLineCount()) ? "// code goes here" : getScript().getLine(i); } //$NON-NLS-1$
 
 	void setPackageName(String name)    { m_packageName = name; }
 
@@ -336,7 +336,7 @@ public class DModule implements SourceFile
         {
             try
             {
-                ps.requestFunctionNames(m_id, -1);
+                ps.requestFunctionNames(m_id, -1, m_isolateId);
             }
             catch (VersionException e)
             {
@@ -726,7 +726,8 @@ public class DModule implements SourceFile
     }
 
     /** for debugging */
-    public String toString()
+    @Override
+	public String toString()
     {
     	return getFullPath();
     }

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/concrete/DProtocol.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/concrete/DProtocol.java b/modules/debugger/src/java/flash/tools/debugger/concrete/DProtocol.java
index a922428..f611d45 100644
--- a/modules/debugger/src/java/flash/tools/debugger/concrete/DProtocol.java
+++ b/modules/debugger/src/java/flash/tools/debugger/concrete/DProtocol.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger.concrete;
@@ -99,9 +97,10 @@ public class DProtocol implements Runnable
 		m_detectBrokenSocket = detectBrokenSocket;
 	}
 	
+	
 	/**
 	 * Set the base socket options
-	 * @throws SocketException
+	 * @throws java.net.SocketException
 	 */
 	static void applyBaseSocketSettings(Socket s) throws SocketException 
 	{
@@ -281,12 +280,12 @@ public class DProtocol implements Runnable
 					}
 					catch (Exception exc) /* catch unchecked exceptions */
 					{
-						if (Trace.error) 
-						{
+//						if (Trace.error) 
+//						{
 							System.err.println("Error in listener parsing incoming message :"); //$NON-NLS-1$
 							System.err.println(msg.inToString(16));
 							exc.printStackTrace(); 
-						}
+//						}
 					}
 					msg.reset();  /* allow others to reparse the message */
 				}
@@ -425,6 +424,11 @@ public class DProtocol implements Runnable
 		if (size < 0)
 			throw new IOException("socket closed"); //$NON-NLS-1$
 
+//		if (DMessage.inTypeName(command).startsWith("InUnknown")) {
+//			System.out.println("Ignoring unknown message");
+//			size = 0; 
+//		}
+		
 		/** 
 		 * Ask our message cache for a message
 		 */

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/concrete/DProtocolNotifierIF.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/concrete/DProtocolNotifierIF.java b/modules/debugger/src/java/flash/tools/debugger/concrete/DProtocolNotifierIF.java
index 870ec01..8144711 100644
--- a/modules/debugger/src/java/flash/tools/debugger/concrete/DProtocolNotifierIF.java
+++ b/modules/debugger/src/java/flash/tools/debugger/concrete/DProtocolNotifierIF.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger.concrete;

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/concrete/DStackContext.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/concrete/DStackContext.java b/modules/debugger/src/java/flash/tools/debugger/concrete/DStackContext.java
index a0b0519..08f8a77 100644
--- a/modules/debugger/src/java/flash/tools/debugger/concrete/DStackContext.java
+++ b/modules/debugger/src/java/flash/tools/debugger/concrete/DStackContext.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger.concrete;
@@ -48,9 +46,10 @@ public class DStackContext implements Frame
 	private int			m_offset;   /* offset within swf where we halted. (really part of location) */
 	private boolean		m_populated;
 	private DVariable	m_activationObject;
+	private int  m_isolateId;
 
 	public DStackContext(int module, int line, DModule f, long thisId /* bogus */,
-						 String functionSignature, int depth)
+			String functionSignature, int depth, int isolateId)
 	{
 		m_source = f;
 		m_module = module;
@@ -63,7 +62,8 @@ public class DStackContext implements Frame
 		m_locals = new LinkedHashMap<String, DVariable>(); // preserves order
 		m_scopeChain = new ArrayList<DVariable>();
 		m_populated = false;
-		m_location = new DLocation(m_source, line);
+		m_isolateId = isolateId;
+		m_location = new DLocation(m_source, line, isolateId);
 	}
 
 	/*
@@ -128,6 +128,7 @@ public class DStackContext implements Frame
 	void setThis(DVariable v)					{ m_this = v; }
 	void setSwfIndex(int index)					{ m_swfIndex = index; }
 	void setOffset(int offset)					{ m_offset = offset; }
+	void setIsolateId(int id)					{ m_isolateId = id; }
 	void markStale()							{ m_populated = false; } // triggers a reload of variables.
 
 	/**
@@ -153,16 +154,23 @@ public class DStackContext implements Frame
 	/**
 	 * Populate ensures that we have some locals and args. That is
 	 * that we have triggered a InFrame call to the player
-	 * @throws NoResponseException
-	 * @throws NotSuspendedException
-	 * @throws NotConnectedException
+	 * @throws flash.tools.debugger.NoResponseException
+	 * @throws flash.tools.debugger.NotSuspendedException
+	 * @throws flash.tools.debugger.NotConnectedException
 	 */
 	void populate(Session s) throws NoResponseException, NotSuspendedException, NotConnectedException
 	{
 		if (!m_populated)
 		{
-			((PlayerSession)s).requestFrame(m_depth);
+			PlayerSession ses = ((PlayerSession)s);
+			ses.requestFrame(m_depth, m_isolateId);
+			
 			m_populated = true;
 		}
 	}
+
+	public int getIsolateId() 
+	{
+		return m_isolateId;
+	}
 }

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/concrete/DSuspendInfo.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/concrete/DSuspendInfo.java b/modules/debugger/src/java/flash/tools/debugger/concrete/DSuspendInfo.java
index bbe2502..e051c21 100644
--- a/modules/debugger/src/java/flash/tools/debugger/concrete/DSuspendInfo.java
+++ b/modules/debugger/src/java/flash/tools/debugger/concrete/DSuspendInfo.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger.concrete;

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/concrete/DSwfInfo.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/concrete/DSwfInfo.java b/modules/debugger/src/java/flash/tools/debugger/concrete/DSwfInfo.java
index 9f49c10..226dd72 100644
--- a/modules/debugger/src/java/flash/tools/debugger/concrete/DSwfInfo.java
+++ b/modules/debugger/src/java/flash/tools/debugger/concrete/DSwfInfo.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger.concrete;
@@ -25,6 +23,7 @@ import flash.swf.debug.DebugModule;
 import flash.swf.debug.LineRecord;
 import flash.tools.ActionLocation;
 import flash.tools.debugger.InProgressException;
+import flash.tools.debugger.Isolate;
 import flash.tools.debugger.NoResponseException;
 import flash.tools.debugger.Session;
 import flash.tools.debugger.SourceFile;
@@ -61,7 +60,7 @@ public class DSwfInfo implements SwfInfo
 
 	private final static String UNKNOWN = PlayerSessionManager.getLocalizationManager().getLocalizedTextString("unknown"); //$NON-NLS-1$
 
-	public DSwfInfo(int index)	
+	public DSwfInfo(int index, int isolateId)	
 	{	
 		// defaults values of zero
 		m_id = 0;
@@ -73,6 +72,7 @@ public class DSwfInfo implements SwfInfo
 		m_port = 0;
 		m_swdLoading = true;
 		m_scriptsExpected = -1;  // means not yet set by anyone!
+		m_isolateId = isolateId;
 		// rest default to null, 0 or false
 	}
 
@@ -150,7 +150,8 @@ public class DSwfInfo implements SwfInfo
 		if (isSwdLoading() && !isUnloaded())
 		{
 			// make the request 
-			try { ((PlayerSession)s).requestSwfInfo(m_index); } catch(NoResponseException nre) {}
+//			System.out.println("Swdloaded " + m_isolateId);
+			try { ((PlayerSession)s).requestSwfInfo(m_index, m_isolateId); } catch(NoResponseException nre) {}
 
 			// I should now be complete
 			if (!m_swdLoading)
@@ -262,6 +263,7 @@ public class DSwfInfo implements SwfInfo
 
 	// temporary while we parse
 	DManager m_manager;
+	private int m_isolateId = Isolate.DEFAULT_ID;
 
 	/**
 	 * Extracts information out of the SWF/SWD in order to populate
@@ -302,14 +304,20 @@ public class DSwfInfo implements SwfInfo
 			;
 		else if ( (id = local2Global(dm.id)) < 0 )
 			;
-		else if ( (module = m_manager.getSource(id)) == null )
+		else if ( (module = m_manager.getSource(id, Isolate.DEFAULT_ID)) == null )
 			;
 		else
 			module.addLineFunctionInfo(where.actions.getOffset(where.at), line, func);
 	}
 
 	/* for debugging */
+	@Override
 	public String toString() {
 		return m_path;
 	}
+
+	@Override
+	public int getIsolateId() {
+		return m_isolateId;
+	}
 }

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/concrete/DValue.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/concrete/DValue.java b/modules/debugger/src/java/flash/tools/debugger/concrete/DValue.java
index a022415..b59954f 100644
--- a/modules/debugger/src/java/flash/tools/debugger/concrete/DValue.java
+++ b/modules/debugger/src/java/flash/tools/debugger/concrete/DValue.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger.concrete;
@@ -27,6 +25,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
+import flash.tools.debugger.Isolate;
 import flash.tools.debugger.NoResponseException;
 import flash.tools.debugger.NotConnectedException;
 import flash.tools.debugger.NotSuspendedException;
@@ -42,16 +41,16 @@ import flash.tools.debugger.expression.Context;
  */
 public class DValue implements Value
 {
-	/** @see VariableType */
+	/** @see flash.tools.debugger.VariableType */
 	private int			m_type;
 
-	/** @see Variable#getTypeName() */
+	/** @see flash.tools.debugger.Variable#getTypeName() */
 	private String		m_typeName;
 
-	/** @see Variable#getClassName() */
+	/** @see flash.tools.debugger.Variable#getClassName() */
 	private String		m_className;
 
-	/** @see ValueAttribute */
+	/** @see flash.tools.debugger.ValueAttribute */
 	private int			m_attribs;
 
 	/** Maps "varname" (without its namespace) to a Variable */
@@ -96,6 +95,21 @@ public class DValue implements Value
 	
 	/** Maps duplicate private "varname" to a list of Variable objects */
 	private Map<String, List<DVariable>> m_inheritedPrivates;
+	
+	private int m_isolateId;
+
+
+    /**
+     * Create a top-level variable which has no parent.  This may be used for
+     * _global, _root, stack frames, etc.
+     *
+     * @param id the ID of the variable
+     */
+    public DValue(long id)
+    {
+        init(VariableType.UNKNOWN, null, null, 0, new Long(id));
+        setIsolateId(0);
+    }
 
 
 	/**
@@ -104,9 +118,10 @@ public class DValue implements Value
 	 *
 	 * @param id the ID of the variable
 	 */
-	public DValue(long id)
+	public DValue(long id, int isolateId)
 	{
 		init(VariableType.UNKNOWN, null, null, 0, new Long(id));
+		setIsolateId(isolateId);
 	}
 
 	/**
@@ -121,10 +136,13 @@ public class DValue implements Value
 	 *            for an Object or MovieClip, this should be a Long which contains the
 	 *            ID of this variable.  For a variable of any other type, such as integer
 	 *            or string, this should be the value of the variable.
+	 * @param isolateId
+	 * 			  the worker to which this value belongs
 	 */
-	public DValue(int type, String typeName, String className, int attribs, Object value)
+	public DValue(int type, String typeName, String className, int attribs, Object value, int isolateId)
 	{
 		init(type, typeName, className, attribs, value);
+		setIsolateId(isolateId);
 	}
 
 	/**
@@ -133,18 +151,18 @@ public class DValue implements Value
 	 * There is nothing special about these objects -- it would be just as legitimate for
 	 * anyone who wants a Value for a primitive to make their own subclass of Value.
 	 */
-	public static DValue forPrimitive(Object primitiveValue)
+	public static DValue forPrimitive(Object primitiveValue, int isolateId)
 	{
 		if (primitiveValue == null)
-			return new DValue(VariableType.NULL, "null", "", 0, primitiveValue); //$NON-NLS-1$ //$NON-NLS-2$
+			return new DValue(VariableType.NULL, "null", "", 0, primitiveValue, isolateId); //$NON-NLS-1$ //$NON-NLS-2$
 		else if (primitiveValue == Value.UNDEFINED)
-			return new DValue(VariableType.UNDEFINED, "undefined", "", 0, primitiveValue); //$NON-NLS-1$ //$NON-NLS-2$
+			return new DValue(VariableType.UNDEFINED, "undefined", "", 0, primitiveValue, isolateId); //$NON-NLS-1$ //$NON-NLS-2$
 		else if (primitiveValue instanceof Boolean)
-			return new DValue(VariableType.BOOLEAN, "Boolean", "", 0, primitiveValue); //$NON-NLS-1$ //$NON-NLS-2$
+			return new DValue(VariableType.BOOLEAN, "Boolean", "", 0, primitiveValue, isolateId); //$NON-NLS-1$ //$NON-NLS-2$
 		else if (primitiveValue instanceof Double)
-			return new DValue(VariableType.NUMBER, "Number", "", 0, primitiveValue); //$NON-NLS-1$ //$NON-NLS-2$
+			return new DValue(VariableType.NUMBER, "Number", "", 0, primitiveValue, isolateId); //$NON-NLS-1$ //$NON-NLS-2$
 		else if (primitiveValue instanceof String)
-			return new DValue(VariableType.STRING, "String", "", 0, primitiveValue); //$NON-NLS-1$ //$NON-NLS-2$
+			return new DValue(VariableType.STRING, "String", "", 0, primitiveValue, isolateId); //$NON-NLS-1$ //$NON-NLS-2$
 		assert false;
 		return null;
 	}
@@ -167,6 +185,15 @@ public class DValue implements Value
 		m_members = null;
 		m_inheritedPrivates = null;
 		m_nonProtoId = getId();
+		m_isolateId = Isolate.DEFAULT_ID;
+	}
+	
+	public int getIsolateId() {
+		return m_isolateId;
+	}
+	
+	public void setIsolateId(int isolateid) {
+		m_isolateId = isolateid;
 	}
 
 	/*
@@ -281,9 +308,9 @@ public class DValue implements Value
 	/**
 	 * WARNING: this call will initiate a call to the session to obtain the members
 	 * the first time around.
-	 * @throws NotConnectedException
-	 * @throws NoResponseException
-	 * @throws NotSuspendedException
+	 * @throws flash.tools.debugger.NotConnectedException
+	 * @throws flash.tools.debugger.NoResponseException
+	 * @throws flash.tools.debugger.NotSuspendedException
 	 */
 	private void obtainMembers(Session s) throws NotSuspendedException, NoResponseException, NotConnectedException
 	{
@@ -298,8 +325,8 @@ public class DValue implements Value
 			long id = getId();
 			if (id != Value.UNKNOWN_ID)
 			{
-				if (((PlayerSession)s).getRawValue(id) == this)
-					((PlayerSession)s).obtainMembers(id);
+				if (((PlayerSession)s).getRawValue(id, m_isolateId) == this)
+					((PlayerSession)s).obtainMembers(id, m_isolateId);
 				if (m_members != null)
 				{
 					Iterator<DVariable> iter = m_members.values().iterator();
@@ -483,8 +510,9 @@ public class DValue implements Value
 
 	/**
 	 * Necessary for expression evaluation.
-	 * @see Context#lookup(Object)
+	 * @see flash.tools.debugger.expression.Context#lookup(Object)
 	 */
+	@Override
 	public String toString() { return getValueAsString(); }
 
 	public Variable[] getPrivateInheritedMembers() {

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/concrete/DVariable.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/concrete/DVariable.java b/modules/debugger/src/java/flash/tools/debugger/concrete/DVariable.java
index e991e66..2fa59b3 100644
--- a/modules/debugger/src/java/flash/tools/debugger/concrete/DVariable.java
+++ b/modules/debugger/src/java/flash/tools/debugger/concrete/DVariable.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger.concrete;
@@ -44,10 +42,10 @@ public class DVariable implements Variable, Comparable
 	/** Just name, without namespace */
 	private String		m_name;
 
-	/** @see Variable#getNamespace() */
+	/** @see flash.tools.debugger.Variable#getNamespace() */
 	private String		m_namespace = ""; //$NON-NLS-1$
 
-	/** @see VariableAttribute */
+	/** @see flash.tools.debugger.VariableAttribute */
 	private int			m_attribs;
 
 	/**
@@ -71,7 +69,7 @@ public class DVariable implements Variable, Comparable
 
 	/**
 	 * The variable's "level" -- see <code>Variable.getLevel()</code>
-	 * @see Variable#getLevel()
+	 * @see flash.tools.debugger.Variable#getLevel()
 	 */
 	private byte		m_level;
 
@@ -85,6 +83,11 @@ public class DVariable implements Variable, Comparable
 	 * parent's ID, or else my parent's parent's ID if my parent is <code>__proto__</code>.
 	 */
 	long				m_nonProtoParentId;
+	
+	/**
+	 * The worker to which this variable belongs.
+	 */
+	private int m_isolateId;
 
 	/**
 	 * Create a variable and its value.
@@ -95,7 +98,7 @@ public class DVariable implements Variable, Comparable
 	 * @param value
 	 *            the variable's value.
 	 */
-	public DVariable(String name, DValue value)
+	public DVariable(String name, DValue value, int isolateId)
 	{
 		m_rawName = name;
 		m_attribs = value.getAttributes();
@@ -127,6 +130,7 @@ public class DVariable implements Variable, Comparable
 		m_nonProtoParentId = Value.UNKNOWN_ID;
 		m_value = value;
 		value.setSession(m_session);
+		m_isolateId = isolateId;
 	}
 
 	/* getters/setters */
@@ -136,7 +140,11 @@ public class DVariable implements Variable, Comparable
 	public int			getScope()				{ return m_attribs & VariableAttribute.SCOPE_MASK; }
 	public int			getLevel()				{ return m_level; }
 	public String		getDefiningClass()		{ return m_definingClass; }
-
+	
+	public int getIsolateId() {
+		return m_isolateId;
+	}
+	
 	public void makePublic()
 	{
 		int attributes = getAttributes();
@@ -175,7 +183,7 @@ public class DVariable implements Variable, Comparable
 		boolean hasValueChanged = false;
 		if (s instanceof PlayerSession)
 		{
-			Value previousParent = ((PlayerSession)s).getPreviousValue(m_nonProtoParentId);
+			Value previousParent = ((PlayerSession)s).getPreviousValue(m_nonProtoParentId, m_isolateId);
 			if (previousParent != null)
 			{
 				try {
@@ -210,7 +218,7 @@ public class DVariable implements Variable, Comparable
 	 */
 	public FaultEvent setValue(Session s, int type, String value) throws NotSuspendedException, NoResponseException, NotConnectedException
 	{
-		return ((PlayerSession)s).setScalarMember(m_nonProtoParentId, m_rawName, type, value);
+		return ((PlayerSession)s).setScalarMember(m_nonProtoParentId, m_rawName, type, value, m_isolateId);
 	}
 
 	/*
@@ -265,7 +273,7 @@ public class DVariable implements Variable, Comparable
 
 		String n1 = getName();
 		String n2 = v2.getName();
-
+		
 		return String.CASE_INSENSITIVE_ORDER.compare(n1, n2);
 	}
 
@@ -289,7 +297,7 @@ public class DVariable implements Variable, Comparable
 
 			// If this Variable is stale (that is, the program has run since this Variable
 			// was created), then we can't invoke the getter.
-			if (playerSession.getRawValue(m_value.getId()) == m_value)
+			if (playerSession.getRawValue(m_value.getId(), m_isolateId) == m_value)
 			{
 				// temporarily turn on "invoke getters" preference
 				int oldInvokeGetters = playerSession.getPreference(SessionManager.PREF_INVOKE_GETTERS);
@@ -297,7 +305,7 @@ public class DVariable implements Variable, Comparable
 
 				try {
 					// fire the getter using the original object id. make sure we get something reasonable back
-					Value v = playerSession.getValue(m_nonProtoParentId, getRawName());
+					Value v = playerSession.getValue(m_nonProtoParentId, getRawName(), m_isolateId);
 					if (v != null)
 					{
 						m_value = v;
@@ -330,8 +338,9 @@ public class DVariable implements Variable, Comparable
 
 	/**
 	 * Added so that expressions such as <code>a.b.c = e.f</code> work in the command-line interface.
-	 * @see Context#lookup(Object)
+	 * @see flash.tools.debugger.expression.Context#lookup(Object)
 	 */
+	@Override
 	public String toString() { return getValue().getValueAsString(); }
 
 	/**

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/concrete/DWatch.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/concrete/DWatch.java b/modules/debugger/src/java/flash/tools/debugger/concrete/DWatch.java
index 85679fb..35b2c41 100644
--- a/modules/debugger/src/java/flash/tools/debugger/concrete/DWatch.java
+++ b/modules/debugger/src/java/flash/tools/debugger/concrete/DWatch.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger.concrete;
@@ -30,17 +28,23 @@ public class DWatch implements Watch
 	String		m_rawMemberName; // corresponds to Variable.getRawName()
 	int			m_kind;
 	int			m_tag;
+	int m_isolateId;
 
-	public DWatch(long id, String name, int kind, int tag)
+	public DWatch(long id, String name, int kind, int tag, int isolateId)
 	{
 		m_parentValueId = id;
 		m_rawMemberName = name;
 		m_kind = kind;
 		m_tag = tag;
+		m_isolateId = isolateId;
 	}
 
     public long			getValueId()	{ return m_parentValueId; }
 	public String		getMemberName()	{ return m_rawMemberName; }
     public int			getKind()		{ return m_kind; }
     public int			getTag()		{ return m_tag; }
+    
+    public int getIsolateId() {
+    	return m_isolateId;
+    }
 }

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/concrete/IsolatePlayerSession.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/concrete/IsolatePlayerSession.java b/modules/debugger/src/java/flash/tools/debugger/concrete/IsolatePlayerSession.java
new file mode 100644
index 0000000..887b9c0
--- /dev/null
+++ b/modules/debugger/src/java/flash/tools/debugger/concrete/IsolatePlayerSession.java
@@ -0,0 +1,221 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package flash.tools.debugger.concrete;
+
+import flash.tools.debugger.Frame;
+import flash.tools.debugger.IsolateController;
+import flash.tools.debugger.IsolateSession;
+import flash.tools.debugger.Location;
+import flash.tools.debugger.NoResponseException;
+import flash.tools.debugger.NotConnectedException;
+import flash.tools.debugger.NotSupportedException;
+import flash.tools.debugger.NotSuspendedException;
+import flash.tools.debugger.PlayerDebugException;
+import flash.tools.debugger.SuspendedException;
+import flash.tools.debugger.SwfInfo;
+import flash.tools.debugger.Value;
+import flash.tools.debugger.Variable;
+import flash.tools.debugger.VersionException;
+import flash.tools.debugger.Watch;
+import flash.tools.debugger.expression.PlayerFaultException;
+
+/**
+ * Concrete implementation of IsolateSession. Re-routes
+ * calls to the *worker() method equivalents.
+ * @author anirudhs
+ *
+ */
+public class IsolatePlayerSession implements IsolateSession {
+
+	private IsolateController fSession;
+	private int fIsolateId;
+	
+	public IsolatePlayerSession(int isolateId, IsolateController mainSession) {
+		fIsolateId = isolateId;
+		fSession = mainSession;
+	}
+	
+	@Override
+	public void resume() throws NotSuspendedException, NotConnectedException,
+			NoResponseException {
+		fSession.resumeWorker(fIsolateId);
+	}
+
+	@Override
+	public void suspend() throws SuspendedException, NotConnectedException,
+			NoResponseException {
+		fSession.suspendWorker(fIsolateId);
+	}
+
+	@Override
+	public boolean isSuspended() throws NotConnectedException {
+		return fSession.isWorkerSuspended(fIsolateId);
+	}
+
+	@Override
+	public int suspendReason() throws NotConnectedException {
+		return fSession.suspendReasonWorker(fIsolateId);
+	}
+
+	@Override
+	public Frame[] getFrames() throws NotConnectedException {
+		return fSession.getFramesWorker(fIsolateId);
+	}
+
+	@Override
+	public void stepInto() throws NotSuspendedException, NoResponseException,
+			NotConnectedException {
+		fSession.stepIntoWorker(fIsolateId);
+	}
+
+	@Override
+	public void stepOut() throws NotSuspendedException, NoResponseException,
+			NotConnectedException {
+		fSession.stepOutWorker(fIsolateId);
+	}
+
+	@Override
+	public void stepOver() throws NotSuspendedException, NoResponseException,
+			NotConnectedException {
+		fSession.stepOverWorker(fIsolateId);
+	}
+
+	@Override
+	public void stepContinue() throws NotSuspendedException,
+			NoResponseException, NotConnectedException {
+		fSession.stepContinueWorker(fIsolateId);
+	}
+
+	@Override
+	public SwfInfo[] getSwfs() throws NoResponseException {
+		return fSession.getSwfsWorker(fIsolateId);
+	}
+
+	@Override
+	public Location setBreakpoint(int fileId, int lineNum)
+			throws NoResponseException, NotConnectedException {
+		return fSession.setBreakpointWorker(fileId, lineNum, fIsolateId);
+	}
+
+	@Override
+	public Watch[] getWatchList() throws NoResponseException,
+			NotConnectedException {
+		return fSession.getWatchListWorker(fIsolateId);
+	}
+
+	@Override
+	public Variable[] getVariableList() throws NotSuspendedException,
+			NoResponseException, NotConnectedException, VersionException {
+		return fSession.getVariableListWorker(fIsolateId);
+	}
+
+	@Override
+	public Value getValue(long valueId) throws NotSuspendedException,
+			NoResponseException, NotConnectedException {
+		return fSession.getValueWorker(valueId, fIsolateId);
+	}
+
+	@Override
+	public Value getGlobal(String name) throws NotSuspendedException,
+			NoResponseException, NotConnectedException {
+		return fSession.getGlobalWorker(name, fIsolateId);
+	}
+
+	@Override
+	public boolean evalIs(Value value, Value type) throws PlayerDebugException,
+			PlayerFaultException {
+		return fSession.evalIsWorker(value, type, fIsolateId);
+	}
+
+	@Override
+	public boolean evalIs(Value value, String type)
+			throws PlayerDebugException, PlayerFaultException {
+		return fSession.evalIsWorker(value, type, fIsolateId);
+	}
+
+	@Override
+	public boolean evalInstanceof(Value value, Value type)
+			throws PlayerDebugException, PlayerFaultException {
+		return fSession.evalInstanceofWorker(value, type, fIsolateId);
+	}
+
+	@Override
+	public boolean evalInstanceof(Value value, String type)
+			throws PlayerDebugException, PlayerFaultException {
+		return fSession.evalInstanceofWorker(value, type, fIsolateId);
+	}
+
+	@Override
+	public boolean evalIn(Value property, Value object)
+			throws PlayerDebugException, PlayerFaultException {
+		return fSession.evalInWorker(property, object, fIsolateId);
+	}
+
+	@Override
+	public Value evalAs(Value value, Value type) throws PlayerDebugException,
+			PlayerFaultException {
+		return fSession.evalAsWorker(value, type, fIsolateId);
+	}
+
+	@Override
+	public Value callFunction(Value thisObject, String functionName,
+			Value[] args) throws PlayerDebugException {
+		return fSession.callFunctionWorker(thisObject, functionName, args, fIsolateId);
+	}
+
+	@Override
+	public Value callConstructor(String classname, Value[] args)
+			throws PlayerDebugException {
+		return fSession.callConstructorWorker(classname, args, fIsolateId);
+	}
+	
+	@Override
+	public boolean setExceptionBreakpoint(String exceptionClass) throws NoResponseException, NotConnectedException {
+		return fSession.setExceptionBreakpointWorker(exceptionClass, fIsolateId);
+	}
+
+	@Override
+	public boolean clearExceptionBreakpoint(String exceptionClass) throws NoResponseException, NotConnectedException {
+		return fSession.clearExceptionBreakpointWorker(exceptionClass, fIsolateId);
+	}
+
+	@Override
+	public void breakOnCaughtExceptions(boolean b) throws NotSupportedException, NoResponseException {
+		fSession.breakOnCaughtExceptions(b, fIsolateId);
+	}
+
+	@Override
+	public boolean supportsWatchpoints() {
+		return fSession.supportsWatchpoints(fIsolateId);
+	}
+
+	@Override
+	public boolean playerCanBreakOnAllExceptions() {
+		return fSession.playerCanBreakOnAllExceptions(fIsolateId);
+	}
+
+	@Override
+	public boolean supportsWideLineNumbers() {
+		return fSession.supportsWideLineNumbers(fIsolateId);
+	}
+
+	@Override
+	public boolean playerCanCallFunctions() {
+		return fSession.playerCanCallFunctions(fIsolateId);
+	}
+
+}


[13/15] FLEX-34291: Merge the donated FDB with the current one.

Posted by ft...@apache.org.
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/concrete/DManager.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/concrete/DManager.java b/modules/debugger/src/java/flash/tools/debugger/concrete/DManager.java
index a290b14..a8b1c8a 100644
--- a/modules/debugger/src/java/flash/tools/debugger/concrete/DManager.java
+++ b/modules/debugger/src/java/flash/tools/debugger/concrete/DManager.java
@@ -1,34 +1,37 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger.concrete;
 
 import java.io.InputStream;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 
+import flash.tools.debugger.Isolate;
 import flash.tools.debugger.SourceLocator;
 import flash.tools.debugger.SuspendReason;
+import flash.tools.debugger.SwfInfo;
 import flash.tools.debugger.Value;
 import flash.tools.debugger.VariableAttribute;
 import flash.tools.debugger.VariableType;
@@ -39,9 +42,9 @@ import flash.tools.debugger.events.DivideByZeroFault;
 import flash.tools.debugger.events.ExceptionFault;
 import flash.tools.debugger.events.FaultEvent;
 import flash.tools.debugger.events.FileListModifiedEvent;
-import flash.tools.debugger.events.InvalidTargetFault;
-import flash.tools.debugger.events.InvalidURLFault;
 import flash.tools.debugger.events.InvalidWithFault;
+import flash.tools.debugger.events.IsolateCreateEvent;
+import flash.tools.debugger.events.IsolateExitEvent;
 import flash.tools.debugger.events.ProtoLimitFault;
 import flash.tools.debugger.events.RecursionLimitFault;
 import flash.tools.debugger.events.ScriptTimeoutFault;
@@ -52,262 +55,374 @@ import flash.tools.debugger.events.TraceEvent;
 import flash.util.Trace;
 
 /**
- * Implements the receiving and updating of debug state from the socket connection
- * of the Flash Player.
+ * Implements the receiving and updating of debug state from the socket
+ * connection of the Flash Player.
  */
-public class DManager implements DProtocolNotifierIF, SourceLocator
-{
-	private final HashMap<String, String>	m_parms;
-	private final Map<Integer,DModule>		m_source;	   /* WARNING: accessed from multiple threads */
-	private final ArrayList<DLocation>		m_breakpoints; /* WARNING: accessed from multiple threads */
-	private final ArrayList<DSwfInfo>		m_swfInfo;     /* WARNING: accessed from multiple threads */
-	private final ArrayList<DWatch>			m_watchpoints; /* WARNING: accessed from multiple threads */
+public class DManager implements DProtocolNotifierIF, SourceLocator {
+	private final HashMap<String, String> m_parms;
 
-	/**
-	 * The currently active stack frames.
-	 */
-	private ArrayList<DStackContext>		m_frames;
+	private final HashMap<Integer, DIsolate> m_isolates; /*
+														 * WARNING: accessed
+														 * from multiple threads
+														 */
 
 	/**
-	 * The stack frames that were active the last time the player was suspended.
+	 * The currently active isolate or worker
 	 */
-	private ArrayList<DStackContext>		m_previousFrames;
+	private Isolate m_activeIsolate = DEFAULT_ISOLATE;
+
+	private LinkedList<DebugEvent> m_event; /*
+											 * our event queue; WARNING:
+											 * accessed from multiple threads
+											 */
+	private SourceLocator m_sourceLocator;
+
+
+	private boolean m_squelchEnabled; /*
+									 * true if we are talking to a squelch
+									 * enabled debug player
+									 */
+	private int m_playerVersion; /*
+								 * player version number obtained from InVersion
+								 * message; e.g. 9 for Flash Player 9.0
+								 */
+
+	private boolean m_sourceListModified; /*
+										 * deprecated; indicates m_source has
+										 * changed since last call to
+										 * getSource(). WARNING: lock with
+										 * synchronized (m_source) { ... }
+										 */
+	private byte[] m_actions; /* deprecated */
+	private String[] m_lastConstantPool; /* deprecated */
 
-	/**
-	 * A list of all known variables in the player.  Stored as a mapping
-	 * from an object's id to its DValue.
-	 */
-	private Map<Long,DValue>				m_values;
+	// SWF/SWD fetching and parsing
+	private String m_uri;
+	private byte[] m_swf; // latest swf obtained from get swf
+	private byte[] m_swd; // latest swd obtained from get swd
+
+	private Map<String, String> m_options = new HashMap<String, String>(); // Player
+																			// options
+																			// that
+																			// have
+																			// been
+																			// queried
+																			// by
+																			// OutGetOption,
+																			// and
+																			// come
+																			// back
+																			// via
+																			// InOption
 
-	/**
-	 * A list of all known variables in the player from the previous time
-	 * the player was suspended.  Stored as a mapping from an object's id
-	 * to its DValue.
-	 */
-	private Map<Long,DValue>				m_previousValues;
-
-	private LinkedList<DebugEvent> m_event;	/* our event queue; WARNING: accessed from multiple threads */
-	private DSuspendInfo	m_suspendInfo;	/* info for when we are stopped */
-	private SourceLocator	m_sourceLocator;
-
-	private DSwfInfo	m_lastSwfInfo;		/* hack for syncing swfinfo records with incoming InScript messages */
-	private DVariable	m_lastInGetVariable;/* hack for getVariable call to work with getters */
-	private boolean		m_attachChildren;	/* hack for getVariable call to work with getters */
-	private DVariable	m_lastInCallFunction; /* hack for callFunction to work */
-	private DVariable	m_lastInBinaryOp;
-	private boolean		m_squelchEnabled;	/* true if we are talking to a squelch enabled debug player */
-	private int			m_playerVersion;	/* player version number obtained from InVersion message; e.g. 9 for Flash Player 9.0 */
-
-	private boolean		m_sourceListModified;	/* deprecated; indicates m_source has changed since last
-												 * call to getSource().
-												 * WARNING: lock with synchronized (m_source) { ... }
-												 */
-	private byte[]		m_actions;				/* deprecated */
-	private String[]	m_lastConstantPool;		/* deprecated */
+	public static final String ARGUMENTS_MARKER = "$arguments"; //$NON-NLS-1$
+	public static final String SCOPE_CHAIN_MARKER = "$scopechain"; //$NON-NLS-1$
+	
+	private static final DIsolate DEFAULT_ISOLATE = DIsolate.DEFAULT_ISOLATE;
+	private Isolate m_inIsolate = DEFAULT_ISOLATE;
+	private final Object m_inIsolateLock;
+	private final Object m_activeIsolateLock;
+	private boolean m_wideLines;
+	private DManagerIsolateState m_mainState;
+	private HashMap<Integer, DManagerIsolateState> m_isolateState;
+
+
+	class DManagerIsolateState {
+		public DSuspendInfo m_suspendInfo;
+		public DSwfInfo m_lastSwfInfo; /*
+										 * hack for syncing swfinfo records with
+										 * incoming InScript messages
+										 */
+		public DVariable m_lastInGetVariable;/*
+											 * hack for getVariable call to work
+											 * with getters
+											 */
+		public boolean m_attachChildren; /*
+										 * hack for getVariable call to work
+										 * with getters
+										 */
+		public DVariable m_lastInCallFunction; /* hack for callFunction to work */
+		public DVariable m_lastInBinaryOp;
+		private boolean m_executingPlayerCode;
+		private FaultEvent m_faultEventDuringPlayerCodeExecution;
+
+		public final ArrayList<DLocation> m_breakpoints; /*
+														 * WARNING: accessed
+														 * from multiple threads
+														 */
+		public final Map<Integer, DModule> m_source; /*
+													 * WARNING: accessed from
+													 * multiple threads
+													 */
+		private final ArrayList<DSwfInfo> m_swfInfo; /*
+													 * WARNING: accessed from
+													 * multiple threads
+													 */
+		private final ArrayList<DWatch> m_watchpoints; /*
+														 * WARNING: accessed
+														 * from multiple threads
+														 */
 
-	// SWF/SWD fetching and parsing
-	private String		m_uri;
-	private byte[]		m_swf;					// latest swf obtained from get swf
-	private byte[]		m_swd;					// latest swd obtained from get swd
+		/**
+		 * The currently active stack frames.
+		 */
+		public ArrayList<DStackContext> m_frames;
+
+		/**
+		 * The stack frames that were active the last time the player was
+		 * suspended.
+		 */
+		public ArrayList<DStackContext> m_previousFrames;
 
-	private boolean		m_executingPlayerCode;
-	private FaultEvent	m_faultEventDuringPlayerCodeExecution;
+		/**
+		 * A list of all known variables in the player. Stored as a mapping from
+		 * an object's id to its DValue.
+		 */
+		public Map<Long, DValue> m_values;
 
-	private Map<String, String>	m_options = new HashMap<String, String>();	// Player options that have been queried by OutGetOption, and come back via InOption
+		/**
+		 * A list of all known variables in the player from the previous time
+		 * the player was suspended. Stored as a mapping from an object's id to
+		 * its DValue.
+		 */
+		public Map<Long, DValue> m_previousValues;
+
+		public DManagerIsolateState() {
+			m_source = new HashMap<Integer, DModule>();
+			m_values = new HashMap<Long, DValue>();
+			m_previousValues = new HashMap<Long, DValue>();
+			m_frames = new ArrayList<DStackContext>();
+			m_previousFrames = new ArrayList<DStackContext>();
+			m_suspendInfo = null;
+			m_lastInCallFunction = null;
+			m_breakpoints = new ArrayList<DLocation>();
+			m_swfInfo = new ArrayList<DSwfInfo>();
+			m_watchpoints = new ArrayList<DWatch>();
+			m_suspendInfo = null;
+			m_lastInGetVariable = null;
+			m_attachChildren = true;
+			m_lastInCallFunction = null;
 
-	public static final String ARGUMENTS_MARKER = "$arguments"; //$NON-NLS-1$
-	public static final String SCOPE_CHAIN_MARKER = "$scopechain"; //$NON-NLS-1$
+		}
+	}
+
+	private DManagerIsolateState getIsolateState(int isolateId) {
+		if (isolateId == Isolate.DEFAULT_ID)
+			return m_mainState;
+		
+		DManagerIsolateState isolateState = null;
+		if (!m_isolateState.containsKey(isolateId)) {
+			isolateState = new DManagerIsolateState();
+			m_isolateState.put(isolateId, isolateState);
+		} else
+			isolateState = m_isolateState.get(isolateId);
+		return isolateState;
+	}
 
-	public DManager()
-	{
+	public DManager() {
 		m_parms = new HashMap<String, String>();
-		m_source = new HashMap<Integer, DModule>();
-		m_breakpoints = new ArrayList<DLocation>();
-		m_values = new HashMap<Long, DValue>();
-		m_previousValues = new HashMap<Long, DValue>();
-		m_frames = new ArrayList<DStackContext>();
-		m_previousFrames = new ArrayList<DStackContext>();
-		m_swfInfo = new ArrayList<DSwfInfo>();
-		m_watchpoints = new ArrayList<DWatch>();
+		
+		m_isolates = new HashMap<Integer, DIsolate>();
+		m_isolates.put(Isolate.DEFAULT_ID, DEFAULT_ISOLATE);
 		m_event = new LinkedList<DebugEvent>();
-		m_suspendInfo = null;
 		m_sourceLocator = null;
-
-		m_lastInGetVariable = null;
-		m_attachChildren = true;
-		m_lastInCallFunction = null;
 		m_squelchEnabled = false;
 		m_lastConstantPool = null;
-        m_playerVersion = -1; // -1 => unknown
+		m_playerVersion = -1; // -1 => unknown
+		m_isolateState = new HashMap<Integer, DManagerIsolateState>();
+		m_mainState = new DManagerIsolateState();
+		m_isolateState.put(Isolate.DEFAULT_ID, m_mainState);
+		m_inIsolateLock = new Object();
+		m_activeIsolateLock = new Object();
+		m_wideLines = false;
+	}
+
+	public void setWideLines(boolean value) {
+		m_wideLines = value;
+	}
+	
+	public String getURI() {
+		return m_uri;
+	}
+
+	public byte[] getSWF() {
+		return m_swf;
+	}
+
+	public byte[] getSWD() {
+		return m_swd;
+	}
+
+	public byte[] getActions() {
+		return m_actions;
 	}
 
-	public String getURI()		{ return m_uri; }
-    public byte[] getSWF()		{ return m_swf; }
-    public byte[] getSWD()		{ return m_swd; }
-    public byte[] getActions()	{ return m_actions; }
-    
-    /** Returns the Flash Player version number; e.g. 9 for Flash Player 9.0 */
-    public int    getVersion()  { return m_playerVersion; }
-    
-	public SourceLocator getSourceLocator() { return m_sourceLocator; }
-	public void setSourceLocator(SourceLocator sl) { m_sourceLocator = sl; }
+	/** Returns the Flash Player version number; e.g. 9 for Flash Player 9.0 */
+	public int getVersion() {
+		return m_playerVersion;
+	}
+
+	public SourceLocator getSourceLocator() {
+		return m_sourceLocator;
+	}
+
+	public void setSourceLocator(SourceLocator sl) {
+		m_sourceLocator = sl;
+	}
 
 	/**
-	 * If this feature is enabled then we do not attempt to attach
-	 * child variables to parents.
+	 * If this feature is enabled then we do not attempt to attach child
+	 * variables to parents.
 	 */
-	public void enableChildAttach(boolean enable) { m_attachChildren = enable; }
+	public void enableChildAttach(boolean enable, int isolateId) {
+		getIsolateState(isolateId).m_attachChildren = enable;
+	}
 
 	// return/clear the last variable seen from an InGetVariable message
-	public DVariable	lastVariable()			{ return m_lastInGetVariable; }
-	public void			clearLastVariable()		{ m_lastInGetVariable = null; }
+	public DVariable lastVariable(int isolateId) {
+		return getIsolateState(isolateId).m_lastInGetVariable;
+	}
+
+	public void clearLastVariable(int isolateId) {
+		getIsolateState(isolateId).m_lastInGetVariable = null;
+	}
 
 	// return/clear the last variable seen from an InCallFunction message
-	public DVariable	lastFunctionCall()		{ return m_lastInCallFunction; }
-	public void			clearLastFunctionCall()	{ m_lastInCallFunction = null; }
+	public DVariable lastFunctionCall(int isolateId) {
+		return getIsolateState(isolateId).m_lastInCallFunction;
+	}
+
+	public void clearLastFunctionCall(int isolateId) {
+		getIsolateState(isolateId).m_lastInCallFunction = null;
+	}
 
 	// return/clear the last binary op result seen from an InBinaryOp message
-	public DVariable	lastBinaryOp()			{ return m_lastInBinaryOp; }
-	public void			clearLastBinaryOp()		{ m_lastInBinaryOp = null; }
+	public DVariable lastBinaryOp(int isolateId) {
+		return getIsolateState(isolateId).m_lastInBinaryOp;
+	}
+
+	public void clearLastBinaryOp(int isolateId) {
+		getIsolateState(isolateId).m_lastInBinaryOp = null;
+	}
 
 	/*
 	 * Frees up any information we have kept about
 	 */
-	void freeCaches()
-	{
-		clearFrames();
-		freeValueCache();
+	void freeCaches(int isolateId) {
+		clearFrames(isolateId);
+		freeValueCache(isolateId);
 	}
 
-	void freeValueCache()
-	{
-		m_previousValues = m_values;
-		m_values = new HashMap<Long, DValue>();
+	void freeValueCache(int isolateId) {
+		DManagerIsolateState state = getIsolateState(isolateId);
+		state.m_previousValues = state.m_values;
+		state.m_values = new HashMap<Long, DValue>();
 
-		// mark all frames as stale
-		int size = getFrameCount();
-		for(int i=0; i<size; i++)
-			getFrame(i).markStale();
+		int size = getFrameCount(isolateId);
+		for (int i = 0; i < size; i++)
+			getFrame(i, isolateId).markStale();
 	}
 
 	// continuing our execution
-	void continuing()
-	{
-		freeCaches();
-		m_suspendInfo = null;
+	void continuing(int isolateId) {
+		freeCaches(isolateId);
+		getIsolateState(isolateId).m_suspendInfo = null;
 	}
 
 	/**
 	 * Variables
 	 */
-	DValue getOrCreateValue(long id)
-	{
-		DValue v = getValue(id);
-		if (v == null)
-		{
-			v = new DValue(id);
-			putValue(id, v);
+	DValue getOrCreateValue(long id, int isolateId) {
+		DValue v = getValue(id, isolateId);
+		if (v == null) {
+			v = new DValue(id, isolateId);
+			putValue(id, v, isolateId);
 		}
 		return v;
 	}
 
-	// Simple DSwfInfo getters
-	public DSwfInfo[] getSwfInfos()
-	{
-		synchronized (m_swfInfo)
-		{
-			return m_swfInfo.toArray( new DSwfInfo[m_swfInfo.size()] );
+	public DSwfInfo[] getSwfInfos(int isolateId) {
+		ArrayList<DSwfInfo> swfInfos = getIsolateState(isolateId).m_swfInfo;
+		synchronized (swfInfos) {
+			return swfInfos.toArray(new DSwfInfo[swfInfos.size()]);
 		}
 	}
 
-	public DSwfInfo getSwfInfo(int at)
-	{
-		synchronized (m_swfInfo)
-		{
-			return m_swfInfo.get(at);
+	public DSwfInfo getSwfInfo(int at, int isolateId) {
+		ArrayList<DSwfInfo> swfInfos = getIsolateState(isolateId).m_swfInfo;
+		synchronized (swfInfos) {
+			return swfInfos.get(at);
 		}
 	}
 
-	public int getSwfInfoCount()
-	{
-		synchronized (m_swfInfo)
-		{
-			return m_swfInfo.size();
+	public int getSwfInfoCount(int isolateId) {
+		ArrayList<DSwfInfo> swfInfos = getIsolateState(isolateId).m_swfInfo;
+		synchronized (swfInfos) {
+			return swfInfos.size();
 		}
 	}
 
 	/**
-	 * Obtains a SwfInfo object at the given index or if one
-	 * doesn't yet exist at that location, creates a new empty
-	 * one there and returns it.
+	 * Obtains a SwfInfo object at the given index or if one doesn't yet exist
+	 * at that location, creates a new empty one there and returns it.
 	 */
-	DSwfInfo getOrCreateSwfInfo(int at)
-	{
-		synchronized (m_swfInfo)
-		{
-			DSwfInfo i = (at > -1 && at < getSwfInfoCount()) ? getSwfInfo(at) : null;
-			if (i == null)
-			{
+	DSwfInfo getOrCreateSwfInfo(int at, int isolateId) {
+		ArrayList<DSwfInfo> swfInfos = getIsolateState(isolateId).m_swfInfo;
+		synchronized (swfInfos) {
+			DSwfInfo i = (at > -1 && at < getSwfInfoCount(isolateId)) ? getSwfInfo(
+					at, isolateId) : null;
+			if (i == null) {
 				// are we above water
 				at = (at < 0) ? 0 : at;
 
 				// fill all the gaps with null; really shouldn't be any...
-				while(at > m_swfInfo.size())
-					m_swfInfo.add(null);
+				while (at >= swfInfos.size())
+					swfInfos.add(null);
 
-				i = new DSwfInfo(at);
-				m_swfInfo.add(at, i);
+				i = new DSwfInfo(at, isolateId);
+				swfInfos.set(at, i);
 			}
 			return i;
 		}
 	}
 
 	/**
-	 * Get the most recently active swfInfo object.
-	 * We define active as the most recently seen swfInfo
+	 * Get the most recently active swfInfo object. We define active as the most
+	 * recently seen swfInfo
 	 */
-	DSwfInfo getActiveSwfInfo()
-	{
-		int count = getSwfInfoCount();
+	DSwfInfo getActiveSwfInfo(int isolateId) {
+		int count = getSwfInfoCount(isolateId);
 
 		// pick up the last one seen
-		DSwfInfo swf = m_lastSwfInfo;
+		DSwfInfo swf = getIsolateState(isolateId).m_lastSwfInfo;
 
 		// still don't have one then get or create the most recent one
 		// works if count = 0
 		if (swf == null)
-			swf = getOrCreateSwfInfo(count-1);
+			swf = getOrCreateSwfInfo(count - 1, isolateId);
 
-		if (swf.hasAllSource())
-		{
+		if (swf.hasAllSource()) {
 			// already full so create a new one on the end
-			swf = getOrCreateSwfInfo(count);
+			swf = getOrCreateSwfInfo(count, isolateId);
 		}
 		return swf;
 	}
 
 	/**
-	 * Walk the list of scripts and add them to our swfInfo object
-	 * This method may be called when min/max are zero and the swd
-	 * has not yet fully loaded in the player or it could be called
-	 * before we have all the scripts.
+	 * Walk the list of scripts and add them to our swfInfo object This method
+	 * may be called when min/max are zero and the swd has not yet fully loaded
+	 * in the player or it could be called before we have all the scripts.
 	 */
-	void tieScriptsToSwf(DSwfInfo info)
-	{
-		if (!info.hasAllSource())
-		{
+	void tieScriptsToSwf(DSwfInfo info, int isolateId) {
+		if (!info.hasAllSource()) {
 			int min = info.getFirstSourceId();
 			int max = info.getLastSourceId();
-//			System.out.println("attaching scripts "+min+"-"+max+" to "+info.getUrl());
-			for(int i=min; i<=max; i++)
-			{
-				DModule m = getSource(i);
-				if (m == null)
-				{
+			// System.out.println("attaching scripts "+min+"-"+max+" to "+info.getUrl());
+			for (int i = min; i <= max; i++) {
+				DModule m = getSource(i, isolateId);
+				if (m == null) {
 					// this is ok, it means the scripts are coming...
-				}
-				else
-				{
+				} else {
 					info.addSource(i, m);
 				}
 			}
@@ -316,35 +431,39 @@ public class DManager implements DProtocolNotifierIF, SourceLocator
 
 	/**
 	 * Record a new source file.
-	 * @param name filename in "basepath;package;filename" format
-	 * @param swfIndex the index of the SWF with which this source is associated,
-	 *                 or -1 is we don't know
+	 * 
+	 * @param name
+	 *            filename in "basepath;package;filename" format
+	 * @param swfIndex
+	 *            the index of the SWF with which this source is associated, or
+	 *            -1 is we don't know
 	 * @return true if our list of source files was modified, or false if we
-	 * already knew about that particular source file.
+	 *         already knew about that particular source file.
 	 */
-	private boolean putSource(int swfIndex, int moduleId, int bitmap, String name, String text)
-	{
-		synchronized (m_source)
-		{
+	private boolean putSource(int swfIndex, int moduleId, int bitmap,
+			String name, String text, int isolateId) {
+		// if isolateIndex is not -1, augment swfIndex and moduleId with isolate
+		// info.
+		Map<Integer, DModule> source = getIsolateState(isolateId).m_source;
+		synchronized (source) {
 			// if we haven't already recorded this script then do so.
-			if (!m_source.containsKey(moduleId))
-	        {
-				DModule s = new DModule(this, moduleId, bitmap, name, text);
+			if (!source.containsKey(moduleId)) {
+				DModule s = new DModule(this, moduleId, bitmap, name, text, isolateId);
 
-	            // put source in our large pool
-	            m_source.put(moduleId, s);
+				// put source in our large pool
+				source.put(moduleId, s);
 
-	            // put the source in the currently active swf
-	            DSwfInfo swf;
-				if (swfIndex == -1)				// caller didn't tell us what swf thi is for
-					swf = getActiveSwfInfo();	// ... so guess
+				// put the source in the currently active swf
+				DSwfInfo swf;
+				if (swfIndex == -1) // caller didn't tell us what swf thi is for
+					swf = getActiveSwfInfo(isolateId); // ... so guess
 				else
-					swf = getOrCreateSwfInfo(swfIndex);
+					swf = getOrCreateSwfInfo(swfIndex, isolateId);
 
-	            swf.addSource(moduleId, s);
+				swf.addSource(moduleId, s);
 
 				return true;
-	        }
+			}
 
 			return false;
 		}
@@ -352,237 +471,246 @@ public class DManager implements DProtocolNotifierIF, SourceLocator
 
 	/**
 	 * Remove our record of a particular source file.
-	 * @param id the id of the file to forget about.
-	 * @return true if source file was removed; false if we didn't know about
-	 * it to begin with.
+	 * 
+	 * @param id
+	 *            the id of the file to forget about.
+	 * @return true if source file was removed; false if we didn't know about it
+	 *         to begin with.
 	 */
-	private boolean removeSource(int id)
-	{
-		synchronized (m_source)
-		{
-			try
-			{
-				m_source.remove(id);
-			}
-			catch(Exception e)
-			{
+	private boolean removeSource(int id, int isolateId) {
+		Map<Integer, DModule> source = getIsolateState(isolateId).m_source;
+		synchronized (source) {
+			try {
+				source.remove(id);
+			} catch (Exception e) {
 				return false;
 			}
 			return true;
 		}
 	}
 
-	public DModule getSource(int id)
-	{
-		synchronized (m_source)
-		{
-			return m_source.get(id);
+	public DModule getSource(int id, int isolateId) {
+		Map<Integer, DModule> source = getIsolateState(isolateId).m_source;
+		synchronized (source) {
+			return source.get(id);
 		}
 	}
 
 	// @deprecated
-	public DModule[] getSources()
-	{
-		synchronized (m_source)
-		{
+	public DModule[] getSources() {
+		Map<Integer, DModule> source = getIsolateState(Isolate.DEFAULT_ID).m_source;
+		synchronized (source) {
 			m_sourceListModified = false;
 
 			/* find out the size of the array */
-			int count = m_source.size();
+			int count = source.size();
 			DModule[] ar = new DModule[count];
 
 			count = 0;
-			for (DModule sf: m_source.values())
+			for (DModule sf : source.values())
 				ar[count++] = sf;
 			return ar;
 		}
 	}
 
 	// @deprecated
-	boolean sourceListModified()
-	{
-		synchronized (m_source)
-		{
+	boolean sourceListModified() {
+		Map<Integer, DModule> source = getIsolateState(Isolate.DEFAULT_ID).m_source;
+		synchronized (source) {
 			return m_sourceListModified;
 		}
 	}
 
-	public DValue getValue(long id)
-	{
-		DValue v = m_values.get(id);
-		return v;
+	public DValue getValue(long id, int isolateId) {
+		return getIsolateState(isolateId).m_values.get(id);
 	}
 
 	/**
-	 * Returns the previous value object for the given id -- that is, the value that that
-	 * object had the last time the player was suspended.  Never requests it from the
-	 * player (because it can't, of course).  Returns <code>null</code> if we don't have
-	 * a value for that id.
+	 * Returns the previous value object for the given id -- that is, the value
+	 * that that object had the last time the player was suspended. Never
+	 * requests it from the player (because it can't, of course). Returns
+	 * <code>null</code> if we don't have a value for that id.
 	 */
-	public DValue getPreviousValue(long id)
-	{
-		return m_previousValues.get(id);
+	public DValue getPreviousValue(long id, int isolateId) {
+		return getIsolateState(isolateId).m_previousValues.get(id);
 	}
 
-	void putValue(long id, DValue v)
-	{
-		if (id != Value.UNKNOWN_ID)
-		{
-			m_values.put(id, v);
+	void putValue(long id, DValue v, int isolateId) {
+		if (id != Value.UNKNOWN_ID) {
+			getIsolateState(isolateId).m_values.put(id, v);
 		}
 	}
 
-	DValue removeValue(long id)
-	{
-		return m_values.remove((int)id);
+	DValue removeValue(long id, int isolateId) {
+		return getIsolateState(isolateId).m_values.remove((int)id);
 	}
 
-	void addVariableMember(long parentId, DVariable child)
-	{
-		DValue parent = getValue(parentId);
-		addVariableMember(parent, child);
+	void addVariableMember(long parentId, DVariable child, int isolateId) {
+		DValue parent = getValue(parentId, isolateId);
+		addVariableMember(parent, child, isolateId);
 	}
 
-	void addVariableMember(DValue parent, DVariable child)
-	{
-		if (m_attachChildren)
-		{
-			// There are certain situations when the Flash player will send us more
-			// than one variable or getter with the same name.  Basically, when a
-			// subclass implements (or overrides) something that was also declared in a
+	void addVariableMember(DValue parent, DVariable child, int isolateId) {
+		if (getIsolateState(isolateId).m_attachChildren) {
+			// There are certain situations when the Flash player will send us
+			// more
+			// than one variable or getter with the same name. Basically, when a
+			// subclass implements (or overrides) something that was also
+			// declared in a
 			// superclass, then we'll see that variable or getter in both the
 			// superclass and the subclass.
 			//
-			// Here are a few situations where that affects the debugger in different
+			// Here are a few situations where that affects the debugger in
+			// different
 			// ways:
 			//
-			// 1. When a class implements an interface, the class instance actually has
-			//    *two* members for each implemented function: One which is public and
-			//    represents the implementation function, and another which is internal
-			//    to the interface, and represents the declaration of the function.
-			//    Both of these come in to us.  In the UI, the one we want to show is
-			//    the public one.  They come in in random order (they are stored in a
-			//    hash table in the VM), so we don't know which one will come first.
+			// 1. When a class implements an interface, the class instance
+			// actually has
+			// *two* members for each implemented function: One which is public
+			// and
+			// represents the implementation function, and another which is
+			// internal
+			// to the interface, and represents the declaration of the function.
+			// Both of these come in to us. In the UI, the one we want to show
+			// is
+			// the public one. They come in in random order (they are stored in
+			// a
+			// hash table in the VM), so we don't know which one will come
+			// first.
 			//
-			// 2. When a superclass has a private member "m", and a subclass has its own
-			//    private member with the same name "m", we will receive both of them.
-			//    (They are scoped by different packages.)  In this case, the first one
-			//    the player sent us is the one from the subclass, and that is the one
-			//    we want to display in the debugger.
+			// 2. When a superclass has a private member "m", and a subclass has
+			// its own
+			// private member with the same name "m", we will receive both of
+			// them.
+			// (They are scoped by different packages.) In this case, the first
+			// one
+			// the player sent us is the one from the subclass, and that is the
+			// one
+			// we want to display in the debugger.
 			//
-			// The following logic correctly deals with all variations of those cases.
-			if (parent != null) 
-			{
-				DVariable existingChildWithSameName = parent.findMember(child.getName());
-				if (existingChildWithSameName != null)
-				{
+			// The following logic correctly deals with all variations of those
+			// cases.
+			if (parent != null) {
+				DVariable existingChildWithSameName = parent.findMember(child
+						.getName());
+				if (existingChildWithSameName != null) {
 					int existingScope = existingChildWithSameName.getScope();
 					int newScope = child.getScope();
 
-					if (existingScope == VariableAttribute.NAMESPACE_SCOPE && newScope == VariableAttribute.PUBLIC_SCOPE)
-					{
-						// This is the case described above where a class implements an interface,
-						// so that class's definition includes both a namespace-scoped declaration
-						// and a public declaration, in random order; in this case, the
-						// namespace-scoped declaration came first.  We want to use the public
+					if (existingScope == VariableAttribute.NAMESPACE_SCOPE
+							&& newScope == VariableAttribute.PUBLIC_SCOPE) {
+						// This is the case described above where a class
+						// implements an interface,
+						// so that class's definition includes both a
+						// namespace-scoped declaration
+						// and a public declaration, in random order; in this
+						// case, the
+						// namespace-scoped declaration came first. We want to
+						// use the public
 						// declaration.
 						parent.addMember(child);
-					}
-					else if (existingScope == VariableAttribute.PUBLIC_SCOPE && newScope == VariableAttribute.NAMESPACE_SCOPE)
-					{
+					} else if (existingScope == VariableAttribute.PUBLIC_SCOPE
+							&& newScope == VariableAttribute.NAMESPACE_SCOPE) {
 						// One of two things happened here:
 						//
-						// 1. This is the case described above where a class implements an interface,
-						//    so that class's definition includes both a namespace-scoped declaration
-						//    and a public declaration, in random order; in this case, the
-						//    public declaration came first.  It is tempting to use the public
-						//    member in this case, but there is a catch...
-						// 2. It might be more complicated than that: Perhaps there is interface I,
-						//    and class C1 implements I, but class C2 extends C1, and overrides
-						//    one of the members of I that was already implemented by C1.  In this
-						//    case, the public declaration from C2 came first, but now we are seeing
-						//    a namespace-scoped declaration in C1.  We need to record that the
-						//    member is public, but we also need to record that it is a member
-						//    of the base class, not just a member of the superclass.
+						// 1. This is the case described above where a class
+						// implements an interface,
+						// so that class's definition includes both a
+						// namespace-scoped declaration
+						// and a public declaration, in random order; in this
+						// case, the
+						// public declaration came first. It is tempting to use
+						// the public
+						// member in this case, but there is a catch...
+						// 2. It might be more complicated than that: Perhaps
+						// there is interface I,
+						// and class C1 implements I, but class C2 extends C1,
+						// and overrides
+						// one of the members of I that was already implemented
+						// by C1. In this
+						// case, the public declaration from C2 came first, but
+						// now we are seeing
+						// a namespace-scoped declaration in C1. We need to
+						// record that the
+						// member is public, but we also need to record that it
+						// is a member
+						// of the base class, not just a member of the
+						// superclass.
 						//
-						// The easiest way to deal with both cases is to use the child that came from
+						// The easiest way to deal with both cases is to use the
+						// child that came from
 						// the superclass, but to change its scope to public.
 						child.makePublic();
 						parent.addMember(child);
-					}
-					else if (existingScope != VariableAttribute.PRIVATE_SCOPE && existingScope == newScope)
-					{
-						// This is a public, protected, internal, or namespace-scoped member which
-						// was defined in a base class and overridden in a subclass.  We want to
-						// use the member from the base class, to that the debugger knows where the
+					} else if (existingScope != VariableAttribute.PRIVATE_SCOPE
+							&& existingScope == newScope) {
+						// This is a public, protected, internal, or
+						// namespace-scoped member which
+						// was defined in a base class and overridden in a
+						// subclass. We want to
+						// use the member from the base class, to that the
+						// debugger knows where the
 						// variable was actually defined.
 						parent.addMember(child);
-					}
-					else if (existingScope == VariableAttribute.PRIVATE_SCOPE && existingScope == newScope)
-					{
+					} else if (existingScope == VariableAttribute.PRIVATE_SCOPE
+							&& existingScope == newScope) {
 						parent.addInheritedPrivateMember(child);
 					}
-				}
-				else
-				{
+				} else {
 					parent.addMember(child);
 				}
 			}
 			// put child in the registry if it has an id and not already there
 			DValue childValue = (DValue) child.getValue();
 			long childId = childValue.getId();
-			if (childId != Value.UNKNOWN_ID)
-			{
-				DValue existingValue = getValue(childId);
-				if (existingValue != null)
-				{
-					assert existingValue == childValue; // TODO is this right? what about getters?
-				}
-				else
-				{
-					putValue(childId, childValue);
+			if (childId != Value.UNKNOWN_ID) {
+				DValue existingValue = getValue(childId, isolateId);
+				if (existingValue != null) {
+					assert existingValue == childValue; // TODO is this right?
+														// what about getters?
+				} else {
+					putValue(childId, childValue, isolateId);
 				}
 			}
 		}
 	}
 
 	// TODO is this right?
-	void addVariableMember(long parentId, DVariable child, long doubleAsId)
-	{
-		addVariableMember(parentId, child);
+	void addVariableMember(long parentId, DVariable child, long doubleAsId,
+			int isolateId) {
+		addVariableMember(parentId, child, isolateId);
 
 		// double book the child under another id
-		if (m_attachChildren)
-			putValue(doubleAsId, (DValue) child.getValue());
+		if (getIsolateState(isolateId).m_attachChildren)
+			putValue(doubleAsId, (DValue) child.getValue(), isolateId);
 	}
 
-	//  @deprecated last pool that was read
-	public String[] getConstantPool() { return m_lastConstantPool; }
+	// @deprecated last pool that was read
+	public String[] getConstantPool() {
+		return m_lastConstantPool;
+	}
 
 	/**
 	 * Breakpoints
 	 */
-	public DLocation getBreakpoint(int id)
-	{
-		synchronized (m_breakpoints)
-		{
+	public DLocation getBreakpoint(int id, int isolateId) {
+		ArrayList<DLocation> breakpoints = getIsolateState(isolateId).m_breakpoints;
+		synchronized (breakpoints) {
 			DLocation loc = null;
-			int which = findBreakpoint(id);
+			int which = findBreakpoint(id, isolateId);
 			if (which > -1)
-				loc = m_breakpoints.get(which);
+				loc = breakpoints.get(which);
 			return loc;
 		}
 	}
 
-	int findBreakpoint(int id)
-	{
-		synchronized (m_breakpoints)
-		{
+	int findBreakpoint(int id, int isolateId) {
+		ArrayList<DLocation> breakpoints = getIsolateState(isolateId).m_breakpoints;
+		synchronized (breakpoints) {
 			int which = -1;
-			int size = m_breakpoints.size();
-			for(int i=0; which < 0 && i<size; i++)
-			{
-				DLocation l = m_breakpoints.get(i);
+			int size = breakpoints.size();
+			for (int i = 0; which < 0 && i < size; i++) {
+				DLocation l = breakpoints.get(i);
 				if (l.getId() == id)
 					which = i;
 			}
@@ -590,68 +718,83 @@ public class DManager implements DProtocolNotifierIF, SourceLocator
 		}
 	}
 
-	DLocation removeBreakpoint(int id)
-	{
-		synchronized (m_breakpoints)
-		{
+	DLocation removeBreakpoint(int id, int isolateId) {
+		ArrayList<DLocation> breakpoints = getIsolateState(isolateId).m_breakpoints;
+		synchronized (breakpoints) {
 			DLocation loc = null;
-			int which = findBreakpoint(id);
-			if (which > -1)
-			{
-				loc = m_breakpoints.get(which);
-				m_breakpoints.remove(which);
+			int which = findBreakpoint(id, isolateId);
+			if (which > -1) {
+				loc = breakpoints.get(which);
+				breakpoints.remove(which);
 			}
 
 			return loc;
 		}
 	}
 
-	void addBreakpoint(int id, DLocation l)
-	{
-		synchronized (m_breakpoints)
-		{
-			m_breakpoints.add(l);
+	void addBreakpoint(int id, DLocation l, int isolateId) {
+		ArrayList<DLocation> breakpoints = getIsolateState(isolateId).m_breakpoints;
+		synchronized (breakpoints) {
+			breakpoints.add(l);
 		}
 	}
 
-	public DLocation[] getBreakpoints()
-	{
-		synchronized (m_breakpoints)
-		{
-			return m_breakpoints.toArray(new DLocation[m_breakpoints.size()]);
+	public DLocation[] getBreakpoints(int isolateId) {
+		ArrayList<DLocation> breakpoints = getIsolateState(isolateId).m_breakpoints;
+		synchronized (breakpoints) {
+			return breakpoints.toArray(new DLocation[breakpoints.size()]);
 		}
 	}
 
 	/**
 	 * Watchpoints
 	 */
-	public DWatch		getWatchpoint(int at)	{ synchronized (m_watchpoints) { return m_watchpoints.get(at); } }
-	public int			getWatchpointCount()	{ synchronized (m_watchpoints) { return m_watchpoints.size(); } }
-	public DWatch[]		getWatchpoints()		{ synchronized (m_watchpoints) { return m_watchpoints.toArray( new DWatch[m_watchpoints.size()] ); } }
+	public DWatch getWatchpoint(int at, int isolateId) {
+		DManagerIsolateState state = getIsolateState(isolateId);
+		synchronized (state.m_watchpoints) {
+			return state.m_watchpoints.get(at);
+		}
+	}
 
-	boolean addWatchpoint(DWatch w)				{ synchronized (m_watchpoints) { return m_watchpoints.add(w); } }
+	public int getWatchpointCount(int isolateId) {
+		DManagerIsolateState state = getIsolateState(isolateId);
+		synchronized (state.m_watchpoints) {
+			return state.m_watchpoints.size();
+		}
+	}
 
-	DWatch removeWatchpoint(int tag)
-	{
-		synchronized (m_watchpoints)
-		{
+	public DWatch[] getWatchpoints(int isolateId) {
+		DManagerIsolateState state = getIsolateState(isolateId);
+		synchronized (state.m_watchpoints) {
+			return state.m_watchpoints.toArray(new DWatch[state.m_watchpoints.size()]);
+		}
+	}
+
+	boolean addWatchpoint(DWatch w, int isolateId) {
+		ArrayList<DWatch> lockObject = getIsolateState(isolateId).m_watchpoints;
+		synchronized (lockObject) {
+			return lockObject.add(w);
+		}
+	}
+
+	DWatch removeWatchpoint(int tag, int isolateId) {
+		ArrayList<DWatch> lockObject = getIsolateState(isolateId).m_watchpoints;
+		synchronized (lockObject) {
 			DWatch w = null;
-			int at = findWatchpoint(tag);
+			int at = findWatchpoint(tag, isolateId);
 			if (at > -1)
-				w = m_watchpoints.remove(at);
+				w = lockObject.remove(at);
 			return w;
 		}
 	}
 
-	int findWatchpoint(int tag)
-	{
-		synchronized (m_watchpoints)
-		{
+	int findWatchpoint(int tag, int isolateId) {
+		ArrayList<DWatch> lockObject = getIsolateState(isolateId).m_watchpoints;
+		synchronized (lockObject) {
 			int at = -1;
-			int size = getWatchpointCount();
-			for(int i=0; i<size && at<0; i++)
-			{
-				DWatch w = getWatchpoint(i);
+			int size = getWatchpointCount(isolateId);
+			for (int i = 0; i < size && at < 0; i++) {
+				DWatch w = getWatchpoint(i, isolateId);
 				if (w.getTag() == tag)
 					at = i;
 			}
@@ -660,28 +803,140 @@ public class DManager implements DProtocolNotifierIF, SourceLocator
 	}
 
 	/**
+	 * Isolates
+	 */
+	public DIsolate getIsolate(int at) {
+
+		if (at == Isolate.DEFAULT_ID)
+			return (DIsolate) DEFAULT_ISOLATE;
+
+		synchronized (m_isolates) {
+			return m_isolates.get(at);
+		}
+	}
+
+	public DIsolate getOrCreateIsolate(int at) {
+		synchronized (m_isolates) {
+			if (m_isolates.containsKey(at)) {
+				return m_isolates.get(at);
+			} else {
+				DIsolate isolate = new DIsolate(at);
+				m_isolates.put(at, isolate);
+				return isolate;
+			}
+		}
+	}
+
+	public int getIsolateCount() {
+		synchronized (m_isolates) {
+			return m_isolates.size();
+		}
+	}
+
+	public DIsolate[] getIsolates() {
+		synchronized (m_isolates) {
+			return m_isolates.values().toArray(new DIsolate[m_isolates.size()]);
+		}
+	}
+
+	boolean addIsolate(DIsolate t) {
+		synchronized (m_isolates) {
+			m_isolates.put(t.getId(), t);
+			return true;
+		}
+	}
+
+	void clearIsolates() {
+		synchronized (m_isolates) {
+			m_isolates.clear();
+		}
+	}
+
+	DIsolate removeIsolate(int id) {
+		synchronized (m_isolates) {
+			DIsolate t = null;
+			int at = findIsolate(id);
+			if (at > -1)
+				t = m_isolates.remove(at);
+			return t;
+		}
+	}
+
+	int findIsolate(int id) {
+		synchronized (m_isolates) {
+			if (m_isolates.containsKey(id))
+				return id;
+			else
+				return -1;
+		}
+	}
+
+	void setActiveIsolate(Isolate t) {
+		synchronized (m_activeIsolateLock) {
+			if (t == null) {
+				m_activeIsolate = DEFAULT_ISOLATE;
+			} else
+				m_activeIsolate = t;
+		}
+	}
+	
+	Isolate getActiveIsolate() {
+		synchronized (m_activeIsolateLock) {
+			return m_activeIsolate;
+		}
+	}
+
+
+	void setInIsolate(Isolate t) {
+		synchronized (m_inIsolateLock) {
+			if (t == null) {
+				m_inIsolate = DEFAULT_ISOLATE;
+			} else
+				m_inIsolate = t;
+		}
+	}
+
+	Isolate getInIsolate() {
+		synchronized (m_inIsolateLock) {
+			return m_inIsolate;
+		}
+	}
+
+	Isolate getDefaultIsolate() {
+		return DEFAULT_ISOLATE;
+	}
+
+
+	/**
 	 * Frame stack management related stuff
+	 * 
 	 * @return true if we added this frame; false if we ignored it
 	 */
-	boolean addFrame(DStackContext ds)
-	{
-		m_frames.add(ds);
+	boolean addFrame(DStackContext ds, int isolateId) {
+		getIsolateState(isolateId).m_frames.add(ds);
 		return true;
 	}
 
-	void clearFrames()
-	{
-		if (m_frames.size() > 0)
-			m_previousFrames = m_frames;
-		m_frames = new ArrayList<DStackContext>();
+	void clearFrames(int isolateId) {
+		if (getIsolateState(isolateId).m_frames.size() > 0)
+			getIsolateState(isolateId).m_previousFrames = getIsolateState(isolateId).m_frames;
+		getIsolateState(isolateId).m_frames = new ArrayList<DStackContext>();
 	}
 
-	public DStackContext		getFrame(int at)		{ return m_frames.get(at);}
-	public int					getFrameCount()			{ return m_frames.size();}
-	public DStackContext[]		getFrames()				{ return m_frames.toArray( new DStackContext[m_frames.size()] );	}
+	public DStackContext getFrame(int at, int isolateId) {
+		return getIsolateState(isolateId).m_frames.get(at);
+	}
+
+	public int getFrameCount(int isolateId) {
+		return getIsolateState(isolateId).m_frames.size();
+	}
 
-	private boolean stringsEqual(String s1, String s2)
-	{
+	public DStackContext[] getFrames(int isolateId) {
+		ArrayList<DStackContext> frames = getIsolateState(isolateId).m_frames;
+		return frames.toArray(new DStackContext[frames.size()]);
+	}
+
+	private boolean stringsEqual(String s1, String s2) {
 		if (s1 == null)
 			return s2 == null;
 		else
@@ -691,34 +946,41 @@ public class DManager implements DProtocolNotifierIF, SourceLocator
 	/**
 	 * Correlates the old list of stack frames, from the last time the player
 	 * was suspended, with the new list of stack frames, attempting to guess
-	 * which frames correspond to each other.  This is done so that
+	 * which frames correspond to each other. This is done so that
 	 * Variable.hasValueChanged() can work correctly for local variables.
 	 */
-	private void mapOldFramesToNew() {
-		int oldSize = m_previousFrames.size();
-		int newSize = m_frames.size();
+	private void mapOldFramesToNew(int isolateId) {
+		ArrayList<DStackContext> previousFrames = null;
+		ArrayList<DStackContext> frames = null;
+		Map<Long, DValue> previousValues = null;
+
+		previousFrames = getIsolateState(isolateId).m_previousFrames;
+		frames = getIsolateState(isolateId).m_frames;
+		previousValues = getIsolateState(isolateId).m_previousValues;
+
+		int oldSize = previousFrames.size();
+		int newSize = frames.size();
 
 		// discard all old frames (we will restore some of them below)
 		DValue[] oldFrames = new DValue[oldSize];
 		for (int depth = 0; depth < oldSize; depth++) {
-			oldFrames[depth] = (DValue) m_previousValues.remove(Value.BASE_ID - depth);
+			oldFrames[depth] = (DValue) previousValues.remove(Value.BASE_ID
+					- depth);
 		}
 
 		// Start at the end of the stack (the stack frame farthest from the
 		// current one), and try to match up stack frames
-		int oldDepth = oldSize-1;
-		int newDepth = newSize-1;
-		while (oldDepth >= 0 && newDepth >= 0)
-		{
-			DStackContext oldFrame = m_previousFrames.get(oldDepth);
-			DStackContext newFrame = m_frames.get(newDepth);
-			if (oldFrame != null && newFrame != null)
-			{
-				if (stringsEqual(oldFrame.getCallSignature(), newFrame.getCallSignature()))
-				{
+		int oldDepth = oldSize - 1;
+		int newDepth = newSize - 1;
+		while (oldDepth >= 0 && newDepth >= 0) {
+			DStackContext oldFrame = previousFrames.get(oldDepth);
+			DStackContext newFrame = frames.get(newDepth);
+			if (oldFrame != null && newFrame != null) {
+				if (stringsEqual(oldFrame.getCallSignature(),
+						newFrame.getCallSignature())) {
 					DValue frame = oldFrames[oldDepth];
 					if (frame != null)
-						m_previousValues.put(Value.BASE_ID - newDepth, frame);
+						previousValues.put(Value.BASE_ID - newDepth, frame);
 				}
 			}
 			oldDepth--;
@@ -727,62 +989,72 @@ public class DManager implements DProtocolNotifierIF, SourceLocator
 	}
 
 	/**
-	 * Get function is only supported in players that
-	 * recognize the squelch message.
+	 * Get function is only supported in players that recognize the squelch
+	 * message.
 	 */
-	public boolean isGetSupported()
-	{
+	public boolean isGetSupported() {
 		return m_squelchEnabled;
 	}
 
+
 	/**
-	 * Returns a suspend information on
-	 * why the Player has suspended execution.
+	 * Returns a suspend information on why the Player has suspended execution.
+	 * 
 	 * @return see SuspendReason
 	 */
-	public DSuspendInfo getSuspendInfo()
-	{
-		return m_suspendInfo;
+	public DSuspendInfo getSuspendInfo(int isolateId) {
+		if (m_isolateState.containsKey(isolateId)) {
+			return m_isolateState.get(isolateId).m_suspendInfo;
+		}
+		return null;
+	}
+
+	public ArrayList<SwfInfo> getIsolateSwfList() {
+		ArrayList<SwfInfo> result = new ArrayList<SwfInfo>();
+
+		for (DManagerIsolateState state : m_isolateState.values()) {
+			if (state.m_swfInfo != null) {
+				result.addAll(state.m_swfInfo);
+			}
+		}
+
+		return result;
 	}
 
 	/**
 	 * Event management related stuff
 	 */
-	public int getEventCount()
-	{
-		synchronized (m_event) { return m_event.size(); }
+	public int getEventCount() {
+		synchronized (m_event) {
+			return m_event.size();
+		}
 	}
 
 	/**
 	 * Get an object on which callers can call wait(), in order to wait until
 	 * something happens.
-	 *
+	 * 
 	 * Note: The object will be signalled when EITHER of the following happens:
-	 * (1) An event is added to the event queue;
-	 * (2) The network connection is broken (and thus there will be no more events).
-	 *
+	 * (1) An event is added to the event queue; (2) The network connection is
+	 * broken (and thus there will be no more events).
+	 * 
 	 * @return an object on which the caller can call wait()
 	 */
-	public Object getEventNotifier()
-	{
+	public Object getEventNotifier() {
 		return m_event;
 	}
 
-	public DebugEvent nextEvent()
-	{
+	public DebugEvent nextEvent() {
 		DebugEvent s = null;
-		synchronized (m_event)
-		{
+		synchronized (m_event) {
 			if (m_event.size() > 0)
 				s = m_event.removeFirst();
 		}
 		return s;
 	}
 
-	public synchronized void addEvent(DebugEvent e)
-	{
-		synchronized (m_event)
-		{
+	public synchronized void addEvent(DebugEvent e) {
+		synchronized (m_event) {
 			m_event.add(e);
 			m_event.notifyAll(); // wake up listeners (see getEventNotifier())
 		}
@@ -791,954 +1063,1116 @@ public class DManager implements DProtocolNotifierIF, SourceLocator
 	/**
 	 * Issued when the socket connection to the player is cut
 	 */
-	public void disconnected()
-	{
-		synchronized (m_event)
-		{
+	public void disconnected() {
+		synchronized (m_event) {
 			m_event.notifyAll(); // see getEventNotifier()
 		}
 	}
 
 	/**
-	 * This is the core routine for decoding incoming messages and deciding what should be
-	 * done with them.  We have registered ourself with DProtocol to be notified when any
-	 * incoming messages have been received.
-	 *
-	 * It is important to note that we should not rely on the contents of the message
-	 * since it may be reused after we exit this method.
+	 * This is the core routine for decoding incoming messages and deciding what
+	 * should be done with them. We have registered ourself with DProtocol to be
+	 * notified when any incoming messages have been received.
+	 * 
+	 * It is important to note that we should not rely on the contents of the
+	 * message since it may be reused after we exit this method.
 	 */
-	public void messageArrived(DMessage msg, DProtocol which)
-	{
-		/* at this point we just open up a big switch statement and walk through all possible cases */
+	public void messageArrived(DMessage msg, DProtocol which) {
+		/*
+		 * at this point we just open up a big switch statement and walk through
+		 * all possible cases
+		 */
 		int type = msg.getType();
-//		System.out.println("manager msg = "+DMessage.inTypeName(type));
+		// System.out.println("manager msg = "+DMessage.inTypeName(type));
+		int inIsolateId = getInIsolate() != null ? getInIsolate().getId()
+				: Isolate.DEFAULT_ID;
+		if (inIsolateId != Isolate.DEFAULT_ID) {
+			msg.setTargetIsolate(inIsolateId);
+		}
+		switch (type) {
+		case DMessage.InVersion: {
+			long ver = msg.getDWord();
+			m_playerVersion = (int) ver;
+
+			// Newer players will send another byte, which is the pointer size
+			// that is used by the player (in bytes).
+			int pointerSize;
+			if (msg.getRemaining() >= 1)
+				pointerSize = msg.getByte();
+			else
+				pointerSize = 4;
+			DMessage.setSizeofPtr(pointerSize);
+			break;
+		}
 
-		switch(type)
-		{
-            case DMessage.InVersion:
-            {
-                long ver = msg.getDWord();
-                m_playerVersion = (int)ver;
-
-                // Newer players will send another byte, which is the pointer size
-                // that is used by the player (in bytes).
-                int pointerSize;
-                if (msg.getRemaining() >= 1)
-                	pointerSize = msg.getByte();
-                else
-                	pointerSize = 4;
-            	DMessage.setSizeofPtr(pointerSize);
-                break;
-            }
-
-			case DMessage.InErrorExecLimit:
-			{
-				handleFaultEvent(new RecursionLimitFault());
-				break;
-			}
+		case DMessage.InErrorExecLimit: {
+			handleFaultEvent(new RecursionLimitFault(msg.getTargetIsolate()));
+			break;
+		}
 
-			case DMessage.InErrorWith:
-			{
-				handleFaultEvent(new InvalidWithFault());
-				break;
-			}
+		case DMessage.InErrorWith: {
+			handleFaultEvent(new InvalidWithFault(msg.getTargetIsolate()));
+			break;
+		}
 
-			case DMessage.InErrorProtoLimit:
-			{
-				handleFaultEvent(new ProtoLimitFault());
-				break;
-			}
+		case DMessage.InErrorProtoLimit: {
+			handleFaultEvent(new ProtoLimitFault(msg.getTargetIsolate()));
+			break;
+		}
 
-			case DMessage.InErrorURLOpen:
-			{
-				String url = msg.getString();
-				handleFaultEvent(new InvalidURLFault(url));
-				break;
-			}
+		case DMessage.InErrorURLOpen: {
+//			String url = msg.getString();
+//			handleFaultEvent(new InvalidURLFault(url, msg.getTargetIsolate()));
+			break;
+		}
 
-			case DMessage.InErrorTarget:
-			{
-				String name = msg.getString();
-				handleFaultEvent(new InvalidTargetFault(name));
-				break;
-			}
+		case DMessage.InErrorTarget: {
+//			String name = msg.getString();
+//			handleFaultEvent(new InvalidTargetFault(name, msg.getTargetIsolate()));
+			break;
+		}
 
-			case DMessage.InErrorException:
-			{
-				long offset = msg.getDWord();
-				// As of FP9, the player will also send the "toString()" message
-				// of the exception.  But for backward compatibility with older
-				// players, we won't assume that that is there.
-				String exceptionMessage;
-				boolean willExceptionBeCaught = false;
-				Value thrown = null;
-				if (msg.getRemaining() > 0)
-				{
-					exceptionMessage = msg.getString();
-					if (msg.getRemaining() > 0)
-					{
-						if (msg.getByte() != 0)
-						{
-							willExceptionBeCaught = (msg.getByte() != 0 ? true : false);
-							msg.getPtr();
-							DVariable thrownVar = extractVariable(msg);
-							thrown = thrownVar.getValue();
-						}
+		case DMessage.InErrorException: {
+			long offset = msg.getDWord();
+			// As of FP9, the player will also send the "toString()" message
+			// of the exception. But for backward compatibility with older
+			// players, we won't assume that that is there.
+			String exceptionMessage;
+			boolean willExceptionBeCaught = false;
+			Value thrown = null;
+			if (msg.getRemaining() > 0) {
+				exceptionMessage = msg.getString();
+				if (msg.getRemaining() > 0) {
+					if (msg.getByte() != 0) {
+						willExceptionBeCaught = (msg.getByte() != 0 ? true
+								: false);
+						msg.getPtr();
+						DVariable thrownVar = extractVariable(msg);
+						thrown = thrownVar.getValue();
 					}
 				}
-				else
-				{
-					exceptionMessage = ""; //$NON-NLS-1$
-				}
-				handleFaultEvent(new ExceptionFault(exceptionMessage, willExceptionBeCaught, thrown));
-				break;
+			} else {
+				exceptionMessage = ""; //$NON-NLS-1$
 			}
+			ExceptionFault exceptionFault = new ExceptionFault(
+					exceptionMessage, willExceptionBeCaught, thrown, msg.getTargetIsolate());
+			exceptionFault.isolateId = msg.getTargetIsolate();
+			handleFaultEvent(exceptionFault);
+			break;
+		}
 
-			case DMessage.InErrorStackUnderflow:
-			{
-				long offset = msg.getDWord();
-				handleFaultEvent(new StackUnderFlowFault());
-				break;
-			}
+		case DMessage.InErrorStackUnderflow: {
+//			long offset = msg.getDWord();
+			handleFaultEvent(new StackUnderFlowFault(msg.getTargetIsolate()));
+			break;
+		}
 
-			case DMessage.InErrorZeroDivide:
-			{
-				long offset = msg.getDWord();
-				handleFaultEvent(new DivideByZeroFault());
-				break;
-			}
+		case DMessage.InErrorZeroDivide: {
+//			long offset = msg.getDWord();
+			handleFaultEvent(new DivideByZeroFault(msg.getTargetIsolate()));
+			break;
+		}
 
-			case DMessage.InErrorScriptStuck:
-			{
-				handleFaultEvent(new ScriptTimeoutFault());
-				break;
-			}
+		case DMessage.InErrorScriptStuck: {
+			handleFaultEvent(new ScriptTimeoutFault(msg.getTargetIsolate()));
+			break;
+		}
 
-			case DMessage.InErrorConsole:
-			{
-				String s = msg.getString();
-				handleFaultEvent(new ConsoleErrorFault(s));
-				break;
-			}
+		case DMessage.InErrorConsole: {
+			String s = msg.getString();
+			handleFaultEvent(new ConsoleErrorFault(s, msg.getTargetIsolate()));
+			break;
+		}
 
-		    case DMessage.InTrace:
-			{
-				String text = msg.getString();
-				addEvent(new TraceEvent(text));
-				break;
-			}
+		case DMessage.InTrace: {
+			String text = msg.getString();
+			addEvent(new TraceEvent(text));
+			break;
+		}
 
-			case DMessage.InSquelch:
-			{
-				long state = msg.getDWord();
-				m_squelchEnabled = (state != 0) ? true : false;
-				break;
-			}
+		case DMessage.InSquelch: {
+			long state = msg.getDWord();
+			m_squelchEnabled = (state != 0) ? true : false;
+			break;
+		}
 
-			case DMessage.InParam:
-			{
-				String name = msg.getString();
-				String value = msg.getString();
+		case DMessage.InParam: {
+			String name = msg.getString();
+			String value = msg.getString();
 
-				// here's where we get movie = URL and password which I'm not sure what to do with?
-//				System.out.println(name+"="+value);
-				m_parms.put(name, value);
+			// here's where we get movie = URL and password which I'm not sure
+			// what to do with?
+			// System.out.println(name+"="+value);
+			m_parms.put(name, value);
 
-				// if string is a "movie", then this is a URL
-				if (name.startsWith("movie")) //$NON-NLS-1$
-					m_uri = convertToURI(value);
-				break;
-			}
+			// if string is a "movie", then this is a URL
+			if (name.startsWith("movie")) //$NON-NLS-1$
+				m_uri = convertToURI(value);
+			break;
+		}
 
-			case DMessage.InPlaceObject:
-			{
-				long objId = msg.getPtr();
-				String path = msg.getString();
-//				m_bag.placeObject((int)objId, path);
-				break;
-			}
+		case DMessage.InPlaceObject: {
+			long objId = msg.getPtr();
+			String path = msg.getString();
+			// m_bag.placeObject((int)objId, path);
+			break;
+		}
 
-			case DMessage.InSetProperty:
-			{
-				long objId = msg.getPtr();
-				int item = msg.getWord();
-				String value = msg.getString();
-				break;
-			}
+		case DMessage.InSetProperty: {
+			long objId = msg.getPtr();
+			int item = msg.getWord();
+			String value = msg.getString();
+			break;
+		}
 
-			case DMessage.InNewObject:
-			{
-				long objId = msg.getPtr();
-				break;
-			}
+		case DMessage.InNewObject: {
+			long objId = msg.getPtr();
+			break;
+		}
 
-			case DMessage.InRemoveObject:
-			{
-				long objId = msg.getPtr();
-//				m_bag.removeObject((int)objId);
-				break;
-			}
+		case DMessage.InRemoveObject: {
+			long objId = msg.getPtr();
+			// m_bag.removeObject((int)objId);
+			break;
+		}
 
-			case DMessage.InSetVariable:
-			{
-				long objId = msg.getPtr();
-				String name = msg.getString();
-				int dType = msg.getWord();
-				int flags = (int) msg.getDWord();
-				String value = msg.getString();
-
-//				m_bag.createVariable((int)objId, name, dType, flags, value);
-				break;
-			}
+		case DMessage.InSetVariable: {
+			long objId = msg.getPtr();
+			String name = msg.getString();
+			int dType = msg.getWord();
+			int flags = (int) msg.getDWord();
+			String value = msg.getString();
 
-			case DMessage.InDeleteVariable:
-			{
-				long objId = msg.getPtr();
-				String name = msg.getString();
-//				m_bag.deleteVariable((int)objId, name);
-				break;
-			}
+			// m_bag.createVariable((int)objId, name, dType, flags, value);
+			break;
+		}
 
-			case DMessage.InScript:
-			{
-				int module = (int)msg.getDWord();
-				int bitmap = (int)msg.getDWord();
-				String name = msg.getString(); // in "basepath;package;filename" format
-				String text = msg.getString();
-				int swfIndex = -1;
-
-				/* new in flash player 9: player tells us what swf this is for */
-				if (msg.getRemaining() >= 4)
-					swfIndex = (int)msg.getDWord();
-
-				synchronized (m_source)
-				{
-					// create new source file
-					if (putSource(swfIndex, module, bitmap, name, text))
-					{
-						// have we changed the list since last query
-						if (!m_sourceListModified)
-							addEvent(new FileListModifiedEvent());
-
-						m_sourceListModified = true;  /* current source list is stale */
-					}
-				}
-				break;
+		case DMessage.InDeleteVariable: {
+			long objId = msg.getPtr();
+			String name = msg.getString();
+			// m_bag.deleteVariable((int)objId, name);
+			break;
+		}
+
+		case DMessage.InScript: {
+			int module = (int) msg.getDWord();
+			int bitmap = (int) msg.getDWord();
+			String name = msg.getString(); // in "basepath;package;filename"
+											// format
+			String text = msg.getString();
+			int swfIndex = -1;
+			int isolateIndex = -1;
+
+			/* new in flash player 9: player tells us what swf this is for */
+			if (msg.getRemaining() >= 4)
+				swfIndex = (int) msg.getDWord();
+
+			isolateIndex = msg.getTargetIsolate();
+			getOrCreateIsolate(isolateIndex);
+			if (putSource(swfIndex, module, bitmap, name, text,
+					isolateIndex)) {
+				// have we changed the list since last query
+				if (!m_sourceListModified)
+					addEvent(new FileListModifiedEvent());
+
+				m_sourceListModified = true; 
 			}
+			break;
+		}
 
-			case DMessage.InRemoveScript:
-			{
-				long module = msg.getDWord();
-				synchronized (m_source)
-				{
-					if (removeSource((int)module))
-					{
-						// have we changed the list since last query
-						if (!m_sourceListModified)
-							addEvent(new FileListModifiedEvent());
-
-						m_sourceListModified = true;  /* current source list is stale */
-					}
+		case DMessage.InRemoveScript: {
+			long module = msg.getDWord();
+			int isolateId = msg.getTargetIsolate();
+			Map<Integer, DModule> source = getIsolateState(isolateId).m_source;
+			synchronized (source) {
+				if (removeSource((int) module, isolateId)) {
+					// have we changed the list since last query
+					if (!m_sourceListModified)
+						addEvent(new FileListModifiedEvent());
+
+					m_sourceListModified = true; /* current source list is stale */
 				}
-				break;
 			}
+			break;
+		}
 
-			case DMessage.InAskBreakpoints:
-			{
-				// the player has just loaded a swf and we know the player
-				// has halted, waiting for us to continue.  The only caveat
-				// is that it looks like it still does a number of things in
-				// the background which take a few seconds to complete.
-				if (m_suspendInfo == null)
-					m_suspendInfo = new DSuspendInfo(SuspendReason.ScriptLoaded, 0, 0, 0, 0);
-				break;
+		case DMessage.InAskBreakpoints: {
+			// the player has just loaded a swf and we know the player
+			// has halted, waiting for us to continue. The only caveat
+			// is that it looks like it still does a number of things in
+			// the background which take a few seconds to complete.
+			int targetIsolate = msg.getTargetIsolate();
+			DSuspendInfo iSusInfo = getIsolateState(targetIsolate).m_suspendInfo;
+			if (iSusInfo == null) {
+				iSusInfo = new DSuspendInfo(SuspendReason.ScriptLoaded, 0,
+						0, 0, 0);
 			}
+			break;
+		}
 
-			case DMessage.InBreakAt:
-			{
-				long bp = msg.getDWord();
-				long id = msg.getPtr();
-				String stack = msg.getString();
-//				System.out.println(msg.getInTypeName()+",bp="+(bp&0xffff)+":"+(bp>>16)+",id="+id+",stack=\n"+stack);
-
-				//System.out.println("InBreakAt");
-
-				int module = DLocation.decodeFile(bp);
-				int  line = DLocation.decodeLine (bp);
-				addEvent(new BreakEvent(module, line));
-				break;
+		case DMessage.InBreakAt: {
+			long bp = 0, wideLine = 0, wideModule = 0;
+			if (!m_wideLines) {
+				bp = msg.getDWord();
 			}
-
-			case DMessage.InContinue:
-			{
-				/* we are running again so trash all our variable contents */
-				continuing();
-				break;
+			else {
+				wideModule = msg.getDWord();
+				wideLine = msg.getDWord();
 			}
-
-			case DMessage.InSetLocalVariables:
-			{
-				long objId = msg.getPtr();
-//				m_bag.markObjectLocal((int)objId, true);
-				break;
+			long id = msg.getPtr();
+			String stack = msg.getString();
+			int targetIsolate = msg.getTargetIsolate();
+
+			int module = DLocation.decodeFile(bp);
+			int line = DLocation.decodeLine(bp);
+			if (m_wideLines) {
+				module = (int)wideModule;
+				line = (int)wideLine;
 			}
+			addEvent(new BreakEvent(module, line, targetIsolate));
+			break;
+		}
 
-			case DMessage.InSetBreakpoint:
-			{
-				long count = msg.getDWord();
-				while(count-- > 0)
-				{
-					long bp = msg.getDWord();
+		case DMessage.InContinue: {
+			/* we are running again so trash all our variable contents */
+			continuing(msg.getTargetIsolate());
+			break;
+		}
 
-					int fileId = DLocation.decodeFile(bp);
-					int line = DLocation.decodeLine(bp);
+		case DMessage.InSetLocalVariables: {
+//			long objId = msg.getPtr();
+			// m_bag.markObjectLocal((int)objId, true);
+			break;
+		}
 
-					DModule file = getSource(fileId);
-					DLocation l = new DLocation(file, line);
+		case DMessage.InSetBreakpoint: {
+			long count = msg.getDWord();
+			int targetIsolate = msg.getTargetIsolate();
+			while (count-- > 0) {
+				long bp = 0, moduleNumber = 0, lineNumber = 0;
+				if (!m_wideLines) {
+					bp = msg.getDWord();
+				}
+				else {
+					moduleNumber = msg.getDWord();
+					lineNumber = msg.getDWord();
+				}
 
-					if (file != null)
-						addBreakpoint((int)bp, l);
+				int fileId = DLocation.decodeFile(bp);
+				int line = DLocation.decodeLine(bp);
+				if (m_wideLines) {
+					fileId = (int)moduleNumber;
+					line = (int)lineNumber;
 				}
-				break;
-			}
 
-			case DMessage.InNumScript:
-			{
-				/* lets us know how many scripts there are */
-				int num = (int)msg.getDWord();
-				DSwfInfo swf;
+				DModule file = null;
+				file = getSource(fileId, targetIsolate);
 
-				/*
-				 * New as of flash player 9: another dword indicating which swf this is for.
-				 * That means we don't have to guess whether this is for an old SWF
-				 * which has just had some more modules loaded, or for a new SWF!
-				 */
-				if (msg.getRemaining() >= 4)
-				{
-					int swfIndex = (int) msg.getDWord();
-					swf = getOrCreateSwfInfo(swfIndex);
-					m_lastSwfInfo = swf;
-				}
-				else
-				{
-					/* This is not flash player 9 (or it is an early build of fp9).
-					 *
-					 * We use this message as a trigger that a new swf has been loaded, so make sure
-					 * we are ready to accept the scripts.
-					 */
-					swf = getActiveSwfInfo();
+				DLocation l = new DLocation(file, line, targetIsolate);
+
+				if (file != null) {
+					addBreakpoint((int) bp, l, targetIsolate);
 				}
+			}
+			break;
+		}
 
-				// It is NOT an error for the player to have sent us a new,
-				// different sourceExpectedCount from whatever we had before!
-				// In fact, this happens all the time, whenever a SWF has more
-				// than one ABC.
-				swf.setSourceExpectedCount(num);
-				break;
+		case DMessage.InNumScript: {
+			/* lets us know how many scripts there are */
+			int num = (int) msg.getDWord();
+			int targetIsolate = msg.getTargetIsolate();
+			DSwfInfo swf;
+
+			/*
+			 * New as of flash player 9: another dword indicating which swf this
+			 * is for. That means we don't have to guess whether this is for an
+			 * old SWF which has just had some more modules loaded, or for a new
+			 * SWF!
+			 */
+			if (msg.getRemaining() >= 4) {
+				int swfIndex = (int) msg.getDWord();
+				swf = getOrCreateSwfInfo(swfIndex, targetIsolate);
+				getIsolateState(targetIsolate).m_lastSwfInfo = swf;
+			} else {
+				/*
+				 * This is not flash player 9 (or it is an early build of fp9).
+				 * 
+				 * We use this message as a trigger that a new swf has been
+				 * loaded, so make sure we are ready to accept the scripts.
+				 */
+				swf = getActiveSwfInfo(targetIsolate);
 			}
 
-			case DMessage.InRemoveBreakpoint:
-			{
-				long count = msg.getDWord();
-				while(count-- > 0)
-				{
-					long bp = msg.getDWord();
-					removeBreakpoint((int)bp);
-				}
-				break;
+			// It is NOT an error for the player to have sent us a new,
+			// different sourceExpectedCount from whatever we had before!
+			// In fact, this happens all the time, whenever a SWF has more
+			// than one ABC.
+			swf.setSourceExpectedCount(num);
+			break;
+		}
 
+		case DMessage.InRemoveBreakpoint: {
+			long count = msg.getDWord();
+			int isolateId = msg.getTargetIsolate();
+			while (count-- > 0) {
+				long bp = msg.getDWord();
+				removeBreakpoint((int) bp, isolateId);
 			}
+			break;
 
-			case DMessage.InBreakAtExt:
-			{
-				long bp = msg.getDWord();
-				long num = msg.getDWord();
-
-//				System.out.println(msg.getInTypeName()+",bp="+(bp&0xffff)+":"+(bp>>16));
-				/* we have stack info to store away */
-				clearFrames();  // just in case
-				int depth = 0;
-				while(num-- > 0)
-				{
-					long bpi = msg.getDWord();
-					long id = msg.getPtr();
-					String stack = msg.getString();
-					int module = DLocation.decodeFile(bpi);
-					int  line = DLocation.decodeLine (bpi);
-					DModule m = getSource(module);
-					DStackContext c = new DStackContext( module, line, m, id, stack, depth);
-					// If addFrame() returns false, that means it chose to ignore this
-					// frame, so we do NOT want to increment our depth for the next
-					// time through the loop.  If it returns true, then we do want to.
-					if (addFrame(c))
-						++depth;
-//					System.out.println("   this="+id+",@"+(bpi&0xffff)+":"+(bpi>>16)+",stack="+stack);
-				}
-				mapOldFramesToNew();
-				break;
+		}
 
+		case DMessage.InBreakAtExt: {
+			long bp = 0, wideLine = 0, wideModule = 0;
+			if (!m_wideLines) {
+				bp = msg.getDWord();
 			}
-
-			case DMessage.InFrame:
-			{
-				// For InFrame the first element is really our frame id
-				DValue frame = null;
-				DVariable child = null;
-				ArrayList<DVariable> v = new ArrayList<DVariable>();
-				ArrayList<DVariable> registers = new ArrayList<DVariable>();
-
-				int depth = (int)msg.getDWord(); // depth of frame
-
-				// make sure we have a valid depth
-				if (depth > -1)
-				{
-					// first thing is number of registers
-					int num = (int)msg.getDWord();
-					for(int i=0; i<num; i++)
-						registers.add( extractRegister(msg, i+1) );
+			else {
+				wideModule = msg.getDWord();
+				wideLine = msg.getDWord();
+			}
+			long num = msg.getDWord();
+
+			int targetIsolate = msg.getTargetIsolate();
+			// System.out.println(msg.getInTypeName()+",bp="+(bp&0xffff)+":"+(bp>>16));
+			/* we have stack info to store away */
+			clearFrames(targetIsolate); // just in case
+			int depth = 0;
+
+			while (num-- > 0) {
+				long bpi = 0, wideLinei= 0, wideModulei = 0;
+				if (!m_wideLines) {
+					bpi = msg.getDWord();
+				}
+				else {
+					wideModulei = msg.getDWord();
+					wideLinei = msg.getDWord();
 				}
+				long id = msg.getPtr();
+				String stack = msg.getString();
+				int module = DLocation.decodeFile(bpi);
+				int line = DLocation.decodeLine(bpi);
+				if (m_wideLines) {
+					module = (int)wideModulei;
+					line = (int)wideLinei;
+				}
+				DModule m = null;
+				m = getSource(module, targetIsolate);
+				DStackContext c = new DStackContext(module, line, m, id, stack,
+						depth, targetIsolate);
+				// If addFrame() returns false, that means it chose to ignore
+				// this
+				// frame, so we do NOT want to increment our depth for the next
+				// time through the loop. If it returns true, then we do want
+				// to.
+				if (addFrame(c, targetIsolate))
+					++depth;
+				// System.out.println("   this="+id+",@"+(bpi&0xffff)+":"+(bpi>>16)+",stack="+stack);
+			}
+			mapOldFramesToNew(targetIsolate);
+			if (targetIsolate != Isolate.DEFAULT_ID) {
+				// ask for isolate id if it is present
+				appendIsolateInfoToFrame(targetIsolate);
 
-				int currentArg = -1;
-				boolean gettingScopeChain = false;
+			}
+			break;
+
+		}
 
-				// then our frame itself
-				while(msg.getRemaining() > 0)
-				{
-					long frameId = msg.getPtr();
+		case DMessage.InFrame: {
+			// For InFrame the first element is really our frame id
+			DValue frame = null;
+			DVariable child = null;
+			ArrayList<DVariable> v = new ArrayList<DVariable>();
+			ArrayList<DVariable> registers = new ArrayList<DVariable>();
+			int targetIsolate = msg.getTargetIsolate();
+			int depth = (int) msg.getDWord(); // depth of frame
+
+			// make sure we have a valid depth
+			if (depth > -1) {
+				// first thing is number of registers
+				int num = (int) msg.getDWord();
+				for (int i = 0; i < num; i++)
+					registers.add(extractRegister(msg, i + 1));
+			}
 
-					if (frame == null)
-					{
-						frame = getOrCreateValue(frameId);
-						extractVariable(msg);  // put the rest of the info in the trash
+			int currentArg = -1;
+			boolean gettingScopeChain = false;
+
+			// then our frame itself
+			while (msg.getRemaining() > 0) {
+				long frameId = msg.getPtr();
+
+				if (frame == null) {
+					frame = getOrCreateValue(frameId, targetIsolate);
+					extractVariable(msg); // put the rest of the info in the
+											// trash
+				} else {
+					child = extractVariable(msg);
+					if (currentArg == -1
+							&& child.getName().equals(ARGUMENTS_MARKER)) {
+						currentArg = 0;
+						gettingScopeChain = false;
+					} else if (child.getName().equals(SCOPE_CHAIN_MARKER)) {
+						currentArg = -1;
+						gettingScopeChain = true;
+					} else if (currentArg >= 0) {
+						// work around a compiler bug: If the variable's name is
+						// "undefined",
+						// then change its name to "_argN", where "N" is the
+						// argument index,
+						// e.g. _arg1, _arg2, etc.
+						++currentArg;
+						if (child.getName().equals("undefined")) //$NON-NLS-1$
+							child.setName("_arg" + currentArg); //$NON-NLS-1$
 					}
-					else
-					{
-						child = extractVariable(msg);
-						if (currentArg == -1 && child.getName().equals(ARGUMENTS_MARKER))
-						{
-							currentArg = 0;
-							gettingScopeChain = false;
-						}
-						else if (child.getName().equals(SCOPE_CHAIN_MARKER))
-						{
-							currentArg = -1;
-							gettingScopeChain = true;
-						}
-						else if (currentArg >= 0)
-						{
-							// work around a compiler bug: If the variable's name is "undefined",
-							// then change its name to "_argN", where "N" is the argument index,
-							// e.g. _arg1, _arg2, etc.
-							++currentArg;
-							if (child.getName().equals("undefined")) //$NON-NLS-1$
-								child.setName("_arg" + currentArg); //$NON-NLS-1$
-						}
 
-						// All args and locals get added as "children" of
-						// the frame; but scope chain entries do not.
-						if (!gettingScopeChain)
-							addVariableMember(frameId, child);
+					// All args and locals get added as "children" of
+					// the frame; but scope chain entries do not.
+					if (!gettingScopeChain)
+						addVariableMember(frameId, child, targetIsolate);
 
-						// Everything gets added to the ordered list of
-						// variables that came in.
-						v.add(child);
-					}
+					// Everything gets added to the ordered list of
+					// variables that came in.
+					v.add(child);
 				}
+			}
 
-				// let's transfer our newly gained knowledge into the stack context
-				if (depth == 0)
-					populateRootNode(frame, v);
-				else
-					populateFrame(depth, v);
+			// let's transfer our newly gained knowledge into the stack context
+			if (depth == 0)
+				populateRootNode(frame, v, targetIsolate);
+			else
+				populateFrame(depth, v, targetIsolate);
 
-				break;
-			}
+			break;
+		}
 
-			case DMessage.InOption:
-			{
-				String s = msg.getString();
-				String v = msg.getString();
-				m_options.put(s, v);
-				break;
-			}
+		case DMessage.InOption: {
+			String s = msg.getString();
+			String v = msg.getString();
+			m_options.put(s, v);
+			break;
+		}
 
-			case DMessage.InGetVariable:
-			{
-				// For InGetVariable the first element is the original entity we requested
-				DValue parent = null;
-				DVariable child = null;
-				String definingClass = null;
-				int level = 0;
-				int highestLevelWithMembers = -1;
-				List<String> classes = new ArrayList<String>();
-
-				while(msg.getRemaining() > 0)
-				{
-					long parentId = msg.getPtr();
-
-					// build or get parent node
-					if (parent == null)
-					{
-						String name = msg.getString();
-
-						// pull the contents of the node which normally are disposed of except if we did a 0,name call
-						m_lastInGetVariable = extractVariable(msg, name);
-
-						parent = getOrCreateValue(parentId);
-					}
-					else
-					{
-						// extract the child and add it to the parent.
-						child = extractVariable(msg);
-						if (showMember(child)) {
-							if (child.isAttributeSet(VariableAttribute.IS_DYNAMIC)) {
-								// Dynamic attributes always come in marked as a member of
-								// class "Object"; but to the user, it makes more sense to
-								// consider them as members of the topmost class.
-								if (classes.size() > 0) {
-									child.setDefiningClass(0, classes.get(0));
-									highestLevelWithMembers = Math.max(highestLevelWithMembers, 0);
-								}
-							} else {
-								child.setDefiningClass(level, definingClass);
-								if (definingClass != null) {
-									highestLevelWithMembers = Math.max(highestLevelWithMembers, level);
-								}
+		case DMessage.InGetVariable: {
+			// For InGetVariable the first element is the original entity we
+			// requested
+			DValue parent = null;
+			DVariable child = null;
+			String definingClass = null;
+			int level = 0;
+			int targetIsolate = msg.getTargetIsolate();
+			int highestLevelWithMembers = -1;
+			List<String> classes = new ArrayList<String>();
+
+			while (msg.getRemaining() > 0) {
+				long parentId = msg.getPtr();
+
+				// build or get parent node
+				if (parent == null) {
+					String name = msg.getString();
+
+					// pull the contents of the node which normally are disposed
+					// of except if we did a 0,name call
+					getIsolateState(targetIsolate).m_lastInGetVariable = extractVariable(msg, name); 
+
+					parent = getOrCreateValue(parentId, targetIsolate);
+				} else {
+					// extract the child and add it to the parent.
+					child = extractVariable(msg);
+					if (showMember(child)) {
+						if (child.isAttributeSet(VariableAttribute.IS_DYNAMIC)) {
+							// Dynamic attributes always come in marked as a
+							// member of
+							// class "Object"; but to the user, it makes more
+							// sense to
+							// consider them as members of the topmost class.
+							if (classes.size() > 0) {
+								child.setDefiningClass(0, classes.get(0));
+								highestLevelWithMembers = Math.max(
+										highestLevelWithMembers, 0);
 							}
-							addVariableMember(parent.getId(), child);
 						} else {
-							if (isTraits(child)) {
-								definingClass = child.getQualifiedName();
-								level = classes.size();
-
-								// If the traits name end with "$", then it represents a class object --
-								// in other words, the variables inside it are static variables of that
-								// class.  In that case, we need to juggle the information.  For example,
-								// if we are told that a variable is a member of "MyClass$", we actually
-								// store it into the information for "MyClass".
-								if (definingClass.endsWith("$")) { //$NON-NLS-1$
-									String classWithoutDollar = definingClass.substring(0, definingClass.length() - 1);
-									int indexOfClass = classes.indexOf(classWithoutDollar);
-									if (indexOfClass != -1) {
-										level = indexOfClass;
-										definingClass = classWithoutDollar;
-									}
+							child.setDefiningClass(level, definingClass);
+							if (definingClass != null) {
+								highestLevelWithMembers = Math.max(
+										highestLevelWithMembers, level);
+							}
+						}
+						addVariableMember(parent.getId(), child, targetIsolate);
+					} else {
+						if (isTraits(child)) {
+							definingClass = child.getQualifiedName();
+							level = classes.size();
+
+							// If the traits name end with "$", then it
+							// represents a class object --
+							// in other words, the variables inside it are
+							// static variables of that
+							// class. In that case, we need to juggle the
+							// information. For example,
+							// if we are told that a variable is a member of
+							// "MyClass$", we actually
+							// store it into the information for "MyClass".
+							if (definingClass.endsWith("$")) { //$NON-NLS-1$
+								String classWithoutDollar = definingClass
+										.substring(0,
+												definingClass.length() - 1);
+								int indexOfClass = classes
+										.indexOf(classWithoutDollar);
+								if (indexOfClass != -1) {
+									level = indexOfClass;
+									definingClass = classWithoutDollar;
 								}
+							}
 
-								// It wasn't static -- so, add this class to the end of the list of classes
-								if (level == classes.size()) {
-									classes.add(definingClass);
-								}
+							// It wasn't static -- so, add this class to the end
+							// of the list of classes
+							if (level == classes.size()) {
+								classes.add(definingClass);
 							}
 						}
 					}
 				}
+			}
 
-				if (parent != null && parent.getClassHierarchy(true) == null) {
-					parent.setClassHierarchy(classes.toArray(new String[classes.size()]), highestLevelWithMembers+1);
-				}
-
-				break;
+			if (parent != null && parent.getClassHierarchy(true) == null) {
+				parent.setClassHierarchy(
+						classes.toArray(new String[classes.size()]),
+						highestLevelWithMembers + 1);
 			}
 
-			case DMessage.InWatch:		// for AS2; sends 16-bit ID field
-			case DMessage.InWatch2:		// for AS3; sends 32-bit ID field
-			{
-				// This message is sent whenever a watchpoint is added
-				// modified or removed.
-				//
-				// For an addition, flags will be non-zero and
-				// success will be true.
-				//
-				// For a modification flags  will be non-zero.
-				// and oldFlags will be non-zero and success
-				// will be true.  Additionally oldFlags will not
-				// be equal to flags.
-				//
-				// For a removal flags will be zero.  oldFlags
-				// will be non-zero.
-				//
-				// flags identifies the type of watchpoint added,
-				// see WatchKind.
-				//
-				// success indicates whether the operation was successful
-				//
-				// request.   It will be associated with the watchpoint.
-				int success = msg.getWord();
-				int oldFlags = msg.getWord();
-				int oldTag = msg.getWord();
-				int flags = msg.getWord();
-				int tag = msg.getWord();
-				// for AS2, the ID came in above as a Word.  For AS3, the above value is
-				// bogus, and it has been sent again as a DWord.
-				long id = ((type == DMessage.InWatch2) ? msg.getPtr() : msg.getWord());
-				String name = msg.getString();
-
-				if (success != 0)
-				{
-					if (flags == 0)
-					{
-						removeWatchpoint(oldTag);
-					}
-					else
-					{
-						// modification or addition is the same to us
-						// a new watch is created and added into the table
-						// while any old entry if it exists is removed.
-						removeWatchpoint(oldTag);
-						DWatch w = new DWatch(id, name, flags, tag);
-						addWatchpoint(w);
-					}
+			break;
+		}
+
+		case DMessage.InWatch: // for AS2; sends 16-bit ID field
+		case DMessage.InWatch2: // for AS3; sends 32-bit ID field
+		{
+			// This message is sent whenever a watchpoint is added
+			// modified or removed.
+			//
+			// For an addition, flags will be non-zero and
+			// success will be true.
+			//
+			// For a modification flags will be non-zero.
+			// and oldFlags will be non-zero and success
+			// will be true. Additionally oldFlags will not
+			// be equal to flags.
+			//
+			// For a removal flags will be zero. oldFlags
+			// will be non-zero.
+			//
+			// flags identifies the type of watchpoint added,
+			// see WatchKind.
+			//
+			// success indicates whether the operation was successful
+			//
+			// request. It will be associated with the watchpoint.
+			int success = msg.getWord();
+			int oldFlags = msg.getWord();
+			int oldTag = msg.getWord();
+			int flags = msg.getWord();
+			int tag = msg.getWord();
+			// for AS2, the ID came in above as a Word. For AS3, the above value
+			// is
+			// bogus, and it has been sent again as a DWord.
+			long id = ((type == DMessage.InWatch2) ? msg.getPtr() : msg
+					.getWord());
+			String name = msg.getString();
+			int targetIsolate = msg.getTargetIsolate();
+
+			if (success != 0) {
+				if (flags == 0) {
+					removeWatchpoint(oldTag, targetIsolate);
+				} else {
+					// modification or addition is the same to us
+					// a new watch is created and added into the table
+					// while any old entry if it exists is removed.
+					removeWatchpoint(oldTag, targetIsolate);
+					DWatch w = new DWatch(id, name, flags, tag, targetIsolate);
+					addWatchpoint(w, targetIsolate);
 				}
-				break;
 			}
+			break;
+		}
 
-            case DMessage.InGetSwf:
-            {
-				// we only house the swf temporarily, PlayerSession then
-				// pieces it back into swfinfo record.  Also, we don't
-				// send any extra data in the message so that we need not
-				// copy the bytes.
-				m_swf = msg.getData();
-                break;
-            }
-
-            case DMessage.InGetSwd:
-            {
-				// we only house the swd temporarily, PlayerSession then
-				// pieces it back into swfinfo record.
-				m_swd = msg.getData();
-                break;
-            }
-
-            case DMessage.InBreakReason:
-            {
-				// the id map 1-1 with out SuspendReason interface constants
-                int suspendReason = msg.getWord();
-				int suspendPlayer = msg.getWord();  // item index of player
-				int breakOffset = (int)msg.getDWord();  // current script offset
-				int prevBreakOffset = (int)msg.getDWord();  // prev script offset
-				int nextBreakOffset = (int)msg.getDWord();  // next script offset
-				m_suspendInfo = new DSuspendInfo(suspendReason, suspendPlayer, breakOffset, prevBreakOffset, nextBreakOffset);
-
-				// augment the current frame with this information.  It
-				// should work ok since we only get this message after a
-				// InBreakAtExt message
-				try
-				{
-					DStackContext c = getFrame(0);
-					c.setOffset(breakOffset);
-					c.setSwfIndex(suspendPlayer);
-				}
-				catch(Exception e)
-				{
-					if (Trace.error)
-					{
-						Trace.trace("Oh my god, gag me with a spoon...getFrame(0) call failed"); //$NON-NLS-1$
-						e.printStackTrace();
-					}
-				}
-                break;
-            }
+		case DMessage.InGetSwf: {
+			// we only house the swf temporarily, PlayerSession then
+			// pieces it back into swfinfo record. Also, we don't
+			// send any extra data in the message so that we need not
+			// copy the bytes.
+			m_swf = msg.getData();
+			break;
+		}
 
-			// obtain raw action script byte codes
-            case DMessage.InGetActions:
-            {
-				int item = msg.getWord();
-				int rsvd = msg.getWord();
-				int at = (int)msg.getDWord();
-				int len = (int)msg.getDWord();
-				int i = 0;
+		case DMessage.InGetSwd: {
+			// we only house the swd temporarily, PlayerSession then
+			// pieces it back into swfinfo record.
+			m_swd = msg.getData();
+			break;
+		}
 
-				m_actions = (len <= 0) ? null : new byte[len];
-				while(len-- > 0)
-					m_actions[i++] = (byte)msg.getByte();
+		case DMessage.InBreakReason: {
+			// the id map 1-1 with out SuspendReason interface constants
+			int suspendReason = msg.getWord();
+			int suspendPlayer = msg.getWord(); // item index of player
+			int breakOffset = (int) msg.getDWord(); // current script offset
+			int prevBreakOffset = (int) msg.getDWord(); // prev script offset
+			int nextBreakOffset = (int) msg.getDWord(); // next script offset
+			int targetIsolate = msg.getTargetIsolate();
+
+			getIsolateState(targetIsolate).m_suspendInfo = new DSuspendInfo(
+					suspendReason, suspendPlayer, breakOffset,
+					prevBreakOffset, nextBreakOffset);
+
+			// augment the current frame with this information. It
+			// should work ok since we only get this message after a
+			// InBreakAtExt message
+			try {
+				DSt

<TRUNCATED>

[07/15] FLEX-34291: Merge the donated FDB with the current one.

Posted by ft...@apache.org.
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/fdb_ru.properties
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/fdb_ru.properties b/modules/debugger/src/java/flex/tools/debugger/cli/fdb_ru.properties
index bb70e4c..1dd90ae 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/fdb_ru.properties
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/fdb_ru.properties
@@ -1,21 +1,18 @@
-################################################################################
-##
-##  Licensed to the Apache Software Foundation (ASF) under one or more
-##  contributor license agreements.  See the NOTICE file distributed with
-##  this work for additional information regarding copyright ownership.
-##  The ASF licenses this file to You under the Apache License, Version 2.0
-##  (the "License"); you may not use this file except in compliance with
-##  the License.  You may obtain a copy of the License at
-##
-##      http://www.apache.org/licenses/LICENSE-2.0
-##
-##  Unless required by applicable law or agreed to in writing, software
-##  distributed under the License is distributed on an "AS IS" BASIS,
-##  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-##  See the License for the specific language governing permissions and
-##  limitations under the License.
-##
-################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
 
 # Translation:
 #
@@ -28,7 +25,7 @@
 
 defaultBuildName=\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430
 about=Apache fdb (\u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a Flash Player) [\u0441\u0431\u043e\u0440\u043a\u0430 ${build}]
-copyright=Copyright 2014 The Apache Software Foundation.
+copyright=Copyright 2013 The Apache Software Foundation. All rights reserved.
 noResponseException=\u041f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043e\u0442\u0432\u0435\u0442\u0438\u043b \u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c; \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u0440\u0435\u0440\u0432\u0430\u043d\u043e.
 notSuspendedException=\u041a\u043e\u043c\u0430\u043d\u0434\u0443 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u0435\u043b\u044f
 illegalStateException=\u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0439 \u0431\u0435\u0437 \u0441\u0435\u0430\u043d\u0441\u0430.

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/fdb_sv.properties
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/fdb_sv.properties b/modules/debugger/src/java/flex/tools/debugger/cli/fdb_sv.properties
index 94b1306..539a5e7 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/fdb_sv.properties
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/fdb_sv.properties
@@ -1,21 +1,18 @@
-################################################################################
-##
-##  Licensed to the Apache Software Foundation (ASF) under one or more
-##  contributor license agreements.  See the NOTICE file distributed with
-##  this work for additional information regarding copyright ownership.
-##  The ASF licenses this file to You under the Apache License, Version 2.0
-##  (the "License"); you may not use this file except in compliance with
-##  the License.  You may obtain a copy of the License at
-##
-##      http://www.apache.org/licenses/LICENSE-2.0
-##
-##  Unless required by applicable law or agreed to in writing, software
-##  distributed under the License is distributed on an "AS IS" BASIS,
-##  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-##  See the License for the specific language governing permissions and
-##  limitations under the License.
-##
-################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
 
 # Translation:
 #
@@ -28,7 +25,7 @@
 
 defaultBuildName=utveckling
 about=Apache fdb (Flash Player Debugger) [build ${build}]
-copyright=Copyright 2014 The Apache Software Foundation.
+copyright=Copyright 2013 The Apache Software Foundation. Med ensamr\u00e4tt.
 noResponseException=Spelaren svarade inte p\u00e5 kommandot som f\u00f6rv\u00e4ntat. Kommandot har avbrutits.
 notSuspendedException=Du kan inte ange kommandon n\u00e4r spelaren k\u00f6rs.
 illegalStateException=Kommandot \u00e4r inte giltigt utan session.

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/fdb_zh_CN.properties
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/fdb_zh_CN.properties b/modules/debugger/src/java/flex/tools/debugger/cli/fdb_zh_CN.properties
index 3e75053..8e4658c 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/fdb_zh_CN.properties
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/fdb_zh_CN.properties
@@ -1,21 +1,18 @@
-################################################################################
-##
-##  Licensed to the Apache Software Foundation (ASF) under one or more
-##  contributor license agreements.  See the NOTICE file distributed with
-##  this work for additional information regarding copyright ownership.
-##  The ASF licenses this file to You under the Apache License, Version 2.0
-##  (the "License"); you may not use this file except in compliance with
-##  the License.  You may obtain a copy of the License at
-##
-##      http://www.apache.org/licenses/LICENSE-2.0
-##
-##  Unless required by applicable law or agreed to in writing, software
-##  distributed under the License is distributed on an "AS IS" BASIS,
-##  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-##  See the License for the specific language governing permissions and
-##  limitations under the License.
-##
-################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
 
 # Translation:
 #
@@ -28,7 +25,7 @@
 
 defaultBuildName=\u5f00\u53d1
 about=Apache fdb\uff08Flash Player \u8c03\u8bd5\u5668\uff09[\u5185\u90e8\u7248\u672c ${build}]
-copyright=Copyright 2014 The Apache Software Foundation.
+copyright=Copyright 2013 The Apache Software Foundation. All rights reserved.
 noResponseException=Player \u672a\u6309\u9884\u671f\u65b9\u5f0f\u54cd\u5e94\u547d\u4ee4\uff1b\u547d\u4ee4\u5df2\u5f02\u5e38\u7ec8\u6b62\u3002
 notSuspendedException=Player \u5904\u4e8e\u8fd0\u884c\u72b6\u6001\u65f6\u65e0\u6cd5\u53d1\u51fa\u547d\u4ee4
 illegalStateException=\u5982\u679c\u6ca1\u6709\u4f1a\u8bdd\uff0c\u5219\u547d\u4ee4\u65e0\u6548\u3002
@@ -47,6 +44,11 @@ unknownBreakpointLocation=<\u672a\u77e5>
 unknownFilename=<\u672a\u77e5>
 inFunctionAt=\u5728\u5904\u4e8e\u4ee5\u4e0b\u4f4d\u7f6e\u7684 ${functionName}() \u4e2d 
 inSwf=\u5728 ${swf} \u4e2d
+inWorker=Worker ${worker}
+workerRunning=\u6b63\u5728\u8fd0\u884c
+workerSuspended=\u5df2\u6682\u505c
+workerSelected=(\u6d3b\u52a8)
+mainThread=\u4e3b\u7ebf\u7a0b
 nonRestorable=\uff1b\u65e0\u6cd5\u4ece\u4ee5\u524d\u7684\u4f1a\u8bdd\u590d\u539f
 sourceDirectoriesSearched=\u5df2\u641c\u7d22\u7684\u6e90\u76ee\u5f55:
 attemptingToSuspend=\u6b63\u5728\u5c1d\u8bd5\u6682\u6302 Player \u6267\u884c...
@@ -80,6 +82,8 @@ breakpointAmbiguous=\\uFF08\u6709\u6b67\u4e49\uff09
 breakpointNoCode=\\uFF08\u6307\u5b9a\u7684\u884c\u4e2d\u6ca1\u6709\u53ef\u6267\u884c\u4ee3\u7801\uff09
 sessionTerminated=Player \u4f1a\u8bdd\u5df2\u7ec8\u6b62
 additionalCodeLoaded=\u5df2\u4ece SWF \u6216\u5e27\u52a0\u8f7d\u5176\u5b83 ActionScript \u4ee3\u7801\u3002\n\u8981\u67e5\u770b\u6240\u6709\u5f53\u524d\u52a0\u8f7d\u7684\u6587\u4ef6\uff0c\u8bf7\u952e\u5165\u201cinfo files\u201d\u3002
+workerChanged=\u6d3b\u52a8\u7684 Worker \u5df2\u66f4\u6539\u4e3a Worker
+workerNotFound=\u627e\u4e0d\u5230\u5177\u6709\u6b64 ID \u7684 Worker
 setAdditionalBreakpoints=\u6839\u636e\u9700\u8981\u8bbe\u7f6e\u5176\u5b83\u65ad\u70b9\uff0c\u7136\u540e\u952e\u5165\u201ccontinue\u201d\u3002
 fixBreakpoints=\u4fee\u6b63\u6216\u5220\u9664\u9519\u8bef\u7684\u65ad\u70b9\uff0c\u7136\u540e\u952e\u5165\u201ccontinue\u201d\u3002
 executionHalted=\u6267\u884c\u5df2\u7ec8\u6b62
@@ -88,6 +92,8 @@ haltedInFunction=${reasonForHalting}\uff0c${fileAndLine} \u4e2d\u7684 ${function
 haltedInFile=${reasonForHalting}\uff0c${fileAndLine}
 linePrefixWhenDisplayingConsoleError=[\u9519\u8bef]
 linePrefixWhenDisplayingFault=[\u6545\u969c]
+linePrefixWhenWorkerCreated=[WorkerCreate]
+linePrefixWhenWorkerExit=[WorkerDestroy]
 linePrefixWhenSwfLoaded=[SWF]
 linePrefixWhenSwfUnloaded=[UnloadSWF]
 informationAboutFault=\uff0c\u4fe1\u606f=
@@ -254,3 +260,4 @@ key34=Player \u5f53\u524d\u5bf9\u4efb\u4f55\u64cd\u4f5c\u90fd\u672a\u6682\u6302\
 key35=\u5728\u201c${swfName}\u201d\u4e2d
 atAddress=\u4f4d\u4e8e ${address}
 haltedDueToFault=\u56e0\u4e3a ${fault}
+noWorkersRunning=\u6ca1\u6709\u6b63\u5728\u8fd0\u884c\u7684 Worker\u3002

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/fdb_zh_TW.properties
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/fdb_zh_TW.properties b/modules/debugger/src/java/flex/tools/debugger/cli/fdb_zh_TW.properties
index 758e804..452663f 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/fdb_zh_TW.properties
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/fdb_zh_TW.properties
@@ -1,21 +1,18 @@
-################################################################################
-##
-##  Licensed to the Apache Software Foundation (ASF) under one or more
-##  contributor license agreements.  See the NOTICE file distributed with
-##  this work for additional information regarding copyright ownership.
-##  The ASF licenses this file to You under the Apache License, Version 2.0
-##  (the "License"); you may not use this file except in compliance with
-##  the License.  You may obtain a copy of the License at
-##
-##      http://www.apache.org/licenses/LICENSE-2.0
-##
-##  Unless required by applicable law or agreed to in writing, software
-##  distributed under the License is distributed on an "AS IS" BASIS,
-##  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-##  See the License for the specific language governing permissions and
-##  limitations under the License.
-##
-################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
 
 # Translation:
 #
@@ -28,7 +25,7 @@
 
 defaultBuildName=\u958b\u767c
 about=Apache fdb (Flash Player \u9664\u932f\u7a0b\u5f0f) [\u7d44\u5efa ${build}]
-copyright=Copyright 2014 The Apache Software Foundation.
+copyright=Copyright 2013 The Apache Software Foundation. All rights reserved.
 noResponseException=Player \u672a\u5982\u9810\u671f\u56de\u61c9\u6307\u4ee4\uff1b\u6307\u4ee4\u5df2\u4e2d\u6b62\u3002
 notSuspendedException=Player \u6b63\u5728\u57f7\u884c\u6642\u7121\u6cd5\u767c\u51fa\u6307\u4ee4
 illegalStateException=\u5982\u679c\u6c92\u6709\u5de5\u4f5c\u968e\u6bb5\uff0c\u6307\u4ee4\u5c31\u7121\u6548\u3002

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_br.txt
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_br.txt b/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_br.txt
index a6f8fb6..1f4ec5d 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_br.txt
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_br.txt
@@ -1,4 +1,4 @@
-
+    
       Licensed to the Apache Software Foundation (ASF) under one or more
       contributor license agreements.  See the NOTICE file distributed with
       this work for additional information regarding copyright ownership.
@@ -14,1607 +14,806 @@
       See the License for the specific language governing permissions and
       limitations under the License.
 
-This file contains the text displayed by the 'help' command in fdb.
-
 
+This file contains the text displayed by the 'help' command in fdb.
 
 It is divided into "topics". For example, when an fdb user types
-
 'help break', the [break] topic below is displayed.
 
-
-
 The first and last lines of each topic should be blank.
-
 They don't get displayed in fdb; they are here only
-
 to make this file more easily readable.
 
-
-
 Help text should be formatted to not wrap
-
 when displayed on an 80-character-wide console.
-
 The following line is 80 characters wide.
 
-
-
 --------------------------------------------------------------------------------
 
-
-
 [?]
 
-
-
 Comando indefinido. Insira 'help' para ver uma lista de todos os comandos fdb. 
 
-
-
 [break]
 
-
-
 Defina o ponto de interrupção na linha ou função especificada.
-
 Exemplos:
-
   break 87
-
     Define um ponto de interrupção na linha 87 do arquivo atual.
-
   break myapp.mxml:56
-
     Define um ponto de interrupção na linha 56 de myapp.mxml.
-
   break #3:29
-
     Define um ponto de interrupção na linha 29 do arquivo #3.
-
   break doThis
-
     Define um ponto de interrupção na função doThis() no arquivo atual.
-
   break myapp.mxml:doThat
-
     Define um ponto de interrupção na função doThat() no arquivo myapp.mxml.
-
   break #3:doOther
-
     Define um ponto de interrupção na função doOther() no arquivo #3.
-
   break
-
    Define um ponto de interrupção no endereço de execução atual na moldura da 
-
    pilha atual. Isso é útil para interrupções ao retornar a uma moldura de 
-
    pilha. 
-
 Para ver nomes e números de arquivo, insira 'info sources' ou 'info files'.
-
 Para ver nomes de função, insira 'info functions'.
-
 Nomes de arquivo e de função abreviados são aceitos, se não forem ambíguos.
-
 Se o número da linha for especificado, interrompa no início do código dessa 
-
 linha.
-
 Se a função for especificada, interrompa no início do código dessa função.
-
 Para obter mais controles de pontos de interrupção, consulte 'commands' e 
-
 'condition'.
 
-
-
 [bt]
 
-
-
 Rastreamento regressivo da pilha.
 
-
-
 [catch]
 
-
-
 Pare quando houver lançamento de uma exceção.  Isso somente afeta exceções 
-
 capturadas – ou seja, exceções que serão manipuladas por um bloco de "captura". 
-
 Exceções não capturadas sempre são interrompidas no depurador.
 
-
-
 Use o comando "delete" para excluir um ponto de captura.
 
-
-
 Exemplos:
-
   catch *
-
     Pára quando houver qualquer lançamento de exceção.
-
   catch ReferenceError
-
     Pára sempre que um ReferenceError é lançado, capturado ou não capturado.
 
-
-
 [cf]
 
-
-
 Exiba o nome e o número do arquivo atual ou altere o arquivo atual.
-
 Exemplos:
-
   cf
-
     Exibe o nome e o número do arquivo atual.
-
   cf myapp.mxml
-
     Altera o arquivo atual para myapp.mxml.
-
   cf #29
-
     Altera o arquivo atual para o arquivo #29.
-
 Para ver nomes e números de arquivo, insira 'info sources' ou 'info files'.
-
 Nomes de arquivo abreviados são aceitos, se não forem ambíguos.
-
 Listar um arquivo com 'list' também o torna o arquivo atual.
 
-
-
 [clear]
 
-
-
 Limpe o ponto de interrupção na linha ou função especificada.
-
 Exemplos:
-
   clear 87
-
     Limpa o ponto de interrupção na linha 87 do arquivo atual.
-
   clear myapp.mxml:56
-
     Limpa o ponto de interrupção na linha 56 de myapp.mxml.
-
   clear #3:29
-
     Limpa o ponto de interrupção na linha 29 do arquivo #3.
-
   clear doThis
-
     Limpa o ponto de interrupção na função doThis() no arquivo atual.
-
   clear myapp.mxml:doThat
-
     Limpa o ponto de interrupção na função doThat() no arquivo myapp.mxml.
-
   clear #3:doOther
-
     Limpa o ponto de interrupção na função doOther() no arquivo #3.
-
   clear
-
     Limpa o ponto de interrupção da linha atual no arquivo atual. 
-
 Para ver nomes e números de arquivo, insira  'info sources' ou 'info files'.
-
 Para ver nomes de função, insira 'info functions'.
-
 Nomes de arquivo e de função abreviados são aceitos, se não forem ambíguos.
-
 Se o número da linha for especificado, todos os pontos de interrupção nessa 
-
 linha serão limpos.
-
 Se a função for especificada, os pontos de interrupção no início da função 
-
 serão limpos.
 
-
-
 [continue]
 
-
-
 Continue a execução depois de parar no ponto de interrupção.
-
 Este comando não possui argumentos.
 
-
-
 [condition]
 
 
-
-
-
 Especifique o número N do ponto de interrupção a ser interrompido somente se 
-
 COND for verdadeiro.
-
 O uso é 'condition N COND', onde N é um número inteiro e COND é uma expressão a 
-
 ser avaliada sempre que o ponto de interrupção N for alcançado.
 
-
-
 [commands]
 
-
-
 Defina comandos a serem executados quando um ponto de interrupção for atingido.
-
 Forneça o número do ponto de interrupção como argumento depois de 'commands'.
-
 Sem argumento, o ponto de interrupção de destino é o último definido.
-
 Os próprios comandos seguem-se, começando na linha seguinte.
-
 Digite uma linha que contenha "end" para indicar o fim delas.
-
 Forneça "silent" como a primeira linha para tornar o ponto de interrupção 
-
 silencioso; nenhuma saída é impressa quando alcançada, a não ser o que os 
-
 comandos imprimem.
-
 Exemplo:
-
   (fdb) commands
-
   Digite comandos para quando o ponto de interrupção 1 for alcançado, um por 
-
   linha.
-
   Termine com uma linha que inclua apenas 'end'.
-
   >w
-
   >end
 
-
-
 [delete]
 
-
-
 Exclua um ou mais pontos de interrupção.
-
 Exemplos:
-
   delete
-
     Exclui todos os pontos de interrupção.
-
   delete 2 5
-
     Exclui os pontos de interrupção #2 e #5.
-
 Para ver números de pontos de interrupção, insira 'info breakpoints'.
 
-
-
 [directory]
 
-
-
 Modifique a lista de diretórios na qual fdb procura arquivos de origem.
 
-
-
 Exemplos:
 
-
-
   directory
-
     Restaura a lista ao estado padrão, que é o diretório em que o arquivo de 
-
     origem foi compilado em código de objeto, seguido da pasta de trabalho 
-
     atual.
 
-
-
   directory C:\MySource        (Windows)
-
   directory /MySource          (Mac)
-
     Adiciona o diretório especificado ao início da lista de diretórios na qual 
-
     a origem será procurada.  Ao procurar a origem da classe mypackage.MyClass, 
-
     por exemplo, o depurador procura C:\MySource\mypackage\MyClass.as e 
-
     C:\MySource\MyClass.as.
 
-
-
   directory C:\Dir1;C:\Dir2    (Windows usa ';' como separador)
-
   directory /Dir1:/Dir2        (Mac usa ':' como separador)
-
     Adiciona vários diretórios ao início da lista de diretórios na qual a 
-
     origem será procurada.
 
-
-
 Para ver a lista atual, insira 'show directories'.
 
-
-
 [disable]
 
-
-
 Desative um ou mais pontos de interrupção ou expressões de exibição automática.
-
 Exemplos:
-
   disable
-
   disable breakpoints
-
     Desativa todos os pontos de interrupção.
-
   disable 2 5
-
   disable breakpoints 2 5
-
     Desativa os pontos de interrupção #2 e #5.
-
   disable display
-
     Desativa todas as expressões de exibição automática.
-
   disable display 1 3
-
     Desativa as expressões de exibição automática #1 e #3.
-
 Para ver números de pontos de interrupção, insira 'info breakpoints'.
-
 Para ver números de expressões de exibição automática, insira 'info display'.
 
-
-
 [disassemble]
 
-
-
 (Somente ActionScript 2; sem suporte quando ActionScript 3 é depurado)
 
-
-
 Desmonte uma parte especificada do código-fonte.
-
 O padrão é a linha de listagem atual.
-
 Argumentos com suporte são os mesmos do comando "list".
-
 Exemplos:
-
   disassemble 87
-
     Desmonta a linha 87 no arquivo atual.
-
   disassemble 87 102
-
     Desmonta as linhas 87 a 102 no arquivo atual.
-
   disassemble doThis
-
       Desmonta a função doThis() no arquivo atual.
-
 Além de usar números de linha simples como acima, você pode especificar linhas 
-
 em modos adicionais:
-
    myapp.mxml
-
       Linha 1 em myapp.mxml.
-
    myapp.mxml:doThat
-
       A primeira linha da função doThat() em myapp.mxml.
-
    myapp.mxml:56
-
       Linha 56 em myapp.mxml.
-
    #3
-
       Linha 1 no arquivo #3.
-
    #3:doOther
-
       A linha no arquivo #3 onde a função doOther() começa.
-
    #3:29
-
       Linha 29 no arquivo #3.
 
-
-
 [display]
 
-
-
 Adicione uma expressão à lista de expressões de exibição automática.
-
 Exemplo:
-
   display employee.name
-
     Adiciona 'employee.name' à lista de expressões de exibição automática.
-
     Toda vez que fdb pára, o valor de employee.name é exibido.
-
 O argumento deste comando é semelhante ao de 'print'.
-
 Para ver a lista de expressões de exibição automática e seus números, insira 
-
 'info display'.
 
-
-
 [down]
 
-
-
 Selecione e imprima a moldura de pilha chamada por este.
-
 Os comandos 'info arguments' e 'info locals' subseqüentes exibirão os locais e 
-
 os argumentos da moldura selecionada.
-
 Consulte 'up' e 'frame' 
 
-
-
 [enable]
 
-
-
 Ative um ou mais pontos de interrupção ou expressões de exibição automática.
-
 Exemplos:
-
   enable
-
   enable breakpoints
-
     Ativa todos os pontos de interrupção.
-
   enable 2 5
-
   enable breakpoints 2 5
-
     Ativa os pontos de interrupção #2 e #5.
-
   enable display
-
     Ativa todas as expressões de exibição automática.
-
   enable display 1 3
-
     Ativa as expressões de exibição automática #1 e #3.
-
 Para ver números de pontos de interrupção, insira 'info breakpoints'.
-
 Para ver números de expressões de exibição automática, insira 'info display'.
 
-
-
 [file]
 
-
-
 Especifique um aplicativo a ser depurado, sem iniciá-lo.
-
 Exemplos:
-
   file http://www.mysite.com/myapp.mxml
-
     Especifique um aplicativo MXML a ser depurado.
-
   file myapp.swf
-
     Especifique um arquivo SWF local a ser depurado no diretório atual.
-
     Neste caso, myapp.swd (o arquivo que contém informações de depuração) deve 
-
     também existir no diretório atual.
-
 Este comando não inicia o aplicativo; use o comando 'run' sem argumento para 
-
 iniciar a depuração do aplicativo.
-
 Em vez de usar 'file <target>' e em seguida 'run', você pode simplesmente 
-
 especificar o aplicativo a ser depurado como um argumento de 'run':
-
   run http://mysite.com/myapp.mxml
-
   run myapp.swf
-
 Pode também especificar o aplicativo a ser depurado como um argumento de linha 
-
 de comando quando iniciar fdb:
-
   fdb http://www.mysite.com/myapp.mxml
-
   fdb myapp.swf
-
 Nesse caso, não é necessário usar 'file' ou 'run'.
-
 Se usar 'run' sem especificar um aplicativo a ser depurado, fdb aguardará um 
-
 aplicativo para conectar-se a ele.
 
-
-
 [finish]
 
-
-
 Execute até a função atual retornar.
-
 Este comando não possui argumentos.
 
-
-
 [frame]
 
-
-
 Selecione e imprima uma moldura de pilha específica.
-
 Esse comando possui um argumento opcional, um número de moldura.
-
 Se nenhum argumento for fornecido, o padrão é retornar à moldura superior atual 
-
 (ou seja, moldura 0).
-
 Exemplos:
-
   frame 4
-
   frame
-
 Os comandos 'info arguments' e 'info locals' subseqüentes exibirão os locais e 
-
 os argumentos da moldura selecionada.
-
 Consulte 'up', 'down' e 'bt' 
 
-
-
 [handle]
 
-
-
 Especifique como fdb deve tratar uma falha no Flash Player.
-
 Exemplos:
-
   handle recursion_limit stop
-
     Quando ocorre uma falha recursion_limit, exibe uma mensagem em fdb e pára, 
-
     como se em um ponto de interrupção.
-
   handle all print nostop
-
     Quando ocorre algum tipo de falha, exibe uma mensagem em fdb, mas não pára.
-
 O primeiro argumento é um nome de falha ou 'all'.
-
 Argumentos adicionais são ações que se aplicam a essa falha.
-
 Para ver nomes de falhas, insira 'info handle'.
-
 Ações são print/noprint e stop/nostop.
-
 'print' significa imprimir uma mensagem, se essa falha ocorrer.
-
 'stop' significa inserir o depurador novamente, se essa falha ocorrer. Implica 
-
 'print'.
 
-
-
 [help]
 
-
-
 Novo no fdb? Para obter informações básicas, insira 'tutorial'.
-
 Lista de comandos fdb:
-
 bt (bt)             Imprimir rastreamento regressivo de todas as molduras de 
-
                     pilha
-
 break (b)           Definir o ponto de interrupção na linha ou função 
-
                     especificada
-
 catch (ca)          Parar quando houver lançamento de uma exceção
-
 cf (cf)             Exibir o nome e o número do arquivo atual
-
 clear (cl)          Limpar o ponto de interrupção na linha ou função 
-
                     especificada
-
 condition (cond)    Aplicar/remover expressão condicional a um ponto de 
-
                     interrupção
-
 continue (c)        Continuar a execução depois de parar no ponto de interrupção
-
 commands (com)      Definir comandos a serem executados quando um ponto de 
-
                     interrupção é alcançado
-
 delete (d)          Excluir pontos de interrupção ou expressões de exibição 
-
                     automática
-
 directory (dir)     Adicionar um diretório a um caminho de procura de arquivos 
-
                     de origem
-
 disable (disab)     Desativar todos os pontos de interrupção ou expressões de 
-
                     exibição automática
-
 disassemble (disas) Desmontar linhas ou funções de origem
-
 display (disp)      Adicionar expressões de exibição automática
-
 enable (e)          Ativar pontos de interrupção ou expressões de exibição 
-
                     automática
-
 file (fil)          Especificar o aplicativo a ser depurado
-
 finish (f)          Executar até a função atual retornar
-
 handle (han)        Especificar como tratar de uma falha
-
 help (h)            Exibir ajuda sobre comandos fdb
-
 home (ho)           Definir o local de listagem para onde a execução é 
-
                     interrompida
-
 info (i)            Exibir informações sobre o programa que está sendo depurado
-
 kill (k)            Eliminar a execução do programa que está sendo depurado
-
 list (l)            Listar função ou linha especificada
-
 next (n)            Avançar o programa
-
 print (p)           Imprimir o valor da variável EXP
-
 pwd (pw)            Imprimir pasta de trabalho
-
 quit (q)            Sair do fdb
-
 run (r)             Iniciar programa depurado
-
 set (se)            Definir o valor de uma variável
-
 source (so)         Ler comandos fdb a partir de um arquivo
-
 step (s)            Avançar o programa até ele chegar a uma linha de origem 
-
                     diferente
-
 tutorial (t)        Exibir um tutorial sobre como usar fdb
-
 undisplay (u)       Remover uma expressão de exibição automática
-
 viewswf (v)         Definir ou limpar filtro para listagem de arquivos baseada 
-
                     em swf
-
 watch (wa)          Adicionar um ponto de inspeção em uma determinada variável
-
 what (wh)           Exibir o contexto de uma variável
-
 where (w)           O mesmo que bt
-
 Para obter a documentação completa, digite 'help' seguido do nome do comando.
 
-
-
 [home]
 
-
-
 Definir o local de listagem para onde a execução é interrompida
 
-
-
 [info]
 
-
-
 Comando genérico para mostrar coisas sobre o programa que está sendo depurado.
-
 Lista de subcomandos de informação:
-
 info arguments (i a)    Variáveis de argumento da moldura de pilha atual
-
 info breakpoints (i b)  Estado dos pontos de interrupção definíveis pelo usuário
-
 info display (i d)      Exibir lista de expressões de exibição automática
-
 info files (i f)        Nomes de destinos e arquivos que estão sendo depurados
-
 info functions (i fu)   Todos os nomes de função
-
 info handle (i h)       Como tratar de uma falha
-
 info locals (i l)       Variáveis locais da moldura de pilha atual
-
 info scopechain (i sc)  Cadeia do escopo da moldura de pilha atual
-
 info sources (i so)     Arquivos de origem no programa
-
 info stack (i s)        Rastreamento regressivo da pilha
-
 info swfs (i sw)        Lista de swfs nesta sessão
-
 info targets(i t)       Aplicativo que está sendo depurado
-
 info variables (i v)    Todos os nomes de variáveis globais e estáticas
-
 Para obter a documentação completa, digite 'help info' seguido do nome do 
-
 subcomando de informação.
 
-
-
 [info arguments]
 
-
-
 Exibir argumentos da moldura de pilha atual
 
-
-
 [info breakpoints]
 
-
-
 Exibir o estado de todos os pontos de interrupção e pontos de inspeção.
-
 A coluna Type indica:
-
    breakpoint   - ponto de interrupção normal
-
    watchpoint   - ponto de inspeção
-
 A coluna Disp contém 'keep', 'del' ou 'dis' para indicar a disposição do ponto 
-
 de interrupção depois de ser atingido. 'dis' significa que o ponto de 
-
 interrupção será desativado, enquanto 'del' significa que será excluído.  
-
 As colunas 'Address' e 'What' indicam o endereço e número de arquivo/linha 
-
 respectivamente. 
 
-
-
 [info display]
 
-
-
 Exibir lista de expressões de exibição automática e seus números.
 
-
-
 [info files]
 
-
-
 Exibir nomes e números dos arquivos do aplicativo que está sendo depurado, 
-
 incluindo arquivos de origem, arquivos de estrutura e arquivos gerados 
-
 automaticamente.
-
 Exemplos:
-
   info files
-
     Lista todos os arquivos, alfabeticamente, por categoria
-
   info files my
-
   info files my*
-
     Lista todos os arquivos cujos nomes começam com "my", alfabeticamente.
-
   info files *.as
-
     Lista todos os arquivos cujos nomes terminam com ".as", alfabeticamente.
-
   info files *foo*
-
     Lista todos os arquivos cujos nomes contêm "foo", alfabeticamente. 
-
 Arquivos são exibidos no formato name#N, onde N é o número do arquivo.
-
 Em vários comandos você pode usar #N no lugar de um nome de arquivo.
 
-
-
 [info functions]
 
-
-
 Exibir nomes de função.
-
 Exemplos:
-
   info functions .
-
     Exibe todas as funções no arquivo atual.
-
   info functions myapp.mxml
-
     Exibe todas as funções em myapp.mxml.
-
   info functions #3
-
     Exibe todas as funções no arquivo #3.
-
   info functions
-
     Exibe todas as funções em todos os arquivos.
-
 Para ver nomes e números de arquivo, insira  'info sources' ou 'info files'.
-
 Nomes de arquivo abreviados são aceitos, se não forem ambíguos.
 
-
-
 [info handle]
 
-
-
 Exibir o que fdb faz quando ocorre uma falha no Flash Player.
-
 Exemplos:
-
   info handle
-
     Exibe como o fdb trata de todas as falhas.
-
   info handle recursion_limit
-
     Exibe como o fdb trata de uma falha recursion_limit.
 
-
-
 [info locals]
 
-
-
 Exibir variáveis locais da moldura de pilha atual.
 
-
-
 [info scopechain]
 
-
-
 Exibir a cadeia de escopo da moldura de pilha atual.  A cadeia de escopo é a 
-
 lista de objetos que é procurada quando o Flash player está tentando resolver 
-
 um nome de símbolo.
 
-
-
 [info sources]
 
-
-
 Exibir nomes e números dos arquivos de origem para o aplicativo que está sendo 
-
 depurado. Arquivos de estrutura e arquivos gerados automaticamente não são 
-
 incluídos.
-
 Arquivos são exibidos no formato name#N, onde N é o número do arquivo.
-
 Em vários comandos você pode usar #N no lugar de um nome de arquivo.
 
-
-
 [info stack]
 
-
-
 Rastreamento regressivo da pilha.
 
-
-
 [info swfs]
 
-
-
 Exibir swfs que são identificados na sessão de depuração.  Para obter 
-
 informações sobre como a listagem de arquivo pode ser filtrada com base no nome 
-
 de swf, consulte o comando 'viewswf'. 
 
-
-
 [info targets]
 
-
-
 Exibir o URL (http: ou arquivo:) do aplicativo que está sendo depurado.
 
-
-
 [info variables]
 
-
-
 Exibir todos os nomes e valores de variáveis globais ou estáticas.
 
-
-
 [info ?]
 
-
-
 Comando de informação indefinido. Tente 'help info'.
 
-
-
 [kill]
 
-
-
 Eliminar a execução do programa que está sendo depurado.
-
 Este comando não possui argumentos.
 
-
-
 [list]
 
-
-
 Listar linhas de código em um arquivo de origem.
-
 Exemplos:
-
   list
-
     Lista mais dez linhas no arquivo atual após ou em torno da listagem 
-
     anterior.
-
   list -
-
     Lista as dez linhas no arquivo atual antes de uma listagem anterior.
-
   list 87
-
     Lista dez linhas no arquivo atual em torno da linha 87.
-
   list 87 102
-
     Lista as linhas 87 a 102 no arquivo atual.
-
 Além de usar números de linha simples como acima, você pode especificar linhas 
-
 em sete modos adicionais:
-
   doThis
-
       A primeira linha da função doThis() no arquivo atual.
-
    myapp.mxml
-
       Linha 1 em myapp.mxml.
-
    myapp.mxml:doThat
-
       A primeira linha da função doThat() em myapp.mxml.
-
    myapp.mxml:56
-
       Linha 56 em myapp.mxml.
-
    #3
-
       Linha 1 no arquivo #3.
-
    #3:doOther
-
       A linha no arquivo #3 onde a função doOther() começa.
-
    #3:29
-
       Linha 29 no arquivo #3.
-
 Para ver nomes e números de arquivo, insira  'info sources' ou 'info files'.
-
 Para ver nomes de função, insira 'info functions'.
-
 Nomes de arquivo e de função abreviados são aceitos, se não forem ambíguos.
-
 Listar um arquivo torna-o o arquivo atual. (Consulte o comando 'cf'.)
 
-
-
 [next]
 
-
-
 Avançar o programa, prosseguindo com chamadas de sub-rotina.
-
   next
-
     Avançar uma vez.
-
   next 3
-
     Avançar três vezes, ou até o programa parar por outro motivo.
-
 Como o comando 'step', desde que as chamadas de sub-rotina não ocorram; quando 
-
 ocorrem a chamada é tratada como uma instrução.
 
-
-
 [print]
 
-
-
 Valor de impressão de variável ou expressão.
-
 Exemplos:
-
   print i
-
     Imprime o valor de 'i'.
-
   print employee.name
-
     Imprime o valor de 'employee.name'.
-
   print employee
-
     Imprime o valor do objeto 'employee'.
-
     Isso pode simplesmente exibir algo como [Object 10378].
-
   print employee.
-
     Imprime os valores de todas as propriedades do objeto 'employee'.
-
   print *employee
-
     Imprime os valores de todas as propriedades do objeto 'employee'.
-
     O operador do prefixo '*' é o prefixo alternativo do operador do sufixo '.'.
-
   print #10378.
-
     Imprime os valores de todas as propriedades de Object #10378.
-
 Variáveis acessíveis são aquelas do ambiente léxico da moldura de pilha 
-
 selecionada, mais todas aquelas cujo escopo é global ou um arquivo inteiro.
 
-
-
 [pwd]
 
-
-
 Imprimir a pasta de trabalho atual.
-
 Este é o diretório a partir do qual o fdb foi iniciado; não pode ser alterado 
-
 dentro do fdb. O argumento para 'run' e 'source' pode ser especificado em 
-
 relação a este diretório.
-
 Este comando não possui argumentos.
 
-
-
 [quit]
 
-
-
 Sair do fdb.
-
 Este comando não possui argumentos.
 
-
-
 [run]
 
-
-
 Iniciar uma sessão de depuração.
-
 Exemplos:
-
   run http://www.mysite.com/myapp.mxml
-
     Executa o aplicativo MXML especificado.
-
   run myapp.swf
-
   run mydir\myapp.swf
-
   run c:\mydir\myapp.swf
-
     Executa o arquivo SWF local myapp.swf, que pode ser especificado em relação 
-
     ao diretório atual (consulte o comando 'pwd') ou usando um caminho absoluto.
-
     Nesses casos, myapp.swd (o arquivo que contém as informações de depuração) 
-
     deve também existir no mesmo diretório que myapp.swf.
-
   run
-
     Executa o aplicativo especificado anteriormente pelo comando 'file'.
-
     Se nenhum aplicativo foi especificado, o fdb aguardará um para conectar-se 
-
     a ele, e expirará se não houver qualquer aplicativo.
-
 'run' iniciará o aplicativo em um navegador ou em um Flash Player autônomo.
-
 Assim que o aplicativo for iniciado, ele iniciará o fdb para que você possa 
-
 definir pontos de interrupção etc.
 
-
-
 No Macintosh, a única forma do comando com suporte é 'run', sem argumentos.  
-
 É necessário iniciar o Flash player manualmente.
 
-
-
 [set]
 
-
-
 Definir o valor de uma variável ou uma variável de conveniência.
-
 Variáveis de conveniência são aquelas que existem inteiramente dentro do fdb e 
-
 não fazem parte do seu programa.
-
 Variáveis de conveniência têm o prefixo '$' e podem ser qualquer nome que não 
-
 entre em conflito com qualquer variável existente.  Por exemplo, $myVar.  
-
 Variáveis de conveniência também são usadas para controlar vários aspectos de 
-
 fdb.  
 
-
-
 As variáveis de conveniência a seguir são usadas pelo fdb.
-
 $listsize          - número de linhas de origem a ser exibido para 'list'
-
 $columnwrap        - número da coluna em que a saída será alinhada
-
 $infostackshowthis - se 0, não exibe 'this' no rastreamento regressivo da pilha
-
 $invokegetters     - se 0, impede que o fdb dispare funções de getter
-
 $bpnum             - o último número do ponto de interrupção definido
-
 $displayattributes - se 1, 'print var.' exibe todos os atributos de membros de 
-
                      'var' (por exemplo, privado, estático)
 
-
-
 Exemplos:
-
   set i = 3
-
     Define a variável 'i' para o número 3.
-
   set employee.name = "Susan"
-
     Define a variável 'employee.name' para a string "Susan".
-
   set $myVar = 20
-
     Define a variável de conveniência '$myVar' para o número 20.
 
-
-
 [show]
 
-
-
 Comando genérico para mostrar coisas sobre o estado do fdb.
-
 Lista de subcomandos de exibição:
-
 show break (sh b)       Local e motivo de execução suspensa
-
 show directories (sh d) Diretórios em que arquivos de origem são procurados
-
 show files (sh f)       Arquivos de destino e caminhos
-
 show functions (sh fu)  Informações de mapeamento de linha de função 
-
 show locations (sh l)   Locais de pontos de interrupção
-
 show memory (sh m)      Uso de memória atual
-
 show net (sh n)         Estatística de mensagem do player 
-
 show properties (sh p)  Valores de propriedades
-
 show uri (sh u)         URI do player para esta sessão 
-
 show variable (sh v)    Recuperação de variável bruta
-
 Para obter a documentação completa, digite 'help show' seguido do nome do 
-
 subcomando de exibição.
 
-
-
 [show break]
 
-
-
 Exibir o deslocamento dentro de SWF em que o programa parou.
 
-
-
 [show directories]
 
-
-
 Exibir o caminho de procura atual para localizar arquivos de origem.
 
-
-
 [show files]
 
-
-
 Exibir caminho e nome de arquivo para todos os arquivos de destino.
 
-
-
 [show functions]
 
-
-
 Exibir informações de mapeamento de função a número de linha.
-
 Exemplos:
-
   show functions .
-
     Mostra informações de mapeamento para todas as funções no arquivo atual.
-
   show functions myapp.mxml
-
     Mostra informações de mapeamento para todas as funções em myapp.mxml.
-
   show functions #3
-
     Mostra informações de mapeamento para todas as funções no arquivo #3.
-
   show functions
-
     Mostra informações de mapeamento para todas as funções em todos os arquivos.
-
 Para ver nomes e números de arquivo, insira  'info sources' ou 'info files'.
-
 Nomes de arquivo abreviados são aceitos, se não forem ambíguos.
 
-
-
 [show locations]
 
-
-
 Exibir a lista de locais que estão definidos para cada ponto de interrupção.
 
-
-
 [show memory]
 
-
-
 Exibir estatística de memória de Java VM.
 
-
-
 [show net]
 
-
-
 Exibir informações sobre mensagens que foram enviadas para, e recebidas do, 
-
 Flash Player.
 
-
-
 [show properties]
 
-
-
 Exibir uma lista de variáveis de conveniência usadas dentro do depurador. 
 
-
-
 [show uri]
 
-
-
 Exibir a URI que o player enviou para esta sessão.
 
-
-
 [show variable]
 
-
-
 Exibir o valor de um membro de uma variável.  Dois parâmetros são necessários. 
-
 O primeiro é o identificador numérico da variável, o segundo, o nome da 
-
 propriedade na variável.  A variável de conveniência $invokegetters é usada 
-
 para determinar se a propriedade de getter, supondo que ela exista, será 
-
 disparada ou não.
-
 Exemplo:
-
     show variable 1 __proto__
 
-
-
 [show ?]
 
-
-
 Comando de exibição indefinido. Tente 'help show'.
 
-
-
 [source]
 
-
-
 Ler comandos de fdb a partir de um arquivo e executá-los.
-
   source mycommands.txt
-
   source mydir\mycommands.txt
-
   source c:\mydir\mycommands.txt
-
     Lê mycommands.txt e executa nele os comandos de fdb.
-
     O arquivo que contém os comandos pode ser especificado
-
 	em relação ao diretório atual (consulte o comando 'pwd')
-
 	ou usando um caminho absoluto.
-
 O arquivo .fdbinit é lido automaticamente desse modo quando o fdb é iniciado.
-
 Somente no diretório atual .fdbinit é procurado. Isso significa que você pode 
-
 definir vários arquivos .fdbinit para diferentes projetos.
 
-
-
 [step]
 
-
-
 Avançar o programa até ele chegar a uma linha de origem diferente.
-
 Exemplos:
-
   step
-
     Avançar uma vez.
-
   step 3
-
     Avançar três vezes, ou até o programa parar por outro motivo.
 
-
-
 [tutorial]
 
-
-
 Exibir um tutorial sobre como usar fdb.
-
 Este comando não possui argumentos.
 
-
-
 [Tutorial]
 
-
-
 Uma sessão típica de fdb:
-
 Iniciar um aplicativo com 'run'.
-
 Exibir nomes de arquivo com 'info sources'.
-
 Listar um arquivo com 'list'.
-
 Definir pontos de interrupção com 'break'.
-
 Executar o programa com 'continue' até o ponto de interrupção ser alcançado.
-
 Examinar o estado do programa com 'where', 'print' e 'info locals'.
-
 Executar instruções individuais com 'next', 'step' e 'finish'.
-
 Retomar a execução com 'continue'.
-
 Encerrar o fdb com 'quit'.
 
-
-
 [undisplay]
 
-
-
 Remover uma ou mais expressões de exibição automática.
-
 Exemplos:
-
   undisplay
-
     Remove todas as expressões de exibição automática.
-
   undisplay 2 7
-
     Remove as expressões de exibição automática #2 e #7.
-
 Para ver a lista de expressões de exibição automática e seus números, insira 
-
 'info display'.
 
-
-
 [up]
 
-
-
 Selecionar e imprimir a moldura de pilha chamada por este.
-
 Comandos 'info arguments' e 'info locals' subseqüentes exibirão
-
 os locais e os argumentos da moldura selecionada.
-
 Consulte 'down' e 'frame'
 
-
-
 [viewswf]
 
-
-
 Definir ou limpar filtro para listagem de arquivo (ou seja, 'info files' e 
-
 'info sources'), com base em nome de swf. 
-
 Sem quaisquer parâmetros, todos os arquivos serão mostrados.  Se o mesmo 
-
 arquivo existir em um ou mais swfs, a listagem somente exibirá a primeira 
-
 instância do arquivo.  Para acessar outras instâncias do arquivo, use o número 
-
 do arquivo (por exemplo, 'list #192') ou use este comando com um parâmetro (ver 
-
 abaixo) para exibir arquivos de um swf específico.  Com um único parâmetro, o 
-
 nome de swf tal como exibido pelo comando 'info swfs', somente os arquivos do 
-
 swf especificado serão exibidos na listagem de arquivo.  
-
 Arquivos de outros swf não serão mostrados.  Este comando também afeta comandos 
-
 que aceitam um arquivo como um parâmetro (por exemplo, 'break')
-
 Exemplo:
-
   viewswf myApp.mxml.swf
-
     Somente arquivos de myApp.mxml.swf serão exibidos.
-
   viewswf 
-
     Todos os arquivos de todos os swfs serão exibidos.
-
  
-
 [watch]
 
-
-
 Adicionar um ponto de inspeção em uma determinada variável. O depurador parará 
-
 a execução quando o valor da variável for alterado.
-
 Exemplo:
-
   watch foo
 
-
-
 [what]
 
-
-
 Exibe o contexto em que uma variável é resolvida. 
 
-
-
 [where]
 
-
-
 Rastreamento regressivo da pilha.
 
-
-
 [zzz]
 
-
-
 ((( Keep this unused topic at the end of the file    )))
-
 ((( so that the next-to-last one is parsed properly. )))
-

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_de.txt
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_de.txt b/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_de.txt
index 532111f..955c9b1 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_de.txt
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_de.txt
@@ -1,4 +1,4 @@
-
+    
       Licensed to the Apache Software Foundation (ASF) under one or more
       contributor license agreements.  See the NOTICE file distributed with
       this work for additional information regarding copyright ownership.
@@ -14,1715 +14,860 @@
       See the License for the specific language governing permissions and
       limitations under the License.
 
-This file contains the text displayed by the 'help' command in fdb.
-
 
+This file contains the text displayed by the 'help' command in fdb.
 
 It is divided into "topics". For example, when an fdb user types
-
 'help break', the [break] topic below is displayed.
 
-
-
 The first and last lines of each topic should be blank.
-
 They don't get displayed in fdb; they are here only
-
 to make this file more easily readable.
 
-
-
 Help text should be formatted to not wrap
-
 when displayed on an 80-character-wide console.
-
 The following line is 80 characters wide.
 
-
-
 --------------------------------------------------------------------------------
 
-
-
 [?]
 
-
-
 Nicht definierter Befehl. Geben Sie einfach トhelpモ ein, um eine Liste aller 
-
 FDB-Befehle anzuzeigen.
 
-
-
 [break]
 
-
-
 Setzt bei einer bestimmten Zeile oder Funktion einen Haltepunkt.
-
 Beispiele:
-
   break 87
-
     Setzt einen Haltepunkt bei Zeile 87 der aktuellen Datei.  
-
   break myapp.mxml:56
-
     Setzt einen Haltepunkt bei Zeile 56 der Datei トmyapp.mxmlモ.
-
   break #3:29
-
     Setzt einen Haltepunkt bei Zeile 29 in Datei 3.
-
   break doThis
-
     Setzt einen Haltepunkt bei der Funktion トdoThis()モ in der aktuellen Datei.
-
   break myapp.mxml:doThat
-
     Setzt einen Haltepunkt bei der Funktion トdoThat()モ in der Datei 
-
     トmyapp.mxmlモ.
-
   break #3:doOther
-
     Setzt einen Haltepunkt bei der Funktion トdoOther()モ in Datei 3.
-
   break
-
    Setzt einen Haltepunkt bei der aktuellen Ausfhrungsadresse im aktuellen 
-
    Stapelrahmen. Dies ist ntzlich, wenn bei der Rckkehr zu einem Stapelrahmen 
-
    angehalten werden soll.
-
 Geben Sie zum Anzeigen von Dateinamen und -nummern トinfo sourcesモ oder トinfo 
-
 filesモ ein.
-
 Geben Sie zum Anzeigen von Funktionsnamen トinfo functionsモ ein.
-
 Abgekrzte Datei- und Funktionsnamen sind zul¦ssig, wenn sie eindeutig sind.
-
 Ist eine Zeilennummer angegeben, wird am Anfang des Codes der entsprechenden 
-
 Zeile angehalten.
-
 Ist eine Funktion angegeben, wird am Anfang des Codes der entsprechenden 
-
 Funktion angehalten.
-
 Weitere Informationen zur Steuerung von Haltepunkten finden Sie unter 
-
 トcommandsモ und トconditionモ.
 
-
-
 [bt]
 
-
-
 Ablaufverfolgung des Stapels.
 
-
-
 [catch]
 
-
-
 H¦lt bei Ausgabe einer Ausnahmebedingung an.  Dies betrifft nur abgefangene 
-
 Ausnahmebedingungen, also Ausnahmebedingungen, die durch einen トCatchモ-Block 
-
 verarbeitet werden.  Bei nicht abgefangenen Ausnahmebedingungen erfolgt die 
-
 Unterbrechung immer im Debugger.
 
-
-
 Verwenden Sie zum L￶schen eines Catch-Points den Befehl トdeleteモ.
 
-
-
 Beispiele:
-
   catch *
-
     Unterbricht bei Ausgabe einer beliebigen Ausnahmebedingung.
-
   catch ReferenceError
-
     Unterbricht bei jeder Ausgabe eines ReferenceError, unabh¦ngig davon, ob er 
-
     abgefangen wurde.
 
-
-
 [cf]
 
-
-
 Zeigt den Namen und die Nummer der aktuellen Datei an oder ¦ndert die aktuelle 
-
 Datei.
-
 Beispiele:
-
   cf
-
     Zeigt den Namen und die Nummer der aktuellen Datei an.
-
   cf myapp.mxml
-
     ᅣndert die aktuelle Datei in トmyapp.mxmlモ.
-
   cf #29
-
     ᅣndert die aktuelle Datei in Datei 29.
-
 Geben Sie zum Anzeigen von Dateinamen und -nummern トinfo sourcesモ oder トinfo 
-
 filesモ ein.
-
 Abgekrzte Dateinamen sind zul¦ssig, wenn sie eindeutig sind.
-
 Das Auflisten einer Datei mit トlistモ fhrt ebenso dazu, dass die Datei zur 
-
 aktuellen Datei wird.
 
-
-
 [clear]
 
-
-
 L￶scht einen Haltepunkt bei einer bestimmten Zeile oder Funktion.
-
 Beispiele:
-
   clear 87
-
     L￶scht den Haltepunkt bei Zeile 87 der aktuellen Datei.
-
   clear myapp.mxml:56
-
     L￶scht den Haltepunkt bei Zeile 56 der Datei トmyapp.mxmlモ.
-
   clear #3:29
-
     L￶scht den Haltepunkt bei Zeile 29 der Datei 3.
-
   clear doThis
-
     L￶scht den Haltepunkt bei der Funktion トdoThis()モ in der aktuellen Datei.
-
   clear myapp.mxml:doThat
-
     L￶scht den Haltepunkt bei der Funktion トdoThat()モ in der Datei トmyapp.mxmlモ.
-
   clear #3:doOther
-
     L￶scht den Haltepunkt bei der Funktion トdoOther()モ in Datei 3.
-
   clear
-
     L￶scht den Haltepunkt der aktuellen Zeile in der aktuellen Datei. 
-
 Geben Sie zum Anzeigen von Dateinamen und -nummern トinfo sourcesモ oder トinfo 
-
 filesモ ein.
-
 Geben Sie zum Anzeigen von Funktionsnamen トinfo functionsモ ein.
-
 Abgekrzte Datei- und Funktionsnamen sind zul¦ssig, wenn sie eindeutig sind.
-
 Ist die Zeilennummer angegeben, werden alle Haltepunkte in dieser Zeile 
-
 gel￶scht.
-
 Ist eine Funktion angegeben, werden die Haltepunkte am Anfang der Funktion 
-
 gel￶scht.
 
-
-
 [continue]
 
-
-
 Setzt die Ausfhrung nach dem Anhalten am Haltepunkt fort.
-
 Dieser Befehl hat keine Argumente.
 
-
-
 [condition]
 
 
-
-
-
 Gibt an, dass an Haltepunktnummer N nur dann angehalten wird, wenn COND wahr ist.
-
 Die Verwendung des Befehls erfolgt in der Form トcondition N CONDモ, wobei N fr 
-
 eine Ganzzahl und COND fr einen Ausdruck steht, der bei jedem Erreichen von 
-
 Haltepunkt N ausgewertet werden muss.
 
-
-
 [commands]
 
-
-
 Legt fest, dass Befehle bei Erreichen eines Haltepunkts ausgefhrt werden.
-
 Geben Sie die Haltepunktnummer als Argument nach トcommandsモ ein.
-
 Ist kein Argument vorhanden, ist der Zielhaltepunkt der letzte gesetzte 
-
 Haltepunkt.
-
 Die Befehle selbst folgen ab Beginn der n¦chsten Zeile.
-
 Geben Sie eine Zeile ein, die die Zeichenfolge トendモ enth¦lt, um das Ende der 
-
 Befehle anzuzeigen.
-
 Geben Sie fr einen automatischen Haltepunkt トsilentモ als erste Zeile an. 
-
 In diesem Fall erfolgt bei Erreichen des Haltepunkts keine Ausgabe au￟er 
-
 derjenigen der Befehle.
-
 Beispiel:
-
   (fdb) commands
-
   Geben Sie Befehle fr das Erreichen von Haltepunkt 1 ein (einen pro Zeile).
-
   Beenden Sie die Folge der Befehle mit einer Zeile, in der einfach nur トendモ 
-
   steht.
-
   >w
-
   >end
 
-
-
 [delete]
 
-
-
 L￶scht einen oder mehrere Haltepunkte.
-
 Beispiele:
-
   delete
-
     L￶scht alle Haltepunkte.
-
   delete 2 5
-
     L￶scht die Haltepunkte 2 und 5.
-
 Geben Sie zum Anzeigen von Haltepunktnummern トinfo breakpointsモ ein.
 
-
-
 [directory]
 
-
-
 ᅣndert die Liste der Ordner, in denen FDB nach Quelldateien sucht.
 
-
-
 Beispiele:
 
-
-
   directory
-
     Stellt den Standard fr die Liste wieder her. Dies ist der Ordner, in dem 
-
     die Quelldatei in Objektcode kompiliert wurde, gefolgt vom aktuellen 
-
     Arbeitsordner.
 
-
-
   directory C:\MySource        (Windows)
-
   directory /MySource          (Mac)
-
     Fgt den angegebenen Ordner am Anfang der Liste der Ordner, die nach der 
-
     Quelle durchsucht werden, hinzu.  Bei der Suche nach der Quelle fr die 
-
     Klasse トmypackage.MyClassモ sucht der Debugger beispielsweise sowohl nach 
-
     トC:\MySource\mypackage\MyClass.asモ als auch nach トC:\MySource\MyClass.asモ.
 
-
-
   directory C:\Dir1;C:\Dir2    (Windows ヨ verwenden Sie ト;モ als Trennzeichen)
-
   directory /Dir1:/Dir2        (Mac ヨ verwenden Sie ト;モ als Trennzeichen)
-
     Fgt mehrere Ordner am Anfang der Liste der Ordner, die nach der Quelle 
-
     durchsucht werden, hinzu.
 
-
-
 Geben Sie zum Anzeigen einer aktuellen Liste トshow directoriesモ ein.
 
-
-
 [disable]
 
-
-
 Deaktiviert einen oder mehrere Haltepunkte oder automatisch angezeigte 
-
 Ausdrcke.
-
 Beispiele:
-
   disable
-
   disable breakpoints
-
     Deaktiviert alle Haltepunkte.
-
   disable 2 5
-
   disable breakpoints 2 5
-
     Deaktiviert die Haltepunkte 2 und 5.
-
   disable display
-
     Deaktiviert alle automatisch angezeigten Ausdrcke.
-
   disable display 1 3
-
     Deaktiviert die automatisch angezeigten Ausdrcke 1 und 3.
-
 Geben Sie zum Anzeigen von Haltepunktnummern トinfo breakpointsモ ein.
-
 Geben Sie zum Anzeigen der Nummern von automatisch angezeigten Ausdrcken トinfo 
-
 displayモ ein.
 
-
-
 [disassemble]
 
-
-
 (Nur ActionScript 2; nicht untersttzt beim Debugging von ActionScript 3)
 
-
-
 Disassembliert einen bestimmten Teil des Quellcodes.
-
 Standardm¦￟ig ist dies die aktuelle Listenzeile.
-
 Die untersttzten Argumente sind identisch mit denjenigen des Listenbefehls.
-
 Beispiele:
-
   disassemble 87
-
     Disassembliert Zeile 87 in der aktuellen Datei.
-
   disassemble 87 102
-
     Disassembliert Zeile 87 bis 102 in der aktuellen Datei.
-
   disassemble doThis
-
       Disassembliert die Funktion トdoThis()モ in der aktuellen Datei.
-
 ᅵber die oben dargestellte Verwendung einfacher Zeilennummern hinaus k￶nnen Sie 
-
 Zeilen auch auf andere Arten angeben:
-
    myapp.mxml
-
       Zeile 1 in トmyapp.mxmlモ.
-
    myapp.mxml:doThat
-
       Die erste Zeile der Funktion トdoThat()モ in トmyapp.mxmlモ.
-
    myapp.mxml:56
-
       Zeile 56 in トmyapp.mxmlモ.
-
    #3
-
       Zeile 1 in Datei 3.
-
    #3:doOther
-
       Die Zeile in Datei 3, in der die Funktion トdoOther()モ beginnt.
-
    #3:29
-
       Zeile 29 in Datei 3.
 
-
-
 [display]
 
-
-
 Fgt der Liste automatisch angezeigter Ausdrcke einen Ausdruck hinzu.
-
 Beispiel:
-
   display employee.name
-
     Fgt der Liste automatisch angezeigter Ausdrcke トemployee.nameモ hinzu.
-
     Bei jedem Anhalten von FDB wird der Wert von トemployee.nameモ angezeigt.
-
 Das Argument fr diesen Befehl ¦hnelt demjenigen fr トprintモ.
-
 Geben Sie zum Anzeigen der Liste automatisch angezeigter Ausdrcke und ihrer 
-
 Nummern トinfo displayモ ein.
 
-
-
 [down]
 
-
-
 W¦hlt den Stapelrahmen aus, der von diesem aufgerufen wurde, und gibt ihn aus.
-
 Die darauf folgenden Befehle トinfo argumentsモ und トinfo localsモ zeigen die 
-
 lokalen Variablen und Argumente des ausgew¦hlten Rahmens an.
-
 Weitere Informationen finden Sie unter トupモ und トframeモ. 
 
-
-
 [enable]
 
-
-
 Aktiviert einen oder mehrere Haltepunkte oder automatisch angezeigte Ausdrcke.
-
 Beispiele:
-
   enable
-
   enable breakpoints
-
     Aktiviert alle Haltepunkte.
-
   enable 2 5
-
   enable breakpoints 2 5
-
     Aktiviert die Haltepunkte 2 und 5.
-
   enable display
-
     Aktiviert alle automatisch angezeigten Ausdrcke.
-
   enable display 1 3
-
     Aktiviert die automatisch angezeigten Ausdrcke 1 und 3.
-
 Geben Sie zum Anzeigen von Haltepunktnummern トinfo breakpointsモ ein.
-
 Geben Sie zum Anzeigen der Nummern von automatisch angezeigten Ausdrcken トinfo 
-
 displayモ ein.
 
-
-
 [file]
 
-
-
 Gibt eine Anwendung an, fr die ein Debugging durchgefhrt werden soll, ohne 
-
 sie zu starten.
-
 Beispiele:
-
   file http://www.mysite.com/myapp.mxml
-
     Gibt eine MXML-Anwendung an, fr die ein Debugging erfolgen soll.
-
   file myapp.swf
-
     Gibt eine lokale SWF-Datei im aktuellen Ordner an, fr die ein Debugging 
-
     erfolgen soll.
-
     In diesem Fall muss auch トmyapp.swdモ (die Datei mit den 
-
     Debugging-Informationen) im aktuellen Ordner vorhanden sein.
-
 Dieser Befehl bewirkt nicht, dass die Anwendung gestartet wird. Verwenden Sie 
-
 den トrunモ-Befehl ohne Argument, um das Debugging der Anwendung zu starten.
-
 Statt die Befehle トfile <Ziel>モ und dann トrunモ zu verwenden, k￶nnen Sie einfach 
-
 die Anwendung, fr die ein Debugging erfolgen soll, als Argument von トrunモ 
-
 angeben:
-
   run http://mysite.com/myapp.mxml
-
   run myapp.swf
-
 Sie k￶nnen die Anwendung, fr die das Debugging erfolgen soll, auch beim 
-
 Starten von FDB als Befehlszeilenargument angeben:
-
   fdb http://www.mysite.com/myapp.mxml
-
   fdb myapp.swf
-
 In diesem Fall brauchen Sie トfileモ oder トrunモ nicht zu verwenden.
-
 Wenn Sie トrunモ ohne Angabe einer Anwendung, fr die ein Debugging erfolgen 
-
 soll, verwenden, wartet FDB, bis eine Verbindung zu einer beliebigen Anwendung 
-
 hergestellt wird.
 
-
-
 [finish]
 
-
-
 Fhrt den Befehl aus, bis die aktuelle Funktion die Kontrolle an das Programm 
-
 zurckgibt.
-
 Dieser Befehl hat keine Argumente.
 
-
-
 [frame]
 
-
-
 W¦hlt einen bestimmten Stapelrahmen aus und gibt ihn aus.
-
 Dieser Befehl hat als optionales Argument eine Rahmennummer.
-
 Ist kein Argument angegeben, kehrt die Anwendung standardm¦￟ig zum Rahmen der 
-
 obersten Ebene (frame 0) zurck
-
 Beispiele:
-
   frame 4
-
   frame
-
 Die darauf folgenden Befehle トinfo argumentsモ und トinfo localsモ zeigen die 
-
 lokalen Variablen und Argumente des ausgew¦hlten Rahmens an.
-
 Weitere Informationen finden Sie unter トupモ, トdownモ und トbtモ. 
 
-
-
 [handle]
 
-
-
 Geben Sie an, wie FDB einen Fehler in Flash Player behandeln soll.
-
 Beispiele:
-
   handle recursion_limit stop
-
     Zeigt bei Auftreten eines recursion_limit-Fehlers eine Meldung in FDB an 
-
     und h¦lt wie bei einem Haltepunkt an.
-
   handle all print nostop
-
     Zeigt bei Auftreten einer beliebigen Art von Fehler eine Meldung in FDB an, 
-
     h¦lt jedoch nicht an.
-
 Das erste Argument ist ein Fehlername oder トallモ.
-
 Weitere Argumente sind auf diesen Fehler anzuwendende Aktionen.
-
 Geben Sie zum Anzeigen von Fehlernamen トinfo handleモ ein.
-
 Gltige Aktionen sind: print/noprint und stop/nostop.
-
 トprintモ bedeutet, dass eine Meldung ausgegeben wird, wenn dieser Fehler 
-
 auftritt.
-
 トstopモ bedeutet, dass der Debugger erneut aufgerufen wird, wenn dieser Fehler 
-
 auftritt. Dies impliziert トprintモ.
 
-
-
 [help]
 
-
-
 Sie kennen FDB noch nicht? Um grundlegende Informationen zu erhalten, geben Sie 
-
 トtutorialモ ein.
-
 Liste der FDB-Befehle:
-
 bt (bt)             Gibt die Ablaufverfolgung aller Stapelrahmen aus.
-
 break (b)           Setzt bei einer bestimmten Zeile oder Funktion einen 
-
                     Haltepunkt.
-
 catch (ca)          H¦lt bei Ausgabe einer Ausnahmebedingung an
-
 cf (cf)             Zeigt den Namen und die Nummer der aktuellen Datei an
-
 clear (cl)          L￶scht einen Haltepunkt bei einer bestimmten Zeile oder 
-
                     Funktion
-
 condition (cond)    Wendet Bedingungsausdruck auf einen Haltepunkt an bzw. 
-
                     entfernt ihn von einem Haltepunkt.
-
 continue (c)        Setzt die Ausfhrung nach dem Anhalten am Haltepunkt fort.
-
 commands (com)      Legt Befehle fest, die bei Erreichen eines Haltepunkts 
-
                     ausgefhrt werden sollen.
-
 delete (d)          L￶scht Haltepunkte oder automatisch angezeigte Ausdrcke
-
 directory (dir)     Fgt dem Suchpfad fr Quelldateien einen Ordner hinzu.
-
 disable (disab)     Deaktiviert Haltepunkte oder automatisch angezeigte 
-
                     Ausdrcke
-
 disassemble (disas) Disassembliert Quellzeilen oder Funktionen
-
 display (disp)      Fgt automatisch angezeigte Ausdrcke hinzu
-
 enable (e)          Aktiviert Haltepunkte oder automatisch angezeigte Ausdrcke
-
 file (fil)          Gibt eine Anwendung an, fr die ein Debugging erfolgen soll
-
 finish (f)          Fhrt den Befehl aus, bis die aktuelle Funktion die 
-
                     Kontrolle an das Programm zurckgibt
-
 handle (han)        Gibt an, wie ein Fehler verarbeitet werden soll
-
 help (h)            Zeigt Hilfe zu den FDB-Befehlen an
-
 home (ho)           Legt die Listenposition auf die Position fest, an der die 
-
                     Ausfhrung angehalten wird
-
 info (i)            Zeigt Informationen zu dem Programm an, fr das das 
-
                     Debugging erfolgt
-
 kill (k)            Beendet die Ausfhrung des Programms, fr das das Debugging 
-
                     erfolgt
-
 list (l)            Fhrt die angegebene Funktion oder Zeile in einer Liste auf
-
 next (n)            Durchl¦uft das Programm schrittweise (Step)
-
 print (p)           Gibt den Wert der Variablen トEXPモ aus.
-
 pwd (pw)            Gibt den Arbeitsordner aus.
-
 quit (q)            Beendet FDB
-
 run (r)             Startet das Programm, fr das das Debugging erfolgen soll
-
 set (se)            Legt den Wert einer Variablen fest
-
 source (so)         Liest FDB-Befehle aus einer Datei
-
 step (s)            Durchl¦uft das Programm schrittweise (Step) bis zum 
-
                     Erreichen einer anderen Quellzeile
-
 tutorial (t)        Zeigt eine ᅵbung zur Verwendung von FDB an
-
 undisplay (u)       Entfernt einen automatisch angezeigten Ausdruck
-
 viewswf (v)         Legt einen Filter fr eine Dateiliste basierend auf dem 
-
                     SWF-Format fest oder l￶scht einen solchen Filter.
-
 watch (wa)          Fgt einen Beobachtungspunkt fr eine gegebene Variable 
-
                     hinzu
-
 what (wh)           Zeigt den Kontext einer Variablen an
-
 where (w)           Bewirkt dasselbe wie トbtモ
-
 Geben Sie トhelpモ gefolgt vom Namen des Befehls ein, wenn Sie die vollst¦ndige 
-
 Dokumentation zum entsprechenden Befehl erhalten m￶chten.
 
-
-
 [home]
 
-
-
 Legt die Listenposition auf die Position fest, an der die Ausfhrung angehalten 
-
 wird.
 
-
-
 [info]
 
-
-
 Generischer Befehl zum Anzeigen von Informationen ber das Programm, fr das 
-
 das Debugging erfolgt.
-
 Liste der untergeordneten トinfoモ-Befehle:
-
 info arguments (i a)    Argumentvariablen des aktuellen Stapelrahmens
-
 info breakpoints (i b)  Status der vom Benutzer einstellbaren Haltepunkte
-
 info display (i d)      Anzeige einer Liste der automatisch angezeigten Ausdrcke
-
 info files (i f)        Namen der Ziele und Dateien, fr die ein Debugging erfolgt
-
 info functions (i fu)   Alle Funktionsnamen
-
 info handle (i h)       Information zur Verarbeitung von Fehlern
-
 info locals (i l)       Lokale Variablen des aktuellen Stapelrahmens
-
 info scopechain (i sc)  Bereichskette des aktuellen Stapelrahmens
-
 info sources (i so)     Quelldateien im Programm
-
 info stack (i s)        Ablaufverfolgung des Stapels
-
 info swfs (i sw)        Liste von SWF-Dateien in dieser Sitzung
-
 info targets(i t)       Anwendung, fr die das Debugging erfolgt
-
 info variables (i v)    Alle Namen der globalen und statischen Variablen
-
 Geben Sie トhelp infoモ gefolgt vom Namen eines untergeordneten トinfoモ-Befehls 
-
 ein, um die vollst¦ndige Dokumentation zum entsprechenden Befehl zu erhalten.
 
-
-
 [info arguments]
 
-
-
 Zeigt die Argumente des aktuellen Stapelrahmens an.
 
-
-
 [info breakpoints]
 
-
-
 Zeigt den Status aller Halte- und Beobachtungspunkte an.
-
 Die Type-Spalte zeigt einen der folgenden beiden Typen an:
-
    breakpoint   - Normaler Haltepunkt
-
    watchpoint   - Beobachtungspunkt
-
 Die Disp-Spalte enth¦lt entweder トkeepモ, トdelモ oder トdisモ, um anzuzeigen, was 
-
 mit dem Haltepunkt geschehen soll, nachdem er erreicht wurde. トdisモ bedeutet, 
-
 dass der Haltepunkt deaktiviert wird, und トdelモ bedeutet, dass er gel￶scht wird.
-
 Die Spalten トAddressモ und トWhatモ zeigen die Adresse bzw. die Datei- oder 
-
 Zeilennummer an. 
 
-
-
 [info display]
 
-
-
 Zeigt eine Liste der automatisch angezeigten Ausdrcke und ihrer Nummern an.
 
-
-
 [info files]
 
-
-
 Zeigt Dateinamen und -nummern der Anwendung an, fr die das Debugging erfolgen 
-
 soll. Es handelt sich um Quelldateien, Frameworkdateien und automatisch 
-
 generierte Dateien.
-
 Beispiele:
-
   info files
-
     Listet alle Dateien in alphabetischer Reihenfolge und nach Kategorie auf.
-
   info files my
-
   info files my*
-
     Listet alle Dateien, deren Name mit トmyモ beginnt, in alphabetischer 
-
     Reihenfolge auf.
-
   info files *.as
-
     Listet alle Dateien, deren Name mit ト.asモ endet, in alphabetischer 
-
     Reihenfolge auf.
-
   info files *foo*
-
     Listet alle Dateien, deren Name トfooモ enth¦lt, in alphabetischer 
-
     Reihenfolge auf. 
-
 Dateien werden im Format トName#Nモ angezeigt, wobei トNモ fr die Dateinummer 
-
 steht.
-
 Bei vielen Befehlen k￶nnen Sie statt eines Dateinamens ト#Nモ verwenden.
 
-
-
 [info functions]
 
-
-
 Zeigt Funktionsnamen an.
-
 Beispiele:
-
   info functions .
-
     Zeigt alle Funktionen in der aktuellen Datei an.
-
   info functions myapp.mxml
-
     Zeigt alle Funktionen in トmyapp.mxmlモ an.
-
   info functions #3
-
     Zeigt alle Funktionen in Datei 3 an.
-
   info functions
-
     Zeigt alle Funktionen in allen Dateien an.
-
 Geben Sie zum Anzeigen von Dateinamen und -nummern トinfo sourcesモ oder トinfo 
-
 filesモ ein.
-
 Abgekrzte Dateinamen sind zul¦ssig, wenn sie eindeutig sind.
 
-
-
 [info handle]
 
-
-
 Zeigt an, welche Aktionen FDB durchfhrt, wenn in Flash Player ein Fehler 
-
 auftritt.
-
 Beispiele:
-
   info handle
-
     Zeigt an, wie FDB alle Fehler verarbeitet.
-
   info handle recursion_limit
-
     Zeigt an, wie FDB einen recursion_limit-Fehler verarbeitet.
 
-
-
 [info locals]
 
-
-
 Zeigt lokale Variablen des aktuellen Stapelrahmens an.
 
-
-
 [info scopechain]
 
-
-
 Zeigt die Bereichskette des aktuellen Stapelrahmens an.  Die Bereichskette ist 
-
 die Liste von Objekten, die durchsucht wird, wenn Flash Player versucht, einen 
-
 Symbolnamen aufzul￶sen.
 
-
-
 [info sources]
 
-
-
 Zeigt Namen und Nummern der Quelldateien der Anwendung an, fr die ein 
-
 Debugging erfolgt. Frameworkdateien und automatisch generierte Dateien sind 
-
 hierbei ausgeschlossen.
-
 Dateien werden im Format トName#Nモ angezeigt, wobei トNモ fr die Dateinummer 
-
 steht.
-
 Bei vielen Befehlen k￶nnen Sie statt eines Dateinamens ト#Nモ verwenden.
 
-
-
 [info stack]
 
-
-
 Ablaufverfolgung des Stapels.
 
-
-
 [info swfs]
 
-
-
 Zeigt SWF-Dateien an, die in der Debugging-Sitzung bekannt sind.  Weitere 
-
 Informationen dazu, wie die Dateiauflistung basierend auf den SWF-Namen 
-
 gefiltert werden kann, finden Sie beim Befehl トviewsfwモ. 
 
-
-
 [info targets]
 
-
-
 Zeigt die URL (http: oder file:) der Anwendung an, fr die das Debugging 
-
 erfolgt.
 
-
-
 [info variables]
 
-
-
 Zeigt die Namen und Werte aller globalen und statischen Variablen an.
 
-
-
 [info ?]
 
-
-
 Nicht definierter トinfoモ-Befehl. Versuchen Sie es mit トhelp infoモ.
 
-
-
 [kill]
 
-
-
 Beendet die Ausfhrung des Programms, fr das das Debugging erfolgt.
-
 Dieser Befehl hat keine Argumente.
 
-
-
 [list]
 
-
-
 Listet Codezeilen in einer Quelldatei auf.
-
 Beispiele:
-
   list
-
     Listet zehn weitere Zeilen in der aktuellen Datei nach oder in der N¦he der 
-
     vorherigen Auflistung auf.
-
   list -
-
     Listet die zehn Zeilen in der aktuellen Datei vor einer vorherigen 
-
     Auflistung auf.
-
   list 87
-
     Listet zehn Zeilen in der aktuellen Datei um die Zeile 87 herum auf.
-
   list 87 102
-
     Listet die Zeilen 87 bis 102 in der aktuellen Datei auf.
-
 ᅵber die oben dargestellte Verwendung einfacher Zeilennummern hinaus k￶nnen Sie 
-
 Zeilen auch auf sieben andere Arten angeben:
-
   doThis
-
       Die erste Zeile der Funktion トdoThis()モ in der aktuellen Datei.
-
    myapp.mxml
-
       Zeile 1 in トmyapp.mxmlモ.
-
    myapp.mxml:doThat
-
       Die erste Zeile der Funktion トdoThat()モ in トmyapp.mxmlモ.
-
    myapp.mxml:56
-
       Zeile 56 in トmyapp.mxmlモ.
-
    #3
-
       Zeile 1 in Datei 3.
-
    #3:doOther
-
       Die Zeile in Datei 3, in der die Funktion トdoOther()モ beginnt.
-
    #3:29
-
       Zeile 29 in Datei 3.
-
 Geben Sie zum Anzeigen von Dateinamen und -nummern トinfo sourcesモ oder トinfo 
-
 filesモ ein.
-
 Geben Sie zum Anzeigen von Funktionsnamen トinfo functionsモ ein.
-
 Abgekrzte Datei- und Funktionsnamen sind zul¦ssig, wenn sie eindeutig sind.
-
 Das Auflisten einer Datei fhrt dazu, dass die Datei zur aktuellen Datei wird. 
-
 (Weitere Informationen finden Sie beim Befehl トcfモ.)
 
-
-
 [next]
 
-
-
 Durchl¦uft das Programm schrittweise (Step), indem Aufrufe von untergeordneten 
-
 Routinen durchlaufen werden.
-
   next
-
     Ein Step-Vorgang.
-
   next 3
-
     3 Step-Vorg¦nge bzw. bis zum Anhalten des Programms aus einem anderen Grund.
-
 Verh¦lt sich wie der トstepモ-Befehl solange keine Aufrufe von untergeordneten 
-
 Routinen erfolgen. Ist dies der Fall, wird der Aufruf als eine Anweisung 
-
 behandelt.
 
-
-
 [print]
 
-
-
 Gibt den Wert einer Variablen oder eines Ausdrucks aus.
-
 Beispiele:
-
   print i
-
     Gibt den Wert von トiモ aus.
-
   print employee.name
-
     Gibt den Wert von トemployee.nameモ aus.
-
   print employee
-
     Gibt den Wert des Objekts トemployeeモ aus.
-
     Hierbei wird m￶glicherweise ein Wert ¦hnlich dem folgenden angezeigt: 
-
     [Object 10378].
-
   print employee.
-
     Gibt die Werte aller Eigenschaften des Objekts トemployeeモ aus.
-
   print *employee
-
     Gibt die Werte aller Eigenschaften des Objekts トemployeeモ aus.
-
     Der vorgestellte Sternoperator (*) kann alternativ zum nachgestellten 
-
     Punktoperator (.) verwendet werden.
-
   print #10378.
-
     Gibt die Werte aller Eigenschaften des Objekts 10378 aus.
-
 Zugreifbare Variablen sind diejenigen der lexikalischen Umgebung des 
-
 ausgew¦hlten Stapelrahmens sowie alle Variablen, deren Geltungsbereich global 
-
 ist oder sich ber eine ganze Datei erstreckt.
 
-
-
 [pwd]
 
-
-
 Gibt den aktuellen Arbeitsordner aus.
-
 Dies ist der Ordner, von dem aus FDB gestartet wurde. Er kann in FDB nicht 
-
 ge¦ndert werden. Das Argument fr トrunモ und トsourceモ kann relativ zu diesem 
-
 Ordner angegeben werden.
-
 Dieser Befehl hat keine Argumente.
 
-
-
 [quit]
 
-
-
 Beendet FDB.
-
 Dieser Befehl hat keine Argumente.
 
-
-
 [run]
 
-
-
 Startet eine Debugging-Sitzung.
-
 Beispiele:
-
   run http://www.mysite.com/myapp.mxml
-
     Fhrt die angegebene MXML-Anwendung aus.
-
   run myapp.swf
-
   run mydir\myapp.swf
-
   run c:\mydir\myapp.swf
-
     Fhrt die lokale SWF-Datei トmyapp.swfモ aus. Diese kann entweder relativ 
-
     zum aktuellen Ordner (siehe Befehl トpwdモ) oder mit einem absoluten Pfad 
-
     angegeben werden. In diesen F¦llen muss auch トmyapp.swdモ (die Datei mit den 
-
     Debugging-Informationen) im selben Ordner wie トmyapp.swf モvorhanden sein.
-
   run
-
     Fhrt die zuvor ber den Befehl トfileモ angegebene Anwendung aus.
-
     Wurde keine Anwendung angegeben, wartet FDB darauf, dass eine Anwendung 
-
     eine entsprechende Verbindung herstellt. Geschieht dies nicht innerhalb 
-
     angemessener Zeit, tritt eine Zeitberschreitung auf.
-
 トrunモ startet die Anwendung in einem Browser oder einem eigenst¦ndigen Flash 
-
 Player.
-
 Sobald die Anwendung gestartet wird, erfolgt eine Unterbrechung in FDB, sodass 
-
 Sie Haltepunkte setzen k￶nnen usw.
 
-
-
 Unter Macintosh ist die einzige untersttzte Form dieses Befehls トrunモ ohne 
-
 Argumente.  Sie mssen Flash Player dann manuell starten.
 
-
-
 [set]
 
-
-
 Legt den Wert einer Variablen oder Convenience-Variablen fest.
-
 Convenience-Variablen sind Variablen, die vollst¦ndig in FDB vorhanden sind. 
-
 Sie sind nicht Teil Ihres Programms.
-
 Convenience-Variablen weisen ein vorangestelltes Dollarzeichen ($) auf und 
-
 k￶nnen einen beliebigen Namen haben, wenn dieser keinen Konflikt mit einem 
-
 vorhandenen Variablennamen verursacht.  Beispiel: $myVar.  
-
 Convenience-Variablen werden auch zur Steuerung verschiedener Aspekte von FDB 
-
 verwendet.  
 
-
-
 FDB verwendet folgende Convenience-Variablen:
-
 $listsize          - Anzahl der anzuzeigenden Quellzeilen fr トlistモ
-
 $columnwrap        - Nummer der Spalte, bei der die Ausgabe umbrochen werden 
-
                      soll
-
 $infostackshowthis - Wenn 0, wird トthisモ nicht in der Stapelablaufverfolgung 
-
                      angezeigt
-
 $invokegetters     - Wenn 0, verhindert dies, dass FDB Getter-Funktionen ausl￶st
-
 $bpnum             - Die Nummer des letzten definierten Haltepunkts
-
 $displayattributes - Wenn 1, zeigt トprint var.モ alle Attribute der Mitglieder 
-
 von トvarモ an (z.ᅠB. トprivateモ, トstaticモ)
 
-
-
 Beispiele:
-
   set i = 3
-
     Legt die Variable トiモ auf die Zahl 3 fest.
-
   set employee.name = "Susan"
-
     Legt die Variable トemployee.nameモ auf die Zeichenfolge トSusanモ fest.
-
   set $myVar = 20
-
     Legt die Convenience-Variable ト$myVarモ auf die Zahl 20 fest.
 
-
-
 [show]
 
-
-
 Generischer Befehl zum Anzeigen von Informationen zum Status von FDB.
-
 Liste der untergeordneten トshowモ-Befehle:
-
 show break (sh b)       Position und Ursache der Ausfhrungsunterbrechung
-
 show directories (sh d) Nach Quelldateien zu durchsuchende Ordner
-
 show files (sh f)       Zieldateien und -pfade
-
 show functions (sh fu)  Informationen ber die Zuordnung von Funktion und Zeile 
-
 show locations (sh l)   Haltepunktpositionen
-
 show memory (sh m)      Aktuelle Speichernutzung
-
 show net (sh n)         Meldungsstatistiken fr den Player 
-
 show properties (sh p)  Werte der Eigenschaften
-
 show uri (sh u)         Player-URI fr diese Sitzung 
-
 show variable (sh v)    Abrufen der unformatierten Variablen
-
 Geben Sie トhelp showモ gefolgt vom Namen eines untergeordneten トshowモ-Befehls 
-
 ein, um die vollst¦ndige Dokumentation zum entsprechenden Befehl zu erhalten.
 
-
-
 [show break]
 
-
-
 Zeigt den Versatz innerhalb der SWF-Datei an, bei dem das Programm angehalten 
-
 wurde.
 
-
-
 [show directories]
 
-
-
 Zeigt den aktuellen Suchpfad zum Auffinden von Quelldateien an.
 
-
-
 [show files]
 
-
-
 Zeigt Pfad- und Dateinamen fr alle Zieldateien an.
 
-
-
 [show functions]
 
-
-
 Zeigt Informationen fr die Zuordnung von Funktion und Zeilennummer an.
-
 Beispiele:
-
   show functions .
-
     Zeigt Zuordnungsinformationen fr alle Funktionen in der aktuellen Datei an.
-
   show functions myapp.mxml
-
     Zeigt Zuordnungsinformationen fr alle Funktionen in トmyapp.mxmlモ an.
-
   show functions #3
-
     Zeigt Zuordnungsinformationen fr alle Funktionen in Datei 3 an.
-
   show functions
-
     Zeigt Zuordnungsinformationen fr alle Funktionen in allen Dateien an.
-
 Geben Sie zum Anzeigen von Dateinamen und -nummern トinfo sourcesモ oder トinfo 
-
 filesモ ein.
-
 Abgekrzte Dateinamen sind zul¦ssig, wenn sie eindeutig sind.
 
-
-
 [show locations]
 
-
-
 Zeigt eine Liste der Positionen an, die fr jeden Haltepunkt festgelegt wurden.
 
-
-
 [show memory]
 
-
-
 Zeigt Java VM-Speicherstatistiken an.
 
-
-
 [show net]
 
-
-
 Zeigt Informationen zu Meldungen an, die an Flash Player gesendet oder von 
-
 Flash Player empfangen wurden.
 
-
-
 [show properties]
 
-
-
 Zeigt eine Liste der im Debugger verwendeten Convenience-Variablen an. 
 
-
-
 [show uri]
 
-
-
 Zeigt die URI an, die der Player fr diese Sitzung gesendet hat.
 
-
-
 [show variable]
 
-
-
 Zeigt den Wert eines Mitglieds einer Variablen an.  Es sind zwei Parameter 
-
 erforderlich: der erste ist die numerische Variablen-ID, der zweite ist der 
-
 Name der Eigenschaft fr die Variable.  Die Convenience-Variable 
-
 ト$invokegettersモ ermittelt, ob die Getter-Funktion fr Eigenschaften, sofern 
-
 vorhanden, ausgel￶st wird.
-
 Beispiel:
-
     show variable 1 __proto__
 
-
-
 [show ?]
 
-
-
 Nicht definierter トshowモ-Befehl. Versuchen Sie es mit トhelp showモ.
 
-
-
 [source]
 
-
-
 Liest FDB-Befehle aus einer Datei und fhrt sie aus.
-
   source mycommands.txt
-
   source mydir\mycommands.txt
-
   source c:\mydir\mycommands.txt
-
     Liest トmycommands.txtモ und fhrt die FDB-Befehle darin aus.
-
     Die Datei mit den Befehlen kann entweder
-
 	relativ zum aktuellen Ordner (siehe Befehl トpwdモ)
-
 	oder mit einem absoluten Pfad angegeben werden.
-
 Die Datei .fdbinit wird beim Starten von FDB automatisch in dieser Weise 
-
 gelesen.
-
 Nur der aktuelle Ordner wird nach .fdbinit durchsucht. Dies bedeutet, dass das 
-
 Einrichten mehrerer .fdbinit-Dateien fr verschiedene Projekte zul¦ssig ist.
 
-
-
 [step]
 
-
-
 Durchl¦uft das Programm schrittweise (Step) bis zum Erreichen einer anderen 
-
 Quellzeile
-
 Beispiele:
-
   step
-
     Ein Step-Vorgang.
-
   step 3
-
     3 Step-Vorg¦nge bzw. bis zum Anhalten des Programms aus einem anderen Grund.
 
-
-
 [tutorial]
 
-
-
 Zeigt eine ᅵbung zur Verwendung von FDB an.
-
 Dieser Befehl hat keine Argumente.
 
-
-
 [Tutorial]
 
-
-
 Eine typische FDB-Sitzung:
-
 Starten einer Anwendung mit トrunモ
-
 Anzeigen von Dateinamen mit トinfo sourcesモ
-
 Auflisten einer Datei mit トlistモ
-
 Setzen von Haltepunkten mit トbreakモ
-
 Ausfhren des Programms mit トcontinueモ bis zum Erreichen eines Haltepunkts
-
 ᅵberprfen des Programmstatus mit トwhereモ, トprintモ und トinfo localsモ
-
 Ausfhren einzelner Anweisungen mit トnextモ, トstepモ und トfinishモ
-
 Fortsetzen der Ausfhrung mit トcontinueモ
-
 Beenden von FDB mit トquitモ
 
-
-
 [undisplay]
 
-
-
 Entfernt mindestens einen automatisch angezeigten Ausdruck.
-
 Beispiele:
-
   undisplay
-
     Entfernt alle automatisch angezeigten Ausdrcke.
-
   undisplay 2 7
-
     Entfernt die automatisch angezeigten Ausdrcke 2 und 7.
-
 Geben Sie zum Anzeigen der Liste automatisch angezeigter Ausdrcke und ihrer 
-
 Nummern トinfo displayモ ein.
 
-
-
 [up]
 
-
-
 W¦hlt den Stapelrahmen aus, der diesen aufgerufen hat, und gibt ihn aus.
-
 Die darauf folgenden Befehle トinfo argumentsモ und トinfo localsモ zeigen die 
-
 lokalen Variablen und Argumente des ausgew¦hlten Rahmens an.
-
 Weitere Informationen finden Sie unter トdownモ und トframeモ.
 
-
-
 [viewswf]
 
-
-
 Legt einen Filter fr eine Dateiliste (d.ᅠh. トinfo filesモ und トinfo sourcesモ) 
-
 basierend auf dem SWF-Namen fest oder l￶scht einen solchen Filter. 
-
 Sind keine Parameter eingestellt, werden alle Dateien angezeigt.  Ist dieselbe 
-
 Datei in einer oder mehreren SWF-Dateien vorhanden, zeigt die Liste nur die 
-
 erste Instanz der Datei an.  Verwenden Sie fr den Zugriff auf weitere 
-
 Instanzen der Datei die Nummer der Datei (z.ᅠB. トlist #192モ). Sie k￶nnen den 
-
 hier beschriebenen Befehl auch in Verbindung mit einem Parameter (siehe unten) 
-
 zum Anzeigen von Dateien einer bestimmten SWF-Datei benutzen.  Ist nur ein 
-
 Parameter angegeben (der durch den Befehl トinfo swfsモ angezeigte Name der 
-
 SWF-Datei), dann werden in der Dateiliste nur die Dateien aus der angegebenen 
-
 SWF-Datei aufgefhrt.  
-
 Dateien von anderen SWF-Dateien werden nicht angezeigt.  Dieser Befehl betrifft 
-
 auch Befehle, die eine Datei als Parameter akzeptieren (z.ᅠB. トbreakモ).
-
 Beispiel:
-
   viewswf myApp.mxml.swf
-
     Es werden nur Dateien aus トmyApp.mxml.swfモ angezeigt.
-
   viewswf 
-
     Es werden alle Dateien aus allen SWF-Dateien angezeigt.
-
  
-
 [watch]
 
-
-
 Fgt einen Beobachtungspunkt fr eine gegebene Variable hinzu. Die Ausfhrung 
-
 des Debuggers wird angehalten, wenn sich der Wert der entsprechenden Variablen 
-
 ¦ndert.
-
 Beispiel:
-
   watch foo
 
-
-
 [what]
 
-
-
 Zeigt den Kontext an, in dem eine Variable aufgel￶st wird. 
 
-
-
 [where]
 
-
-
 Ablaufverfolgung des Stapels.
 
-
-
 [zzz]
 
-
-
 ((( Keep this unused topic at the end of the file    )))
-
 ((( so that the next-to-last one is parsed properly. )))
-


[09/15] FLEX-34291: Merge the donated FDB with the current one.

Posted by ft...@apache.org.
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/DebugCLI.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/DebugCLI.java b/modules/debugger/src/java/flex/tools/debugger/cli/DebugCLI.java
index 0f29cf3..6eb04ef 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/DebugCLI.java
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/DebugCLI.java
@@ -19,82 +19,12 @@
 
 package flex.tools.debugger.cli;
 
-import java.io.BufferedReader;
-import java.io.ByteArrayOutputStream;
-import java.io.EOFException;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.LineNumberReader;
-import java.io.PrintStream;
-import java.io.StringReader;
-import java.net.SocketException;
-import java.net.SocketTimeoutException;
-import java.text.NumberFormat;
-import java.text.ParseException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.NoSuchElementException;
-import java.util.Properties;
-import java.util.Set;
-import java.util.Stack;
-import java.util.StringTokenizer;
-import java.util.Vector;
-
+import com.sun.org.apache.xml.internal.utils.LocaleUtility;
 import flash.localization.LocalizationManager;
-import flash.tools.debugger.Bootstrap;
-import flash.tools.debugger.DebuggerLocalizer;
-import flash.tools.debugger.Frame;
-import flash.tools.debugger.InProgressException;
-import flash.tools.debugger.Location;
-import flash.tools.debugger.NoResponseException;
-import flash.tools.debugger.NotConnectedException;
-import flash.tools.debugger.NotSupportedException;
-import flash.tools.debugger.NotSuspendedException;
-import flash.tools.debugger.PlayerDebugException;
-import flash.tools.debugger.Session;
-import flash.tools.debugger.SessionManager;
-import flash.tools.debugger.SourceFile;
-import flash.tools.debugger.SourceLocator;
-import flash.tools.debugger.SuspendReason;
-import flash.tools.debugger.SuspendedException;
-import flash.tools.debugger.SwfInfo;
-import flash.tools.debugger.Value;
-import flash.tools.debugger.Variable;
-import flash.tools.debugger.VariableAttribute;
-import flash.tools.debugger.VariableType;
-import flash.tools.debugger.VersionException;
-import flash.tools.debugger.Watch;
-import flash.tools.debugger.WatchKind;
+import flash.tools.debugger.*;
 import flash.tools.debugger.concrete.DProtocol;
 import flash.tools.debugger.concrete.DSwfInfo;
-import flash.tools.debugger.events.BreakEvent;
-import flash.tools.debugger.events.ConsoleErrorFault;
-import flash.tools.debugger.events.DebugEvent;
-import flash.tools.debugger.events.DivideByZeroFault;
-import flash.tools.debugger.events.ExceptionFault;
-import flash.tools.debugger.events.FaultEvent;
-import flash.tools.debugger.events.FileListModifiedEvent;
-import flash.tools.debugger.events.FunctionMetaDataAvailableEvent;
-import flash.tools.debugger.events.InvalidTargetFault;
-import flash.tools.debugger.events.InvalidURLFault;
-import flash.tools.debugger.events.InvalidWithFault;
-import flash.tools.debugger.events.ProtoLimitFault;
-import flash.tools.debugger.events.RecursionLimitFault;
-import flash.tools.debugger.events.ScriptTimeoutFault;
-import flash.tools.debugger.events.StackUnderFlowFault;
-import flash.tools.debugger.events.SwfLoadedEvent;
-import flash.tools.debugger.events.SwfUnloadedEvent;
-import flash.tools.debugger.events.TraceEvent;
+import flash.tools.debugger.events.*;
 import flash.tools.debugger.expression.ECMA;
 import flash.tools.debugger.expression.NoSuchVariableException;
 import flash.tools.debugger.expression.PlayerFaultException;
@@ -102,6440 +32,6088 @@ import flash.tools.debugger.expression.ValueExp;
 import flash.util.FieldFormat;
 import flash.util.Trace;
 import flex.tools.debugger.cli.ExpressionCache.EvaluationResult;
+import flex.tools.debugger.cli.FaultActions.FaultActionsBuilder;
+
+import java.io.*;
+import java.net.SocketException;
+import java.net.SocketTimeoutException;
+import java.text.NumberFormat;
+import java.text.ParseException;
+import java.util.*;
 
 /**
  * This is a front end command line interface to the Flash Debugger
  * Player.
- *<p>
- * This tool utilizes the Debugger Java API (DJAPI) for Flash 
+ * <p/>
+ * This tool utilizes the Debugger Java API (DJAPI) for Flash
  * Player that exists in flash.tools.debuggger.
- *<p> 
+ * <p/>
  * This tool is not completely compliant with the API, since
  * some commands expose implementation specific information for
  * debugging purposes.  Instances where this occurs are kept to a
- * minimum and are isolated in a special class called Extensions.  
- * If you wish to build a version that is completely API 
- * compatible.  Replace Extensions with ExtensionsDisabled in 
- * the static method calls at the end of this file. 
+ * minimum and are isolated in a special class called Extensions.
+ * If you wish to build a version that is completely API
+ * compatible.  Replace Extensions with ExtensionsDisabled in
+ * the static method calls at the end of this file.
  */
-public class DebugCLI implements Runnable, SourceLocator
-{
-	public static final String VERSION			= "82"; //$NON-NLS-1$
-
-	public static final int CMD_UNKNOWN			= 0;
-	public static final int CMD_QUIT			= 1;
-	public static final int CMD_CONTINUE		= 2;
-	public static final int CMD_STEP			= 3;
-	public static final int CMD_NEXT			= 4;
-	public static final int CMD_FINISH			= 5;
-	public static final int CMD_BREAK			= 6;
-	public static final int CMD_SET				= 7;
-	public static final int CMD_LIST			= 8;
-	public static final int CMD_PRINT			= 9;
-	public static final int CMD_TUTORIAL		= 10;
-	public static final int CMD_INFO			= 11;
-	public static final int CMD_HOME			= 12;
-	public static final int CMD_RUN				= 13;
-	public static final int CMD_FILE			= 14;
-	public static final int CMD_DELETE			= 15;
-	public static final int CMD_SOURCE			= 16;
-	public static final int CMD_COMMENT			= 17;
-	public static final int CMD_CLEAR			= 18;
-	public static final int CMD_HELP			= 19;
-	public static final int CMD_SHOW			= 20;
-	public static final int CMD_KILL			= 21;
-	public static final int CMD_HANDLE			= 22;
-	public static final int CMD_ENABLE			= 23;
-	public static final int CMD_DISABLE			= 24;
-	public static final int CMD_DISPLAY			= 25;
-	public static final int CMD_UNDISPLAY		= 26;
- 	public static final int CMD_COMMANDS		= 27;
-    public static final int CMD_PWD             = 28;
-    public static final int CMD_CF              = 29;
-    public static final int CMD_CONDITION		= 30;
-	public static final int CMD_AWATCH			= 31;
-	public static final int CMD_WATCH			= 32;
-	public static final int CMD_RWATCH			= 33;
-	public static final int CMD_WHAT			= 34;
-	public static final int CMD_DISASSEMBLE		= 35;
-	public static final int CMD_HALT			= 36;
-	public static final int CMD_MCTREE			= 37;
-	public static final int CMD_VIEW_SWF		= 38;
-	public static final int CMD_DOWN			= 39;
-	public static final int CMD_UP				= 40;
-	public static final int CMD_FRAME			= 41;
-	public static final int CMD_DIRECTORY		= 42;
-	public static final int CMD_CATCH			= 43;
-	public static final int CMD_CONNECT			= 44;
-
-	/* info sub commands */
-	public static final int INFO_UNKNOWN_CMD	= 100;
-	public static final int INFO_ARGS_CMD		= 101;
-	public static final int INFO_BREAK_CMD		= 102;
-	public static final int INFO_FILES_CMD		= 103;
-	public static final int INFO_HANDLE_CMD		= 104;
-	public static final int INFO_FUNCTIONS_CMD	= 105;
-	public static final int INFO_LOCALS_CMD		= 106;
-	public static final int INFO_SCOPECHAIN_CMD	= 107;
-	public static final int INFO_SOURCES_CMD	= 108;
-	public static final int INFO_STACK_CMD		= 109;
-	public static final int INFO_VARIABLES_CMD	= 110;
-	public static final int INFO_DISPLAY_CMD	= 111;
-    public static final int INFO_TARGETS_CMD    = 112;
-    public static final int INFO_SWFS_CMD		= 113;
-
-	/* show subcommands */
-	public static final int SHOW_UNKNOWN_CMD	= 200;
-	public static final int SHOW_NET_CMD		= 201;
-	public static final int SHOW_FUNC_CMD		= 202;
-	public static final int SHOW_URI_CMD		= 203;
-	public static final int SHOW_PROPERTIES_CMD	= 204;
-	public static final int SHOW_FILES_CMD		= 205;
-	public static final int SHOW_BREAK_CMD		= 206;
-	public static final int SHOW_VAR_CMD		= 207;
-	public static final int SHOW_MEM_CMD		= 208;
-	public static final int SHOW_LOC_CMD		= 209;
-	public static final int SHOW_DIRS_CMD		= 210;
-
-	/* misc subcommands */
-	public static final int ENABLE_ONCE_CMD		= 301;
+public class DebugCLI implements Runnable, SourceLocator {
+    public static final String VERSION = "82"; //$NON-NLS-1$
+
+    public static final int CMD_UNKNOWN = 0;
+    public static final int CMD_QUIT = 1;
+    public static final int CMD_CONTINUE = 2;
+    public static final int CMD_STEP = 3;
+    public static final int CMD_NEXT = 4;
+    public static final int CMD_FINISH = 5;
+    public static final int CMD_BREAK = 6;
+    public static final int CMD_SET = 7;
+    public static final int CMD_LIST = 8;
+    public static final int CMD_PRINT = 9;
+    public static final int CMD_TUTORIAL = 10;
+    public static final int CMD_INFO = 11;
+    public static final int CMD_HOME = 12;
+    public static final int CMD_RUN = 13;
+    public static final int CMD_FILE = 14;
+    public static final int CMD_DELETE = 15;
+    public static final int CMD_SOURCE = 16;
+    public static final int CMD_COMMENT = 17;
+    public static final int CMD_CLEAR = 18;
+    public static final int CMD_HELP = 19;
+    public static final int CMD_SHOW = 20;
+    public static final int CMD_KILL = 21;
+    public static final int CMD_HANDLE = 22;
+    public static final int CMD_ENABLE = 23;
+    public static final int CMD_DISABLE = 24;
+    public static final int CMD_DISPLAY = 25;
+    public static final int CMD_UNDISPLAY = 26;
+    public static final int CMD_COMMANDS = 27;
+    public static final int CMD_PWD = 28;
+    public static final int CMD_CF = 29;
+    public static final int CMD_CONDITION = 30;
+    public static final int CMD_AWATCH = 31;
+    public static final int CMD_WATCH = 32;
+    public static final int CMD_RWATCH = 33;
+    public static final int CMD_WHAT = 34;
+    public static final int CMD_DISASSEMBLE = 35;
+    public static final int CMD_HALT = 36;
+    public static final int CMD_MCTREE = 37;
+    public static final int CMD_VIEW_SWF = 38;
+    public static final int CMD_DOWN = 39;
+    public static final int CMD_UP = 40;
+    public static final int CMD_FRAME = 41;
+    public static final int CMD_DIRECTORY = 42;
+    public static final int CMD_CATCH = 43;
+    public static final int CMD_CONNECT = 44;
+    public static final int CMD_WORKER = 45;
+
+    /* info sub commands */
+    public static final int INFO_UNKNOWN_CMD = 100;
+    public static final int INFO_ARGS_CMD = 101;
+    public static final int INFO_BREAK_CMD = 102;
+    public static final int INFO_FILES_CMD = 103;
+    public static final int INFO_HANDLE_CMD = 104;
+    public static final int INFO_FUNCTIONS_CMD = 105;
+    public static final int INFO_LOCALS_CMD = 106;
+    public static final int INFO_SCOPECHAIN_CMD = 107;
+    public static final int INFO_SOURCES_CMD = 108;
+    public static final int INFO_STACK_CMD = 109;
+    public static final int INFO_VARIABLES_CMD = 110;
+    public static final int INFO_DISPLAY_CMD = 111;
+    public static final int INFO_TARGETS_CMD = 112;
+    public static final int INFO_SWFS_CMD = 113;
+    public static final int INFO_WORKERS_CMD = 114;
+
+    /* show subcommands */
+    public static final int SHOW_UNKNOWN_CMD = 200;
+    public static final int SHOW_NET_CMD = 201;
+    public static final int SHOW_FUNC_CMD = 202;
+    public static final int SHOW_URI_CMD = 203;
+    public static final int SHOW_PROPERTIES_CMD = 204;
+    public static final int SHOW_FILES_CMD = 205;
+    public static final int SHOW_BREAK_CMD = 206;
+    public static final int SHOW_VAR_CMD = 207;
+    public static final int SHOW_MEM_CMD = 208;
+    public static final int SHOW_LOC_CMD = 209;
+    public static final int SHOW_DIRS_CMD = 210;
+
+    /* misc subcommands */
+    public static final int ENABLE_ONCE_CMD = 301;
 
     // default metadata retry count 8 attempts per waitForMetadata() call * 5 calls
-    public static final int METADATA_RETRIES    = 8*5;
-
-	Stack<LineNumberReader> m_readerStack = new Stack<LineNumberReader>();
-	PrintStream m_err;
-	PrintStream m_out;
-	Session		m_session;
-	String		m_launchURI;
-	boolean		m_fullnameOption; // emacs mode
-	String		m_cdPath;
-	String		m_mruURI;
-	String m_connectPort;
-	public final static String m_newline = System.getProperty("line.separator"); //$NON-NLS-1$
-
-	private final static LocalizationManager m_localizationManager = new LocalizationManager();
-
-	List<String>	m_sourceDirectories; // List of String
-	int				m_sourceDirectoriesChangeCount;
-	private File	m_flexHomeDirectory; // <application.home>/frameworks/projects/*/src always goes in m_sourceDirectories
-	private boolean	m_initializedFlexHomeDirectory;
-
-	// context information for our current session
-	FileInfoCache	m_fileInfo;
-	ExpressionCache m_exprCache;
-	FaultActions	m_faultTable;
-	Vector<BreakAction>	        m_breakpoints;
-	Vector<WatchAction>			m_watchpoints;
-	Vector<CatchAction>			m_catchpoints;
-	ArrayList<DisplayAction>	m_displays;
-	boolean			m_requestResume;
-	boolean			m_requestHalt;
-	boolean			m_stepResume;
-
-	/* our current input processing context */
-	LineNumberReader	m_in;
-	LineNumberReader	m_keyboardStream;
-	Vector<String>		m_keyboardInput;
-	boolean				m_keyboardReadRequest;
-	StringTokenizer		m_currentTokenizer;
-	String				m_currentToken;
-	String				m_currentLine;
-	public String		m_repeatLine;
-    private boolean     m_isIde;
-
-	/**
-	 * The module that the next "list" command should display if no
-	 * module is explicitly specified.
-	 */
-	public static final String LIST_MODULE = "$listmodule"; //$NON-NLS-1$
+    public static final int METADATA_RETRIES = 8 * 5;
 
-	/**
-	 * The line number at which the next "list" command should begin if no
-	 * line number is explicitly specified.
-	 */
-	public static final String LIST_LINE = "$listline"; //$NON-NLS-1$
+    /* Enum for the state of the initial prompt shown when a swf is loaded */
+    public static enum InitialPromptState {
+        NEVER_SHOWN, SHOWN_ONCE, DONE
+    }
 
-	/**
-	 * The number of lines displayed by the "list" command.
-	 */
-	private static final String LIST_SIZE = "$listsize"; //$NON-NLS-1$
+    Stack<LineNumberReader> m_readerStack = new Stack<LineNumberReader>();
+    public PrintStream m_err;
+    public PrintStream m_out;
+    Session m_session;
+    String m_launchURI;
+    boolean m_fullnameOption; // emacs mode
+    String m_cdPath;
+    String m_mruURI;
+    String m_connectPort;
+    public final static String m_newline = System.getProperty("line.separator"); //$NON-NLS-1$
+
+    private final static LocalizationManager m_localizationManager = new LocalizationManager();
+    private final static FaultActionsBuilder faultActionsBuilder = new FaultActionsBuilder(m_localizationManager);
+
+    List<String> m_sourceDirectories; // List of String
+    int m_sourceDirectoriesChangeCount;
+    private File m_flexHomeDirectory; // <application.home>/frameworks/projects/*/src always goes in m_sourceDirectories
+    private boolean m_initializedFlexHomeDirectory;
+
+    // context information for our current session
+    FileInfoCache m_fileInfo;
+    FaultActions m_faultTable;
+    Vector<Integer> m_breakIsolates;
+    ExpressionCache m_exprCache;
+    Vector<BreakAction> m_breakpoints;
+    Vector<WatchAction> m_watchpoints;
+    Vector<CatchAction> m_catchpoints;
+    ArrayList<DisplayAction> m_displays;
+    //	boolean			m_requestResume;
+//	boolean			m_requestHalt;
+//	boolean			m_stepResume;
+    int m_activeIsolate;
+    DebugCLIIsolateState m_mainState;
+
+    /* This indicates the isolate for which we have been showing prompts for setting
+     * breakpoints( so that we don't switch worker while the user is setting breakpoints) */
+    int m_lastPromptIsolate;
+
+    private HashMap<Integer, DebugCLIIsolateState> m_isolateState;
+
+    class DebugCLIIsolateState {
+        //		public FileInfoCache	m_fileInfo;
+//		public ExpressionCache m_exprCache;
+        public boolean m_requestResume;
+        public boolean m_requestHalt;
+        public boolean m_stepResume;
+        /* Indicates whether the prompt for setting initial breakpoints has been displayed for this isolate */
+        public InitialPromptState m_promptState;
+//		public Vector<BreakAction>	        m_breakpoints;
+//		public Vector<WatchAction>			m_watchpoints;
+//		public Vector<CatchAction>			m_catchpoints;
+//		public ArrayList<DisplayAction>	m_displays;
+
+
+        public DebugCLIIsolateState(DebugCLI debugcli) {
+//			m_exprCache = new ExpressionCache(debugcli);
+            m_faultTable = faultActionsBuilder.build();//new FaultActions();
+//			m_breakpoints = new Vector<BreakAction>();
+//			m_watchpoints = new Vector<WatchAction>();
+//			m_catchpoints = new Vector<CatchAction>();
+//			m_displays = new ArrayList<DisplayAction>();
+        }
+    }
 
-	private static final String COLUMN_WIDTH = "$columnwidth"; //$NON-NLS-1$
+    private DebugCLIIsolateState getIsolateState(int isolateId) {
+        if (isolateId == Isolate.DEFAULT_ID)
+            return m_mainState;
+        DebugCLIIsolateState isolateState = null;
+        if (!m_isolateState.containsKey(isolateId)) {
+            isolateState = new DebugCLIIsolateState(this);
+            m_isolateState.put(isolateId, isolateState);
+        } else
+            isolateState = m_isolateState.get(isolateId);
+        return isolateState;
+    }
 
-	private static final String UPDATE_DELAY = "$updatedelay"; //$NON-NLS-1$
+    public int getActiveIsolateId() {
+        return m_activeIsolate;
+    }
 
-	private static final String HALT_TIMEOUT = "$halttimeout"; //$NON-NLS-1$
+    private boolean getRequestResume(int isolateId) {
+        return getIsolateState(isolateId).m_requestResume;
+    }
 
-	/**
-	 * Current breakpoint number.
-	 */
-	private static final String BPNUM = "$bpnum"; //$NON-NLS-1$
+    private void setRequestResume(boolean value, int isolateId) {
+        getIsolateState(isolateId).m_requestResume = value;
+    }
 
-	/**
-	 * Used to determine how much context information should be displayed.
-	 */
-	private static final String LAST_FRAME_DEPTH = "$lastframedepth"; //$NON-NLS-1$
+    private boolean getStepResume(int isolateId) {
+        return getIsolateState(isolateId).m_stepResume;
+    }
 
-	/**
-	 * Used to determine how much context information should be displayed.
-	 */
-	private static final String CURRENT_FRAME_DEPTH = "$currentframedepth"; //$NON-NLS-1$
+    private void setStepResume(boolean value, int isolateId) {
+        getIsolateState(isolateId).m_stepResume = value;
+    }
 
-	/**
-	 * The current frame we are viewing -- controlled by the "up", "down", and "frame" commands.
-	 */
-	public static final String DISPLAY_FRAME_NUMBER = "$displayframenumber"; //$NON-NLS-1$
+    private boolean getRequestHalt(int isolateId) {
+        return getIsolateState(isolateId).m_requestHalt;
+    }
 
-	private static final String FILE_LIST_WRAP = "$filelistwrap"; //$NON-NLS-1$
+    private void setRequestHalt(boolean value, int isolateId) {
+        getIsolateState(isolateId).m_requestHalt = value;
+    }
 
-	private static final String NO_WAITING = "$nowaiting"; //$NON-NLS-1$
+    private InitialPromptState getPromptState(int isolateId) {
+        return getIsolateState(isolateId).m_promptState;
+    }
 
-	/**
-	 * Show this pointer for info stack.
-	 */
-	private static final String INFO_STACK_SHOW_THIS = "$infostackshowthis"; //$NON-NLS-1$
+    private void setPromptState(InitialPromptState value, int isolateId) {
+        getIsolateState(isolateId).m_promptState = value;
+    }
 
-	private static final String PLAYER_FULL_SUPPORT = "$playerfullsupport"; //$NON-NLS-1$
+    /* our current input processing context */
+    LineNumberReader m_in;
+    public LineNumberReader m_keyboardStream;
+    Vector<String> m_keyboardInput;
+    boolean m_keyboardReadRequest;
+    StringTokenizer m_currentTokenizer;
+    String m_currentToken;
+    String m_currentLine;
+    public String m_repeatLine;
+    private boolean m_isIde;
 
-	/**
-	 * Whether the "print" command will display attributes of members.
-	 */
-	public static final String DISPLAY_ATTRIBUTES = "$displayattributes"; //$NON-NLS-1$
-	
-	/* class's static init */
-	static
-	{
+    /**
+     * The module that the next "list" command should display if no
+     * module is explicitly specified.
+     */
+    public static final String LIST_MODULE = "$listmodule"; //$NON-NLS-1$
+
+    /**
+     * The line number at which the next "list" command should begin if no
+     * line number is explicitly specified.
+     */
+    public static final String LIST_LINE = "$listline"; //$NON-NLS-1$
+
+    public static final String LIST_WORKER = "$listworker"; //$NON-NLS-1$
+
+    /**
+     * The number of lines displayed by the "list" command.
+     */
+    private static final String LIST_SIZE = "$listsize"; //$NON-NLS-1$
+
+    private static final String COLUMN_WIDTH = "$columnwidth"; //$NON-NLS-1$
+
+    private static final String UPDATE_DELAY = "$updatedelay"; //$NON-NLS-1$
+
+    private static final String HALT_TIMEOUT = "$halttimeout"; //$NON-NLS-1$
+
+    /**
+     * Current breakpoint number.
+     */
+    private static final String BPNUM = "$bpnum"; //$NON-NLS-1$
+
+    /**
+     * Used to determine how much context information should be displayed.
+     */
+    private static final String LAST_FRAME_DEPTH = "$lastframedepth"; //$NON-NLS-1$
+
+    /**
+     * Used to determine how much context information should be displayed.
+     */
+    private static final String CURRENT_FRAME_DEPTH = "$currentframedepth"; //$NON-NLS-1$
+
+    /**
+     * The current frame we are viewing -- controlled by the "up", "down", and "frame" commands.
+     */
+    public static final String DISPLAY_FRAME_NUMBER = "$displayframenumber"; //$NON-NLS-1$
+
+    private static final String FILE_LIST_WRAP = "$filelistwrap"; //$NON-NLS-1$
+
+    private static final String NO_WAITING = "$nowaiting"; //$NON-NLS-1$
+
+    /**
+     * Show this pointer for info stack.
+     */
+    private static final String INFO_STACK_SHOW_THIS = "$infostackshowthis"; //$NON-NLS-1$
+
+    private static final String PLAYER_FULL_SUPPORT = "$playerfullsupport"; //$NON-NLS-1$
+
+    /**
+     * Whether the "print" command will display attributes of members.
+     */
+    public static final String DISPLAY_ATTRIBUTES = "$displayattributes"; //$NON-NLS-1$
+
+    /* class's static init */
+    static {
         // set up for localizing messages
-        m_localizationManager.addLocalizer( new DebuggerLocalizer("flex.tools.debugger.cli.fdb.") ); //$NON-NLS-1$
-	}
+        m_localizationManager.addLocalizer(new DebuggerLocalizer("flex.tools.debugger.cli.fdb.")); //$NON-NLS-1$
+    }
 
-	public static void main(String[] args)
-	{
-		DebugCLI cli = new DebugCLI();
+    public static void main(String[] args) {
+        DebugCLI cli = new DebugCLI();
 
 		/* attach our 'main' input method and out/err*/
-		cli.m_err = System.err;
-		cli.m_out = System.out;
+        cli.m_err = System.err;
+        cli.m_out = System.out;
 
-		// get the default <application.home>/projects/frameworks/*/src entries into the source path
-		cli.initSourceDirectoriesList();
+        // get the default <application.home>/projects/frameworks/*/src entries into the source path
+        cli.initSourceDirectoriesList();
 
-		// a big of wrangling for our keyboard input stream since its special
-		cli.m_keyboardStream = new LineNumberReader(new InputStreamReader(System.in));
-		cli.pushStream(cli.m_keyboardStream);
+        // a big of wrangling for our keyboard input stream since its special
+        cli.m_keyboardStream = new LineNumberReader(new InputStreamReader(System.in));
+        cli.pushStream(cli.m_keyboardStream);
 
 		/* iterate through the args list */
-		cli.processArgs(args);
+        cli.processArgs(args);
 
 		/* figure out $HOME and the current directory */
-		String userHome = System.getProperty("user.home"); //$NON-NLS-1$
-		String userDir = System.getProperty("user.dir"); //$NON-NLS-1$
+        String userHome = System.getProperty("user.home"); //$NON-NLS-1$
+        String userDir = System.getProperty("user.dir"); //$NON-NLS-1$
 
 		/*
 		 * If the current directory is not $HOME, and a .fdbinit file exists in the current directory,
 		 * then push it onto the stack of files to read.
-		 * 
+		 *
 		 * Note, we want ./.fdbinit to be read AFTER $HOME/.fdbinit, but we push them in reverse
 		 * order, because they're going onto a stack.  If we push them in reverse order, then they
 		 * will be read in the correct order (last one pushed is the first one read).
 		 */
-		if (userDir != null && !userDir.equals(userHome))
-		{
-			try
-			{
-				FileReader sr = new FileReader(new File(userDir, ".fdbinit")); //$NON-NLS-1$
-				cli.pushStream( new LineNumberReader(sr) );
-			}
-			catch(FileNotFoundException fnf) {}
-		}
+        if (userDir != null && !userDir.equals(userHome)) {
+            try {
+                FileReader sr = new FileReader(new File(userDir, ".fdbinit")); //$NON-NLS-1$
+                cli.pushStream(new LineNumberReader(sr));
+            } catch (FileNotFoundException fnf) {
+            }
+        }
 
 		/*
 		 * If a .fdbinit file exists in the $HOME directory, then push it onto the stack of files
 		 * to read.
-		 * 
+		 *
 		 * Note, we want ./.fdbinit to be read AFTER $HOME/.fdbinit, but we push them in reverse
 		 * order, because they're going onto a stack.  If we push them in reverse order, then they
 		 * will be read in the correct order (last one pushed is the first one read).
 		 */
-		if (userHome != null)
-		{
-			try
-			{
-				FileReader sr = new FileReader(new File(userHome, ".fdbinit")); //$NON-NLS-1$
-				cli.pushStream( new LineNumberReader(sr) );
-			}
-			catch(FileNotFoundException fnf) {}
-		}
-
-		cli.execute();
-	}
-
-	public DebugCLI()
-	{
-		m_fullnameOption = false;
-		m_exprCache = new ExpressionCache(this);
-		m_faultTable = new FaultActions();
-		m_breakpoints = new Vector<BreakAction>();
-		m_watchpoints = new Vector<WatchAction>();
-		m_catchpoints = new Vector<CatchAction>();
-		m_displays = new ArrayList<DisplayAction>();
-		m_keyboardInput = new Vector<String>();
-		m_mruURI = null;
-		m_sourceDirectories = new LinkedList<String>();
-
-		initProperties();
-		populateFaultTable();
-	}
-
-	public static LocalizationManager getLocalizationManager() { return m_localizationManager; }
-	public Session				getSession()	{ return m_session; }
-	public FileInfoCache		getFileCache()	{ return m_fileInfo; }
-    public boolean              isIde()         { return m_isIde; }
-
-	/**
-	 * Convert a module to class name.  This is used
-	 * by the ExpressionCache to find variables
-	 * that live at royale package scope.   That
-	 * is variables such as mx.core.Component.
-	 */
-	public String module2ClassName(int moduleId)
-	{
-		String pkg = null;
-		try
-		{
-			SourceFile file = m_fileInfo.getFile(moduleId);
-			pkg = file.getPackageName();
-		}
-		catch(Exception npe)
-		{
-			// didn't work ignore it.
-		}
-		return pkg;
-	}
-
-	LineNumberReader	popStream()						{ return m_readerStack.pop(); }
-	void				pushStream(LineNumberReader r)  { m_readerStack.push(r); }
-	boolean				haveStreams()					{ return !m_readerStack.empty(); }
-
-	void processArgs(String[] args)
-	{
-		for(int i=0; i<args.length; i++)
-		{
-			String arg = args[i];
+        if (userHome != null) {
+            try {
+                FileReader sr = new FileReader(new File(userHome, ".fdbinit")); //$NON-NLS-1$
+                cli.pushStream(new LineNumberReader(sr));
+            } catch (FileNotFoundException fnf) {
+            }
+        }
+
+        cli.execute();
+    }
+
+    public DebugCLI() {
+        m_fullnameOption = false;
+        m_faultTable = faultActionsBuilder.build();
+        m_exprCache = new ExpressionCache(this);
+        m_breakpoints = new Vector<BreakAction>();
+        m_watchpoints = new Vector<WatchAction>();
+        m_catchpoints = new Vector<CatchAction>();
+        m_displays = new ArrayList<DisplayAction>();
+        m_keyboardInput = new Vector<String>();
+        m_mruURI = null;
+        m_sourceDirectories = new LinkedList<String>();
+
+        initProperties();
+        m_mainState = new DebugCLIIsolateState(this);
+        m_lastPromptIsolate = -1;
+        initIsolateState();
+    }
+
+    public static LocalizationManager getLocalizationManager() {
+        return m_localizationManager;
+    }
+
+    public Session getSession() {
+        return m_session;
+    }
+
+    public FileInfoCache getFileCache() {
+        return m_fileInfo;
+    }
+
+    public boolean isIde() {
+        return m_isIde;
+    }
+
+    /**
+     * Convert a module to class name.  This is used
+     * by the ExpressionCache to find variables
+     * that live at royale package scope.   That
+     * is variables such as mx.core.Component.
+     */
+    public String module2ClassName(int moduleId) {
+        String pkg = null;
+        try {
+            SourceFile file = m_fileInfo.getFile(moduleId);
+            pkg = file.getPackageName();
+        } catch (Exception npe) {
+            // didn't work ignore it.
+        }
+        return pkg;
+    }
+
+    LineNumberReader popStream() {
+        return m_readerStack.pop();
+    }
+
+    public void pushStream(LineNumberReader r) {
+        m_readerStack.push(r);
+    }
+
+    boolean haveStreams() {
+        return !m_readerStack.empty();
+    }
+
+    public void processArgs(String[] args) {
+        for (int i = 0; i < args.length; i++) {
+            String arg = args[i];
 //			System.out.println("arg["+i+"]= '"+arg+"'");
-			if (arg.charAt(0) == '-')
-			{
-				// its an option
-				if (arg.equals("-unit")) // unit-testing mode //$NON-NLS-1$
-				{
-					System.setProperty("fdbunit", ""); //$NON-NLS-1$ //$NON-NLS-2$
-				}
-				else if (arg.equals("-fullname") || arg.equals("-f")) //$NON-NLS-1$ //$NON-NLS-2$
-				{
-					m_fullnameOption = true; // emacs mode
-				}
-				else if (arg.equals("-cd")) //$NON-NLS-1$
-				{
-					// consume the path
-					if (i+1 < args.length)
-						m_cdPath = args[i++];
-				}
-                else if (arg.equals("-p")) //$NON-NLS-1$
+            if (arg.charAt(0) == '-') {
+                // its an option
+                if (arg.equals("-unit")) // unit-testing mode //$NON-NLS-1$
+                {
+                    System.setProperty("fdbunit", ""); //$NON-NLS-1$ //$NON-NLS-2$
+                } else if (arg.equals("-fullname") || arg.equals("-f")) //$NON-NLS-1$ //$NON-NLS-2$
+                {
+                    m_fullnameOption = true; // emacs mode
+                } else if (arg.equals("-cd")) //$NON-NLS-1$
+                {
+                    // consume the path
+                    if (i + 1 < args.length)
+                        m_cdPath = args[i++];
+                } else if (arg.equals("-p")) //$NON-NLS-1$
                 {
                     // consume the port
-                    if (i+1 < args.length)
+                    if (i + 1 < args.length)
                         m_connectPort = args[++i];
-                }
-                else if (arg.equals("-ide")) //$NON-NLS-1$
+                } else if (arg.equals("-ide")) //$NON-NLS-1$
                 {
                     m_isIde = true;
+                } else if (arg.equals("-lang")) //$NON-NLS-1$
+                {
+                    if (i + 1 < args.length)
+                        getLocalizationManager().setLocale(LocaleUtility.langToLocale(args[++i]));
+
+                } else {
+                    err("Unknown command-line argument: " + arg); //$NON-NLS-1$
                 }
-				else
-				{
-					err("Unknown command-line argument: " + arg);
-				}
-			}
-			else
-			{
-				// its a URI to run
-				StringReader sr = new StringReader("run "+arg+m_newline); //$NON-NLS-1$
-				pushStream( new LineNumberReader(sr) );
-			}
-		}
-	}
-
-	/**
-	 * Dispose of the current line and read the next from the current stream, if its an empty
-	 * line and we are console then repeat last line.
-	 */
-	String readLine() throws IOException
-	{
-		String line = null;
-		if (haveStreams())
-			line = m_in.readLine();
-		else
-			line = keyboardReadLine();
-
-		setCurrentLine(line);
-		return line;
-	}
-
-	/**
-	 * The reader portion of our keyboard input routine
-	 * Block until input arrives.
-	 */
-	synchronized String keyboardReadLine()
-	{
-		// enable a request then block on the queue
-		m_keyboardReadRequest = true;
-		try { wait(); } catch(InterruptedException ie) {}
-
-		// pull from the front of the queue
-		return m_keyboardInput.remove(0);
-	}
-
-	/**
-	 * A seperate thread collects our input so that we can
-	 * block in the doContinue on the main thread and then
-	 * allow the user to interrupt us via keyboard input
-	 * on this thread.
-	 *
-	 * We built the stupid thing in this manner, since readLine()
-	 * will block no matter what and if we 'quit' we can't
-	 * seem to kill this thread.  .close() doesn't work
-	 * and Thread.stop(), etc. all fail to do the job.
-	 *
-	 * Thus we needed to take a request response approach
-	 * so that we only block when requested to do so.
-	 */
-	public void run()
-	{
-		// while we have this stream
-		while(m_keyboardStream != null)
-		{
-			try
-			{
-				// only if someone is requesting us to read do we do so...
-				if (m_keyboardReadRequest)
-				{
-					// block on keyboard input and put it onto the end of the queue
-					String s = m_keyboardStream.readLine();
-					m_keyboardInput.add(s);
-
-					// fullfilled request, now notify blocking thread.
-					m_keyboardReadRequest = false;
-					synchronized(this) { notifyAll(); }
-				}
-				else
-					try { Thread.sleep(50); } catch(InterruptedException ie) {}
-			}
-			catch(IOException io)
-			{
+            } else {
+                // its a URI to run
+                StringReader sr = new StringReader("run " + arg + m_newline); //$NON-NLS-1$
+                pushStream(new LineNumberReader(sr));
+            }
+        }
+    }
+
+    /**
+     * Dispose of the current line and read the next from the current stream, if its an empty
+     * line and we are console then repeat last line.
+     */
+    protected String readLine() throws IOException {
+        String line = null;
+        if (haveStreams())
+            line = m_in.readLine();
+        else
+            line = keyboardReadLine();
+
+        setCurrentLine(line);
+        return line;
+    }
+
+    /**
+     * The reader portion of our keyboard input routine
+     * Block until input arrives.
+     */
+    synchronized String keyboardReadLine() {
+        // enable a request then block on the queue
+        m_keyboardReadRequest = true;
+        try {
+            wait();
+        } catch (InterruptedException ie) {
+        }
+
+        // pull from the front of the queue
+        return m_keyboardInput.remove(0);
+    }
+
+    /**
+     * A seperate thread collects our input so that we can
+     * block in the doContinue on the main thread and then
+     * allow the user to interrupt us via keyboard input
+     * on this thread.
+     * <p/>
+     * We built the stupid thing in this manner, since readLine()
+     * will block no matter what and if we 'quit' we can't
+     * seem to kill this thread.  .close() doesn't work
+     * and Thread.stop(), etc. all fail to do the job.
+     * <p/>
+     * Thus we needed to take a request response approach
+     * so that we only block when requested to do so.
+     */
+    public void run() {
+        // while we have this stream
+        while (m_keyboardStream != null) {
+            try {
+                // only if someone is requesting us to read do we do so...
+                if (m_keyboardReadRequest) {
+                    // block on keyboard input and put it onto the end of the queue
+                    String s = m_keyboardStream.readLine();
+                    m_keyboardInput.add(s);
+
+                    // fullfilled request, now notify blocking thread.
+                    m_keyboardReadRequest = false;
+                    synchronized (this) {
+                        notifyAll();
+                    }
+                } else
+                    try {
+                        Thread.sleep(50);
+                    } catch (InterruptedException ie) {
+                    }
+            } catch (IOException io) {
 //				io.printStackTrace();
-			}
-		}
-	}
-
-	void setCurrentLine(String s)
-	{
-		m_currentLine = s;
-		if (m_currentLine == null)
-			m_currentTokenizer = null;   /* eof */
-		else
-		{
-			m_currentLine = m_currentLine.trim();
+            }
+        }
+    }
+
+    public void setCurrentLine(String s) {
+        m_currentLine = s;
+        if (m_currentLine == null)
+            m_currentTokenizer = null;   /* eof */
+        else {
+            m_currentLine = m_currentLine.trim();
 
 			/* if nothing provided on this command then pull our 'repeat' command  */
-			if (m_repeatLine != null && !haveStreams() && m_currentLine.length() == 0)
-				m_currentLine = m_repeatLine;
-
-			m_currentTokenizer = new StringTokenizer(m_currentLine, " \n\r\t"); //$NON-NLS-1$
-		}
-	}
-
-	/* Helpers for extracting tokens from the current line */
-	public boolean		hasMoreTokens()									{ return m_currentTokenizer.hasMoreTokens(); }
-	public String		nextToken()										{ m_currentToken = m_currentTokenizer.nextToken(); return m_currentToken; }
-	public int			nextIntToken() throws NumberFormatException		{ nextToken(); return Integer.parseInt(m_currentToken);	}
-	public long			nextLongToken() throws NumberFormatException	{ nextToken(); return Long.parseLong(m_currentToken);	}
-	public String		restOfLine()									{ return m_currentTokenizer.nextToken("").trim(); } //$NON-NLS-1$
-
-	public void execute()
-	{
+            if (m_repeatLine != null && !haveStreams() && m_currentLine.length() == 0)
+                m_currentLine = m_repeatLine;
+
+            m_currentTokenizer = new StringTokenizer(m_currentLine, " \n\r\t"); //$NON-NLS-1$
+        }
+    }
+
+    /* Helpers for extracting tokens from the current line */
+    public boolean hasMoreTokens() {
+        return m_currentTokenizer.hasMoreTokens();
+    }
+
+    public String nextToken() {
+        m_currentToken = m_currentTokenizer.nextToken();
+        return m_currentToken;
+    }
+
+    public int nextIntToken() throws NumberFormatException {
+        nextToken();
+        return Integer.parseInt(m_currentToken);
+    }
+
+    public long nextLongToken() throws NumberFormatException {
+        nextToken();
+        return Long.parseLong(m_currentToken);
+    }
+
+    public String restOfLine() {
+        return m_currentTokenizer.nextToken("").trim();
+    } //$NON-NLS-1$
+
+    public void execute() {
 		/* dump console message */
-		displayStartMessage();
-		
+        displayStartMessage();
+
 		/* now fire our keyboard input thread */
-		Thread t = new Thread(this, "Keyboard input"); //$NON-NLS-1$
-		t.start();
+        Thread t = new Thread(this, "Keyboard input"); //$NON-NLS-1$
+        t.start();
 
 		/* keep processing streams until we have no more to do */
-		while(haveStreams())
-		{
-			try
-			{
-				m_in = popStream();
-				process();
-			}
-			catch(EOFException eof)
-			{
-				; /* quite allright */
-			}
-			catch(IOException io)
-			{
-				Map<String, Object> args = new HashMap<String, Object>();
-				args.put("exceptionMessage", io); //$NON-NLS-1$
-				err(getLocalizationManager().getLocalizedTextString("errorWhileProcessingFile", args)); //$NON-NLS-1$
-			}
-		}
+        while (haveStreams()) {
+            try {
+                m_in = popStream();
+                process();
+            } catch (EOFException eof) {
+                ; /* quite allright */
+            } catch (IOException io) {
+                Map<String, Object> args = new HashMap<String, Object>();
+                args.put("exceptionMessage", io); //$NON-NLS-1$
+                err(getLocalizationManager().getLocalizedTextString("errorWhileProcessingFile", args)); //$NON-NLS-1$
+            }
+        }
 
 		/* we done kill everything */
-		exitSession();
+        exitSession();
 
-		// clear this thing, which also halts our other thread.
-		m_keyboardStream = null;
-	}
+        // clear this thing, which also halts our other thread.
+        m_keyboardStream = null;
+    }
 
-	public PrintStream getOut() { return m_out; }
+    public PrintStream getOut() {
+        return m_out;
+    }
 
-	private void displayStartMessage()
-	{
+    private void displayStartMessage() {
         String build = getLocalizationManager().getLocalizedTextString("defaultBuildName"); //$NON-NLS-1$
 
-        try
-        {
+        try {
             Properties p = new Properties();
             p.load(this.getClass().getResourceAsStream("version.properties")); //$NON-NLS-1$
             String buildString = p.getProperty("build"); //$NON-NLS-1$
-            if ((buildString != null) && (! buildString.equals(""))) //$NON-NLS-1$
+            if ((buildString != null) && (!buildString.equals(""))) //$NON-NLS-1$
             {
                 build = buildString;
             }
-        }
-        catch (Throwable t)
-        {
+        } catch (Throwable t) {
             // ignore
         }
 
-        Map<String, Object> aboutMap = new HashMap<String, Object>(); aboutMap.put("build", build); //$NON-NLS-1$
+        Map<String, Object> aboutMap = new HashMap<String, Object>();
+        aboutMap.put("build", build); //$NON-NLS-1$
         out(getLocalizationManager().getLocalizedTextString("about", aboutMap)); //$NON-NLS-1$
-		out(getLocalizationManager().getLocalizedTextString("copyright")); //$NON-NLS-1$
-	}
-
-	void displayPrompt()
-	{
-		m_out.print("(fdb) "); //$NON-NLS-1$
-	}
-
-	void displayCommandPrompt()
-	{
-		m_out.print(">"); //$NON-NLS-1$
-	}
-
-	// add the given character n times to sb
-	void repeat(StringBuilder sb, char c, int n)
-	{
-		while(n-- > 0)
-			sb.append(c);
-	}
-
-	// Prompt the user to respond to a yes or no type question
-	boolean yesNoQuery(String prompt) throws IOException
-	{
-		boolean result = false;
-		m_out.print(prompt);
-		m_out.print(getLocalizationManager().getLocalizedTextString("yesOrNoAppendedToAllQuestions")); //$NON-NLS-1$
-
-		String in = readLine();
-		if (in != null && in.equals(getLocalizationManager().getLocalizedTextString("singleCharacterUserTypesForYes"))) //$NON-NLS-1$
-			result = true;
-		else if (in != null && in.equals("escape")) //$NON-NLS-1$
-			throw new IllegalArgumentException("escape"); //$NON-NLS-1$
-		else
-			out(getLocalizationManager().getLocalizedTextString("yesNoQueryNotConfirmed")); //$NON-NLS-1$
-		return result;
-	}
-
-	public void err(String s)
-	{
-		// Doesn't make sense to send messages to stderr, because this is
-		// an interactive application; and besides that, sending a combination
-		// of interwoven but related messages to both stdout and stderr causes
-		// the output to be in the wrong order sometimes.
-		out(s);
-	}
-
-	public void out(String s)
-	{
-		if (s.length() > 0 && (s.charAt(s.length()-1) == '\n') )
-			m_out.print(s);
-		else
-			m_out.println(s);
-	}
-
-	static String uft()
-	{
-		Runtime rt = Runtime.getRuntime();
-		long free = rt.freeMemory(), total = rt.totalMemory(), used =  total - free;
+        out(getLocalizationManager().getLocalizedTextString("copyright")); //$NON-NLS-1$
+    }
+
+    void displayPrompt() {
+        m_out.print("(fdb) "); //$NON-NLS-1$
+    }
+
+    void displayCommandPrompt() {
+        m_out.print(">"); //$NON-NLS-1$
+    }
+
+    // add the given character n times to sb
+    void repeat(StringBuilder sb, char c, int n) {
+        while (n-- > 0)
+            sb.append(c);
+    }
+
+    // Prompt the user to respond to a yes or no type question
+    boolean yesNoQuery(String prompt) throws IOException {
+        boolean result = false;
+        m_out.print(prompt);
+        m_out.print(getLocalizationManager().getLocalizedTextString("yesOrNoAppendedToAllQuestions")); //$NON-NLS-1$
+
+        String in = readLine();
+        if (in != null && in.equals(getLocalizationManager().getLocalizedTextString("singleCharacterUserTypesForYes"))) //$NON-NLS-1$
+            result = true;
+        else if (in != null && in.equals("escape")) //$NON-NLS-1$
+            throw new IllegalArgumentException("escape"); //$NON-NLS-1$
+        else
+            out(getLocalizationManager().getLocalizedTextString("yesNoQueryNotConfirmed")); //$NON-NLS-1$
+        return result;
+    }
+
+    public void err(String s) {
+        // Doesn't make sense to send messages to stderr, because this is
+        // an interactive application; and besides that, sending a combination
+        // of interwoven but related messages to both stdout and stderr causes
+        // the output to be in the wrong order sometimes.
+        out(s);
+    }
+
+    public void out(String s) {
+        if (s.length() > 0 && (s.charAt(s.length() - 1) == '\n'))
+            m_out.print(s);
+        else
+            m_out.println(s);
+    }
+
+    static String uft() {
+        Runtime rt = Runtime.getRuntime();
+        long free = rt.freeMemory(), total = rt.totalMemory(), used = total - free;
 //		long max = rt.maxMemory();
-		java.text.NumberFormat nf = java.text.NumberFormat.getInstance() ;
+        java.text.NumberFormat nf = java.text.NumberFormat.getInstance();
 //        System.out.println("used: "+nf.format(used)+" free: "+nf.format(free)+" total: "+nf.format(total)+" max: "+nf.format(max));
-        return "Used "+nf.format(used)+" - free "+nf.format(free)+" - total "+nf.format(total); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+        return "Used " + nf.format(used) + " - free " + nf.format(free) + " - total " + nf.format(total); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
     }
 
-	/**
-	 * Add all properties that we know about
-	 */
-	void initProperties()
-	{
-		propertyPut(LIST_SIZE, 10);
-		propertyPut(LIST_LINE, 1);
-		propertyPut(LIST_MODULE, 1);  // default to module #1
-		propertyPut(COLUMN_WIDTH, 70);
-		propertyPut(UPDATE_DELAY, 25);
-		propertyPut(HALT_TIMEOUT, 7000);
-		propertyPut(BPNUM, 0);				// set current breakpoint number as something bad
-		propertyPut(LAST_FRAME_DEPTH, 0);		// used to determine how much context information should be displayed
-		propertyPut(CURRENT_FRAME_DEPTH, 0);   // used to determine how much context information should be displayed
-		propertyPut(DISPLAY_FRAME_NUMBER, 0);  // houses the current frame we are viewing
-		propertyPut(FILE_LIST_WRAP, 999999);   // default 1 file name per line
-		propertyPut(NO_WAITING, 0);
-		propertyPut(INFO_STACK_SHOW_THIS, 1); // show this pointer for info stack
-	}
-
-	// getter/setter for properties; in the expression cache, so that they can be used in expressions!
-	public void propertyPut(String k, int v)  { m_exprCache.put(k,v); }
-	public int  propertyGet(String k)		  { return ((Integer)m_exprCache.get(k)).intValue(); }
-	public Set<String>  propertyKeys()		  { return m_exprCache.keySet(); }
-
-	/**
-	 * Process this reader until its done
-	 */
-	void process() throws IOException
-	{
-		boolean done = false;
-		while(!done)
-		{
-			try
-			{
-				/**
-				 * Now if we are in a session and that session is suspended then we go
-				 * into a state where we wait for some user interaction to get us out
-				 */
-				runningLoop();
+    /**
+     * Add all properties that we know about
+     */
+    void initProperties() {
+        propertyPut(LIST_SIZE, 10);
+        propertyPut(LIST_LINE, 1);
+        propertyPut(LIST_MODULE, 1);  // default to module #1
+        propertyPut(LIST_WORKER, Isolate.DEFAULT_ID);
+        propertyPut(COLUMN_WIDTH, 70);
+        propertyPut(UPDATE_DELAY, 25);
+        propertyPut(HALT_TIMEOUT, 7000);
+        propertyPut(BPNUM, 0);                // set current breakpoint number as something bad
+        propertyPut(LAST_FRAME_DEPTH, 0);        // used to determine how much context information should be displayed
+        propertyPut(CURRENT_FRAME_DEPTH, 0);   // used to determine how much context information should be displayed
+        propertyPut(DISPLAY_FRAME_NUMBER, 0);  // houses the current frame we are viewing
+        propertyPut(FILE_LIST_WRAP, 999999);   // default 1 file name per line
+        propertyPut(NO_WAITING, 0);
+        propertyPut(INFO_STACK_SHOW_THIS, 1); // show this pointer for info stack
+    }
+
+    // getter/setter for properties; in the expression cache, so that they can be used in expressions!
+    public void propertyPut(String k, int v) {
+        m_exprCache.put(k, v);
+    }
+
+    public int propertyGet(String k) {
+        return ((Integer) m_exprCache.get(k)).intValue();
+    }
+
+    public Set<String> propertyKeys() {
+        return m_exprCache.keySet();
+    }
+
+    /**
+     * Process this reader until its done
+     */
+    void process() throws IOException {
+        boolean done = false;
+        while (!done) {
+            try {
+                /**
+                 * Now if we are in a session and that session is suspended then we go
+                 * into a state where we wait for some user interaction to get us out
+                 */
+                runningLoop();
 
 				/* if we are in the stdin then put out a prompt */
-				if (!haveStreams())
-					displayPrompt();
+                if (!haveStreams())
+                    displayPrompt();
 
 				/* now read in the next line */
-				readLine();
-				if (m_currentLine == null)
-					break;
-
-				done = processLine();
-			}
-			catch(NoResponseException nre)
-			{
-				err(getLocalizationManager().getLocalizedTextString("noResponseException")); //$NON-NLS-1$
-			}
-			catch(NotSuspendedException nse)
-			{
-				err(getLocalizationManager().getLocalizedTextString("notSuspendedException")); //$NON-NLS-1$
-			}
-			catch(AmbiguousException ae)
-			{
-				// we already put up a warning for the user
-			}
-			catch(IllegalStateException ise)
-			{
-				err(getLocalizationManager().getLocalizedTextString("illegalStateException")); //$NON-NLS-1$
-			}
-			catch(IllegalMonitorStateException ime)
-			{
-				err(getLocalizationManager().getLocalizedTextString("illegalMonitorStateException")); //$NON-NLS-1$
-			}
-			catch(NoSuchElementException nse)
-			{
-				err(getLocalizationManager().getLocalizedTextString("noSuchElementException")); //$NON-NLS-1$
-			}
-			catch(NumberFormatException nfe)
-			{
-				err(getLocalizationManager().getLocalizedTextString("numberFormatException")); //$NON-NLS-1$
-			}
-			catch(SocketException se)
-			{
-				Map<String, Object> socketArgs = new HashMap<String, Object>();
-				socketArgs.put("message", se.getMessage()); //$NON-NLS-1$
-				err(getLocalizationManager().getLocalizedTextString("socketException", socketArgs)); //$NON-NLS-1$
-			}
-			catch(VersionException ve)
-			{
-				err(getLocalizationManager().getLocalizedTextString("versionException")); //$NON-NLS-1$
-			}
-			catch(NotConnectedException nce)
-			{
-				// handled by isConnectionLost()
-			}
-			catch(Exception e)
-			{
-				err(getLocalizationManager().getLocalizedTextString("unexpectedError")); //$NON-NLS-1$
-				err(getLocalizationManager().getLocalizedTextString("stackTraceFollows")); //$NON-NLS-1$
-				e.printStackTrace();
-			}
-
-			// check for a lost connection and if it is clean-up!
-			if (isConnectionLost())
-			{
-				try
-				{
-					dumpHaltState(false);
-				}
-				catch(PlayerDebugException pde)
-				{
-					err(getLocalizationManager().getLocalizedTextString("sessionEndedAbruptly")); //$NON-NLS-1$
-				}
-			}
-		}
-	}
-
-	// check if we have lost the connect without our help...
-	boolean isConnectionLost()
-	{
-		boolean lost = false;
-
-		if (m_session != null && !m_session.isConnected())
-			lost = true;
-
-		return lost;
-	}
-
-	boolean haveConnection()
-	{
-		boolean have = false;
-
-		if (m_session != null && m_session.isConnected())
-			have = true;
-
-		return have;
-	}
-
-	void doShow() throws AmbiguousException, PlayerDebugException
-	{
+                readLine();
+                if (m_currentLine == null)
+                    break;
+
+                done = processLine();
+            } catch (NoResponseException nre) {
+                err(getLocalizationManager().getLocalizedTextString("noResponseException")); //$NON-NLS-1$
+            } catch (NotSuspendedException nse) {
+                err(getLocalizationManager().getLocalizedTextString("notSuspendedException")); //$NON-NLS-1$
+            } catch (AmbiguousException ae) {
+                // we already put up a warning for the user
+            } catch (IllegalStateException ise) {
+                err(getLocalizationManager().getLocalizedTextString("illegalStateException")); //$NON-NLS-1$
+            } catch (IllegalMonitorStateException ime) {
+                err(getLocalizationManager().getLocalizedTextString("illegalMonitorStateException")); //$NON-NLS-1$
+            } catch (NoSuchElementException nse) {
+                err(getLocalizationManager().getLocalizedTextString("noSuchElementException")); //$NON-NLS-1$
+            } catch (NumberFormatException nfe) {
+                err(getLocalizationManager().getLocalizedTextString("numberFormatException")); //$NON-NLS-1$
+            } catch (SocketException se) {
+                Map<String, Object> socketArgs = new HashMap<String, Object>();
+                socketArgs.put("message", se.getMessage()); //$NON-NLS-1$
+                err(getLocalizationManager().getLocalizedTextString("socketException", socketArgs)); //$NON-NLS-1$
+            } catch (VersionException ve) {
+                err(getLocalizationManager().getLocalizedTextString("versionException")); //$NON-NLS-1$
+            } catch (NotConnectedException nce) {
+                // handled by isConnectionLost()
+            } catch (Exception e) {
+                err(getLocalizationManager().getLocalizedTextString("unexpectedError")); //$NON-NLS-1$
+                err(getLocalizationManager().getLocalizedTextString("stackTraceFollows")); //$NON-NLS-1$
+                e.printStackTrace();
+            }
+
+            // check for a lost connection and if it is clean-up!
+            if (isConnectionLost()) {
+                try {
+                    dumpHaltState(false);
+                } catch (PlayerDebugException pde) {
+                    err(getLocalizationManager().getLocalizedTextString("sessionEndedAbruptly")); //$NON-NLS-1$
+                }
+            }
+        }
+    }
+
+    // check if we have lost the connect without our help...
+    boolean isConnectionLost() {
+        boolean lost = false;
+
+        if (m_session != null && !m_session.isConnected())
+            lost = true;
+
+        return lost;
+    }
+
+    boolean haveConnection() {
+        boolean have = false;
+
+        if (m_session != null && m_session.isConnected())
+            have = true;
+
+        return have;
+    }
+
+    void doShow() throws AmbiguousException, PlayerDebugException {
 		/* show without any args brings up help */
-		if (!hasMoreTokens())
-			out( getHelpTopic("show") ); //$NON-NLS-1$
-		else
-		{
-			/* otherwise we have a boatload of options */
-			String subCmdString = nextToken();
-			int subCmd = showCommandFor(subCmdString);
-			switch(subCmd)
-			{
-				case SHOW_NET_CMD:
-					doShowStats();
-					break;
-
-				case SHOW_FUNC_CMD:
-					doShowFuncs();
-					break;
-
-				case SHOW_URI_CMD:
-					doShowUri();
-					break;
-
-				case SHOW_PROPERTIES_CMD:
-					doShowProperties();
-					break;
-
-				case SHOW_FILES_CMD:
-					doShowFiles();
-					break;
-
-				case SHOW_BREAK_CMD:
-					doShowBreak();
-					break;
-
-				case SHOW_VAR_CMD:
-					doShowVariable();
-					break;
-
-				case SHOW_MEM_CMD:
-					doShowMemory();
-					break;
-
-				case SHOW_LOC_CMD:
-					doShowLocations();
-					break;
-
-				case SHOW_DIRS_CMD:
-					doShowDirectories();
-					break;
-
-				default:
-					doUnknown("show", subCmdString); //$NON-NLS-1$
-					break;
-			}
-		}
-	}
-
-	void doShowUri()
-	{
-		// dump the URI that the player has sent us
-		try
-		{
-			StringBuilder sb = new StringBuilder();
-			sb.append("URI = "); //$NON-NLS-1$
-			sb.append( m_session.getURI() );
-			out( sb.toString() );
-		}
-		catch(Exception e)
-		{
-			err(getLocalizationManager().getLocalizedTextString("noUriReceived")); //$NON-NLS-1$
-		}
-	}
-
-	/**
-	 * Dump the content of files in a raw format
-	 */
-	void doShowFiles()
-	{
-		try
-		{
-			StringBuilder sb = new StringBuilder();
-			Iterator itr = m_fileInfo.getAllFiles();
-
-			while(itr.hasNext())
-			{
-				SourceFile m = (SourceFile) ((Map.Entry)itr.next()).getValue();
-
-				String name = m.getName();
-				int id = m.getId();
-				String path = m.getFullPath();
-
-				sb.append(id);
-				sb.append(' ');
-				sb.append(path);
-				sb.append(", "); //$NON-NLS-1$
-				sb.append(name);
-				sb.append(m_newline);
-			}
-			out( sb.toString() );
-		}
-		catch(NullPointerException npe)
-		{
-			err(getLocalizationManager().getLocalizedTextString("noSourceFilesFound")); //$NON-NLS-1$
-		}
-	}
-
-	void doShowMemory()
-	{
-		out(uft());
-	}
-
-	void doShowLocations()
-	{
-		StringBuilder sb = new StringBuilder();
-		sb.append("Num Type           Disp Enb Address    What"+m_newline);
-
-		// our list of breakpoints
-		int count = breakpointCount();
-		for(int i=0; i<count; i++)
-		{
-			BreakAction b = breakpointAt(i);
-			int num = b.getId();
-
-			FieldFormat.formatLong(sb, num, 3);
-			sb.append(" breakpoint     ");
-
-			if (b.isAutoDisable())
-				sb.append("dis  ");
-			else if (b.isAutoDelete())
-				sb.append("del  ");
-			else
-				sb.append("keep ");
-
-			if (b.isEnabled())
-				sb.append("y   ");
-			else
-				sb.append("n   ");
-
-			Iterator<Location> itr = b.getLocations().iterator();
-			while(itr.hasNext())
-			{
-				Location l = itr.next();
-				SourceFile file = l.getFile();
-				String funcName = (file == null)
-					? getLocalizationManager().getLocalizedTextString("unknownBreakpointLocation") //$NON-NLS-1$
-					: file.getFunctionNameForLine(m_session, l.getLine()) ;
-				int offset = adjustOffsetForUnitTests((file == null) ? 0 : file.getOffsetForLine(l.getLine()));
-
-				sb.append("0x"); //$NON-NLS-1$
-				FieldFormat.formatLongToHex(sb, offset, 8);
-				sb.append(' ');
-
-				if (funcName != null)
-				{
-					Map<String, Object> funcArgs = new HashMap<String, Object>();
-					funcArgs.put("functionName", funcName); //$NON-NLS-1$
-					sb.append(getLocalizationManager().getLocalizedTextString("inFunctionAt", funcArgs)); //$NON-NLS-1$
-				}
-
-				sb.append(file.getName());
-				if (file != null)
-				{
-					sb.append("#"); //$NON-NLS-1$
-					sb.append(file.getId());
-				}
-				sb.append(':');
-				sb.append(l.getLine());
-
-				try
-				{
-					SwfInfo info = m_fileInfo.swfForFile(file);
-					Map<String, Object> swfArgs = new HashMap<String, Object>();
-					swfArgs.put("swf", FileInfoCache.shortNameOfSwf(info)); //$NON-NLS-1$
-					sb.append(getLocalizationManager().getLocalizedTextString("inSwf", swfArgs)); //$NON-NLS-1$
-				}
-				catch(NullPointerException npe)
-				{
-					// can't find the swf
-					sb.append(getLocalizationManager().getLocalizedTextString("nonRestorable")); //$NON-NLS-1$
-				}
-				sb.append(m_newline);
-				if (itr.hasNext())
-					sb.append("                            "); //$NON-NLS-1$
-			}
-		}
-		out(sb.toString());
-	}
-
-	/**
-	 * When running unit tests, we want byte offsets into the file to
-	 * always be displayed as zero, so that the unit test expected
-	 * results will match up with the actual results.  This is just a
-	 * simple helper function that deals with that.
-	 */
-	private int adjustOffsetForUnitTests(int offset)
-	{
-		if (System.getProperty("fdbunit")==null) //$NON-NLS-1$
-			return offset;
-		else
-			return 0;
-	}
-
-	void doShowDirectories()
-	{
-		out(getLocalizationManager().getLocalizedTextString("sourceDirectoriesSearched")); //$NON-NLS-1$
-		Iterator<String> iter = m_sourceDirectories.iterator();
-		while (iter.hasNext())
-		{
-			String dir = iter.next();
-			out("  " + dir); //$NON-NLS-1$
-		}
-	}
-
-	void doHalt() throws SuspendedException, NotConnectedException, NoResponseException
-	{
-		out(getLocalizationManager().getLocalizedTextString("attemptingToSuspend")); //$NON-NLS-1$
-		m_session.suspend();
-		if (m_session.isSuspended())
-			out(getLocalizationManager().getLocalizedTextString("playerStopped")); //$NON-NLS-1$
-		else
-			out(getLocalizationManager().getLocalizedTextString("playerRunning")); //$NON-NLS-1$
-	}
-
-	public void appendReason(StringBuilder sb, int reason)
-	{
-		switch(reason)
-		{
-			case SuspendReason.Unknown:
-				sb.append(getLocalizationManager().getLocalizedTextString("suspendReason_Unknown")); //$NON-NLS-1$
-				break;
-
-			case SuspendReason.Breakpoint:
-				sb.append(getLocalizationManager().getLocalizedTextString("suspendReason_HitBreakpoint")); //$NON-NLS-1$
-				break;
-
-			case SuspendReason.Watch:
-				sb.append(getLocalizationManager().getLocalizedTextString("suspendReason_HitWatchpoint")); //$NON-NLS-1$
-				break;
-
-			case SuspendReason.Fault:
-				sb.append(getLocalizationManager().getLocalizedTextString("suspendReason_ProgramThrewException")); //$NON-NLS-1$
-				break;
-
-			case SuspendReason.StopRequest:
-				sb.append(getLocalizationManager().getLocalizedTextString("suspendReason_StopRequest")); //$NON-NLS-1$
-				break;
-
-			case SuspendReason.Step:
-				sb.append(getLocalizationManager().getLocalizedTextString("suspendReason_ProgramFinishedStepping")); //$NON-NLS-1$
-				break;
-
-			case SuspendReason.HaltOpcode:
-				sb.append(getLocalizationManager().getLocalizedTextString("suspendReason_HaltOpcode")); //$NON-NLS-1$
-				break;
-
-			case SuspendReason.ScriptLoaded:
-				sb.append(getLocalizationManager().getLocalizedTextString("suspendReason_ScriptHasLoadedIntoFlashPlayer")); //$NON-NLS-1$
-				break;
-		}
-	}
-
-	/**
-	 * The big ticket item, where all your questions are answered.
-	 *
-	 */
-	void doInfo() throws AmbiguousException, PlayerDebugException
-	{
-		/* info without any args brings up help */
-		if (!hasMoreTokens())
-			out( getHelpTopic("info") ); //$NON-NLS-1$
-		else
-		{
+        if (!hasMoreTokens())
+            out(getHelpTopic("show")); //$NON-NLS-1$
+        else {
 			/* otherwise we have a boatload of options */
-			String subCmdString = nextToken();
-			int subCmd = infoCommandFor(subCmdString);
-			switch(subCmd)
-			{
-				case INFO_ARGS_CMD:
-					doInfoArgs();
-					break;
-
-				case INFO_BREAK_CMD:
-					doInfoBreak();
-					break;
-
-				case INFO_FILES_CMD:
-					doInfoFiles();
-					break;
-
-				case INFO_FUNCTIONS_CMD:
-					doInfoFuncs();
-					break;
-
-				case INFO_HANDLE_CMD:
-					doInfoHandle();
-					break;
-
-				case INFO_LOCALS_CMD:
-					doInfoLocals();
-					break;
-
-				case INFO_SCOPECHAIN_CMD:
-					doInfoScopeChain();
-					break;
-					
-				case INFO_SOURCES_CMD:
-					doInfoSources();
-					break;
-
-				case INFO_STACK_CMD:
-					doInfoStack();
-					break;
-
-				case INFO_VARIABLES_CMD:
-					doInfoVariables();
-					break;
-
-				case INFO_DISPLAY_CMD:
-					doInfoDisplay();
-					break;
+            String subCmdString = nextToken();
+            int subCmd = showCommandFor(subCmdString);
+            switch (subCmd) {
+                case SHOW_NET_CMD:
+                    doShowStats();
+                    break;
 
-                case INFO_TARGETS_CMD:
-                    doInfoTargets();
+                case SHOW_FUNC_CMD:
+                    doShowFuncs();
                     break;
 
-                case INFO_SWFS_CMD:
-                    doInfoSwfs();
+                case SHOW_URI_CMD:
+                    doShowUri();
                     break;
 
-				default:
-					doUnknown("info", subCmdString); //$NON-NLS-1$
-					break;
-			}
-		}
-	}
-
-	void doInfoStack() throws PlayerDebugException
-	{
-		waitTilHalted();
-
-		StringBuilder sb = new StringBuilder();
-		Frame[] stack = m_session.getFrames();
-		if (stack == null || stack.length == 0)
-			sb.append(getLocalizationManager().getLocalizedTextString("noStackAvailable")); //$NON-NLS-1$
-		else
-		{
-			boolean showThis = propertyGet(INFO_STACK_SHOW_THIS) == 1;
-			for(int i=0; i<stack.length; i++)
-			{
-				// keep spitting out frames until we can't
-				Frame frame = stack[i];
-				boolean valid = appendFrameInfo(sb, frame, i, showThis, true);
-				sb.append(m_newline);
-                if (!valid)
+                case SHOW_PROPERTIES_CMD:
+                    doShowProperties();
                     break;
-			}
-		}
 
-		/* dump it out */
-		out(sb.toString());
-	}
-	
-	/**
-	 * Spit out frame information for a given frame number 
-	 */
-	boolean appendFrameInfo(StringBuilder sb, Frame ctx, int frameNumber, boolean showThis, boolean showFileId) throws PlayerDebugException
-	{
-		boolean validFrame = true;
-
-		// some formatting properties
-		int i = frameNumber;
-
-		Location loc = ctx.getLocation();
-		SourceFile file = loc.getFile();
-		int line = loc.getLine();
-		String name = (file == null) ? "<null>" : file.getName(); //$NON-NLS-1$
-		String sig = ctx.getCallSignature();
-		String func = extractFunctionName(sig);
-
-		// file == null or line < 0 appears to be a terminator for stack info
-		if (file == null && line < 0)
-        {
-            validFrame = false;
-        }
-        else
-		{
-			Variable[] var = ctx.getArguments(m_session);
-			Variable dis = ctx.getThis(m_session);
-			boolean displayArgs = (func != null) || (var != null);
-
-			sb.append('#');
-			FieldFormat.formatLong(sb, i, 3);
-			sb.append(' ');
-
-			if (showThis && dis != null)
-			{
-                m_exprCache.appendVariable(sb, dis);
-				sb.append("."); //$NON-NLS-1$
-			}
-
-			if (func != null)
-				sb.append(func);
-
-			if (displayArgs)
-			{
-				sb.append('(');
-				for (int j=0; j<var.length; j++)
-				{
-					Variable v = var[j];
-					sb.append(v.getName());
-					sb.append('=');
-                    m_exprCache.appendVariableValue(sb, v.getValue());
-					if ((j+1)<var.length)
-						sb.append(", "); //$NON-NLS-1$
-				}
-				sb.append(")"); //$NON-NLS-1$
-				sb.append(getLocalizationManager().getLocalizedTextString("atFilename")); //$NON-NLS-1$
-			}
-
-			sb.append(name);
-
-			// if this file is currently being filtered put the source file id after it
-			if (file != null && (showFileId || !m_fileInfo.inFileList(file)))
-			{
-				sb.append('#');
-				sb.append( file.getId() );
-
-			}
-			sb.append(':');
-			sb.append(line);
-		}
-        return validFrame;
-	}
-
-	/** extract the function name from a signature */
-	public static String extractFunctionName(String sig)
-	{ 
-		// strip everything after the leading ( 
-		int at = sig.indexOf('(');
-		if (at > -1)
-			sig = sig.substring(0, at);
-
-		// trim the leading [object_name::] since it doesn't seem to add much
-		if (sig != null && (at = sig.indexOf("::")) > -1) //$NON-NLS-1$
-			sig = sig.substring(at+2);
-
-		return sig;
-	}
-
-	void doInfoVariables() throws PlayerDebugException
-	{
-		waitTilHalted();
-
-		// dump a set of locals
-		StringBuilder sb = new StringBuilder();
-
-		// use our expression cache formatting routine
-		try
-		{
-			Variable[] vars = m_session.getVariableList();
-			for(int i=0; i<vars.length; i++)
-			{
-				Variable v = vars[i];
-
-				// all non-local and non-arg variables
-				if ( !v.isAttributeSet(VariableAttribute.IS_LOCAL) &&
-					 !v.isAttributeSet(VariableAttribute.IS_ARGUMENT) )
-				{
-					m_exprCache.appendVariable(sb, vars[i]);
-					sb.append(m_newline);
-				}
-			}
-		}
-		catch(NullPointerException npe)
-		{
-			sb.append(getLocalizationManager().getLocalizedTextString("noVariables")); //$NON-NLS-1$
-		}
-
-		out(sb.toString());
-	}
-
-	void doInfoDisplay()
-	{
-		StringBuilder sb = new StringBuilder();
-		sb.append("Num Enb Expression"+m_newline); //$NON-NLS-1$
-
-		// our list of displays
-		int count = displayCount();
-		for(int i=0; i<count; i++)
-		{
-			DisplayAction b = displayAt(i);
-			int num = b.getId();
-			String exp = b.getContent();
-
-			sb.append(':');
-			FieldFormat.formatLong(sb, num, 3);
-
-			if (b.isEnabled())
-				sb.append(" y  "); //$NON-NLS-1$
-			else
-				sb.append(" n  "); //$NON-NLS-1$
-
-			sb.append(exp);
-			sb.append(m_newline);
-		}
-
-		out(sb.toString());
-	}
-
-	void doInfoArgs() throws PlayerDebugException
-	{
-		waitTilHalted();
-
-		// dump a set of locals
-		StringBuilder sb = new StringBuilder();
-
-		// use our expression cache formatting routine
-		try
-		{
-			int num = propertyGet(DISPLAY_FRAME_NUMBER);
-			Frame[] frames = m_session.getFrames();
-			Variable[] vars = frames[num].getArguments(m_session);
-			for(int i=0; i<vars.length; i++)
-			{
-                m_exprCache.appendVariable(sb, vars[i]);
-				sb.append(m_newline);
-			}
-		}
-		catch(NullPointerException npe)
-		{
-			sb.append(getLocalizationManager().getLocalizedTextString("noArguments")); //$NON-NLS-1$
-		}
-        catch(ArrayIndexOutOfBoundsException aix)
-        {
-            sb.append(getLocalizationManager().getLocalizedTextString("notInValidFrame")); //$NON-NLS-1$
+                case SHOW_FILES_CMD:
+                    doShowFiles();
+                    break;
+
+                case SHOW_BREAK_CMD:
+                    doShowBreak();
+                    break;
+
+                case SHOW_VAR_CMD:
+                    doShowVariable();
+                    break;
+
+                case SHOW_MEM_CMD:
+                    doShowMemory();
+                    break;
+
+                case SHOW_LOC_CMD:
+                    doShowLocations();
+                    break;
+
+                case SHOW_DIRS_CMD:
+                    doShowDirectories();
+                    break;
+
+                default:
+                    doUnknown("show", subCmdString); //$NON-NLS-1$
+                    break;
+            }
         }
+    }
 
-		out(sb.toString());
-	}
-
-	void doInfoLocals() throws PlayerDebugException
-	{
-		waitTilHalted();
-
-		// dump a set of locals
-		StringBuilder sb = new StringBuilder();
-
-		// use our expression cache formatting routine
-		try
-		{
-			// get the variables from the requested frame
-			int num = propertyGet(DISPLAY_FRAME_NUMBER);
-			Frame[] ar = m_session.getFrames();
-			Frame ctx = ar[num];
-			Variable[] vars = ctx.getLocals(m_session);
-
-			for(int i=0; i<vars.length; i++)
-			{
-				Variable v = vars[i];
-
-				// see if variable is local
-				if ( v.isAttributeSet(VariableAttribute.IS_LOCAL) )
-				{
-                    m_exprCache.appendVariable(sb, v);
-					sb.append(m_newline);
-				}
-			}
-		}
-		catch(NullPointerException npe)
-		{
-			sb.append(getLocalizationManager().getLocalizedTextString("noLocals")); //$NON-NLS-1$
-		}
-        catch(ArrayIndexOutOfBoundsException aix)
-        {
-            sb.append(getLocalizationManager().getLocalizedTextString("notInValidFrame")); //$NON-NLS-1$
+    void doShowUri() {
+        // dump the URI that the player has sent us
+        try {
+            StringBuilder sb = new StringBuilder();
+            sb.append("URI = "); //$NON-NLS-1$
+            sb.append(m_session.getURI());
+            out(sb.toString());
+        } catch (Exception e) {
+            err(getLocalizationManager().getLocalizedTextString("noUriReceived")); //$NON-NLS-1$
         }
+    }
 
-		out(sb.toString());
-	}
-
-	void doInfoScopeChain() throws PlayerDebugException
-	{
-		waitTilHalted();
-
-		// dump the scope chain
-		StringBuilder sb = new StringBuilder();
-
-		// use our expression cache formatting routine
-		try
-		{
-			// get the scope chainfrom the requested frame
-			int num = propertyGet(DISPLAY_FRAME_NUMBER);
-			Frame[] ar = m_session.getFrames();
-			Frame ctx = ar[num];
-			Variable[] scopes = ctx.getScopeChain(m_session);
-
-			for(int i=0; i<scopes.length; i++)
-			{
-				Variable scope = scopes[i];
-                m_exprCache.appendVariable(sb, scope);
-				sb.append(m_newline);
-			}
-		}
-		catch(NullPointerException npe)
-		{
-			sb.append(getLocalizationManager().getLocalizedTextString("noScopeChain")); //$NON-NLS-1$
-		}
-        catch(ArrayIndexOutOfBoundsException aix)
-        {
-            sb.append(getLocalizationManager().getLocalizedTextString("notInValidFrame")); //$NON-NLS-1$
+    /**
+     * Dump the content of files in a raw format
+     */
+    void doShowFiles() {
+        try {
+            StringBuilder sb = new StringBuilder();
+            for (Isolate isolate : m_session.getWorkers()) {
+
+                Iterator itr = m_fileInfo.getAllFiles(isolate.getId());
+
+                while (itr.hasNext()) {
+                    SourceFile m = (SourceFile) ((Map.Entry) itr.next()).getValue();
+
+                    String name = m.getName();
+                    int id = m.getId();
+                    String path = m.getFullPath();
+
+                    sb.append(id);
+                    sb.append(' ');
+                    sb.append(path);
+                    sb.append(", "); //$NON-NLS-1$
+                    sb.append(name);
+                    sb.append(" ("); //$NON-NLS-1$
+                    if (isolate.getId() == Isolate.DEFAULT_ID) {
+                        sb.append(getLocalizationManager().getLocalizedTextString("mainThread")); //$NON-NLS-1$
+                    } else {
+                        HashMap<String, Object> wArgs = new HashMap<String, Object>();
+                        wArgs.put("worker", isolate.getId() - 1); //$NON-NLS-1$
+                        sb.append(getLocalizationManager().getLocalizedTextString("inWorker", wArgs)); //$NON-NLS-1$
+                    }
+                    sb.append(")"); //$NON-NLS-1$
+                    sb.append(m_newline);
+                }
+            }
+            out(sb.toString());
+        } catch (NullPointerException npe) {
+            err(getLocalizationManager().getLocalizedTextString("noSourceFilesFound")); //$NON-NLS-1$
         }
+    }
 
-		out(sb.toString());
-	}
-	
-	void doInfoTargets()
-    {
-        if (!haveConnection())
-		{
-			out(getLocalizationManager().getLocalizedTextString("noActiveSession")); //$NON-NLS-1$
-			if (m_launchURI != null)
-			{
-				Map<String, Object> args = new HashMap<String, Object>();
-				args.put("uri", m_launchURI); //$NON-NLS-1$
-				out(getLocalizationManager().getLocalizedTextString("runWillLaunchUri", args)); //$NON-NLS-1$
-			}
-		}
-        else
-		{
-			String uri = m_session.getURI();
-			if (uri == null || uri.length() < 1)
-				err(getLocalizationManager().getLocalizedTextString("targetUnknown")); //$NON-NLS-1$
-			else
-				out(uri);
-		}
+    void doShowMemory() {
+        out(uft());
     }
 
-	/**
-	 * Dump some stats about our currently loaded swfs.
-	 */
-    void doInfoSwfs()
-    {
-		try
-		{
-			StringBuilder sb = new StringBuilder();
-			SwfInfo[] swfs = m_fileInfo.getSwfs();
-			for(int i=0; i<swfs.length; i++)
-			{
-				SwfInfo e = swfs[i];
-				if (e == null || e.isUnloaded())
-					continue;
-
-				Map<String, Object> args = new HashMap<String, Object>();
-				args.put("swfName", FileInfoCache.nameOfSwf(e)); //$NON-NLS-1$
-				args.put("size", NumberFormat.getInstance().format(e.getSwfSize())); //$NON-NLS-1$
-
-				try
-				{
-					int size = e.getSwdSize(m_session);
-
-					// our swd is loaded so let's comb through our
-					// list of scripts and locate the range of ids.
-					SourceFile[] files = e.getSourceList(m_session);
-					int max = Integer.MIN_VALUE;
-					int min = Integer.MAX_VALUE;
-					for(int j=0; j<files.length; j++)
-					{
-						SourceFile f = files[j];
-						int id = f.getId();
-						max = (id > max) ? id : max;
-						min = (id < min) ? id : min;
-					}
-
-					args.put("scriptCount", Integer.toString(e.getSourceCount(m_session))); //$NON-NLS-1$
-					args.put("min", Integer.toString(min)); //$NON-NLS-1$
-					args.put("max", Integer.toString(max)); //$NON-NLS-1$
-					args.put("plus", (e.isProcessingComplete()) ? "+" : ""); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					args.put("moreInfo", (size==0) ? getLocalizationManager().getLocalizedTextString("remainingSourceBeingLoaded") : ""); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				catch(InProgressException ipe)
-				{
-					sb.append(getLocalizationManager().getLocalizedTextString("debugInfoBeingLoaded")); //$NON-NLS-1$
-				}
-				args.put("url", e.getUrl()); //$NON-NLS-1$
-				sb.append(getLocalizationManager().getLocalizedTextString("swfInfo", args)); //$NON-NLS-1$
-				sb.append(m_newline);
-			}
-			out( sb.toString() );
-		}
-		catch(NullPointerException npe)
-		{
-			err(getLocalizationManager().getLocalizedTextString("noSWFs")); //$NON-NLS-1$
-		}
-    }
-
-	private static final int AUTHORED_FILE = 1;		// a file that was created by the end user, e.g. MyApp.mxml
-	private static final int FRAMEWORK_FILE = 2;	// a file from the Flex framework, e.g. mx.controls.Button.as, see FRAMEWORK_FILE_PACKAGES
-	private static final int SYNTHETIC_FILE = 3;	// e.g. "<set up XML utilities.1>"
-	private static final int ACTIONS_FILE = 4;		// e.g. "Actions for UIComponent: Frame 1 of Layer Name Layer 1"
+    void doShowLocations() {
+        StringBuilder sb = new StringBuilder();
+        sb.append("Num Type           Disp Enb Address    What" + m_newline); //$NON-NLS-1$
 
-    private static final String[] FRAMEWORK_FILE_PACKAGES // package prefixes that we consider FRAMEWORK_FILEs
-        = new String[] {"mx","flex","text"}; // 'text' is Vellum (temporary) //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+        // our list of breakpoints
+        int count = breakpointCount();
+        for (int i = 0; i < count; i++) {
+            BreakAction b = breakpointAt(i);
+            int num = b.getId();
 
-	/**
-	 * Given a file, guesses what type it is -- e.g. a file created by the end user,
-	 * or a file from the Flex framework, etc.
+            FieldFormat.formatLong(sb, num, 3);
+            sb.append(" breakpoint     "); //$NON-NLS-1$
+
+            if (b.isAutoDisable())
+                sb.append("dis  "); //$NON-NLS-1$
+            else if (b.isAutoDelete())
+                sb.append("del  "); //$NON-NLS-1$
+            else
+                sb.append("keep "); //$NON-NLS-1$
+
+            if (b.isEnabled())
+                sb.append("y   "); //$NON-NLS-1$
+            else
+                sb.append("n   "); //$NON-NLS-1$
+
+            Iterator<Location> itr = b.getLocations().iterator();
+            while (itr.hasNext()) {
+                Location l = itr.next();
+                SourceFile file = l.getFile();
+                String funcName = (file == null)
+                        ? getLocalizationManager().getLocalizedTextString("unknownBreakpointLocation") //$NON-NLS-1$
+                        : file.getFunctionNameForLine(m_session, l.getLine());
+                int offset = adjustOffsetForUnitTests((file == null) ? 0 : file.getOffsetForLine(l.getLine()));
+
+                sb.append("0x"); //$NON-NLS-1$
+                FieldFormat.formatLongToHex(sb, offset, 8);
+                sb.append(' ');
+
+                if (funcName != null) {
+                    Map<String, Object> funcArgs = new HashMap<String, Object>();
+                    funcArgs.put("functionName", funcName); //$NON-NLS-1$
+                    sb.append(getLocalizationManager().getLocalizedTextString("inFunctionAt", funcArgs)); //$NON-NLS-1$
+                }
+
+                sb.append(file.getName());
+                if (file != null) {
+                    sb.append("#"); //$NON-NLS-1$
+                    sb.append(file.getId());
+                }
+                sb.append(':');
+                sb.append(l.getLine());
+
+                try {
+                    SwfInfo info = m_fileInfo.swfForFile(file, l.getIsolateId());
+                    Map<String, Object> swfArgs = new HashMap<String, Object>();
+                    swfArgs.put("swf", FileInfoCache.shortNameOfSwf(info)); //$NON-NLS-1$
+                    sb.append(getLocalizationManager().getLocalizedTextString("inSwf", swfArgs)); //$NON-NLS-1$
+                    if (l.getIsolateId() == Isolate.DEFAULT_ID) {
+                        sb.append(" ("); //$NON-NLS-1$
+                        sb.append(getLocalizationManager().getLocalizedTextString("mainThread")); //$NON-NLS-1$
+                        sb.append(")"); //$NON-NLS-1$
+                    } else {
+                        swfArgs = new HashMap<String, Object>();
+                        swfArgs.put("worker", l.getIsolateId() - 1); //$NON-NLS-1$
+                        sb.append(" ("); //$NON-NLS-1$
+                        sb.append(getLocalizationManager().getLocalizedTextString("inWorker", swfArgs)); //$NON-NLS-1$
+                        sb.append(")"); //$NON-NLS-1$
+                    }
+                } catch (NullPointerException npe) {
+                    // can't find the swf
+                    sb.append(getLocalizationManager().getLocalizedTextString("nonRestorable")); //$NON-NLS-1$
+                }
+                sb.append(m_newline);
+                if (itr.hasNext())
+                    sb.append("                            "); //$NON-NLS-1$
+            }
+        }
+        out(sb.toString());
+    }
+
+    /**
+     * When running unit tests, we want byte offsets into the file to
+     * always be displayed as zero, so that the unit test expected
+     * results will match up with the actual results.  This is just a
+     * simple helper function that deals with that.
+     */
+    private int adjustOffsetForUnitTests(int offset) {
+        if (System.getProperty("fdbunit") == null) //$NON-NLS-1$
+            return offset;
+        else
+            return 0;
+    }
+
+    void doShowDirectories() {
+        out(getLocalizationManager().getLocalizedTextString("sourceDirectoriesSearched")); //$NON-NLS-1$
+        Iterator<String> iter = m_sourceDirectories.iterator();
+        while (iter.hasNext()) {
+            String dir = iter.next();
+            out("  " + dir); //$NON-NLS-1$
+        }
+    }
+
+    void doHalt() throws SuspendedException, NotConnectedException, NoResponseException {
+        out(getLocalizationManager().getLocalizedTextString("attemptingToSuspend")); //$NON-NLS-1$
+        IsolateSession session = m_session.getWorkerSession(getActiveIsolateId());
+        if (!session.isSuspended())
+            session.suspend();
+        if (session.isSuspended())
+            out(getLocalizationManager().getLocalizedTextString("playerStopped")); //$NON-NLS-1$
+        else
+            out(getLocalizationManager().getLocalizedTextString("playerRunning")); //$NON-NLS-1$
+    }
+
+    public void appendReason(StringBuilder sb, int reason) {
+        switch (reason) {
+            case SuspendReason.Unknown:
+                sb.append(getLocalizationManager().getLocalizedTextString("suspendReason_Unknown")); //$NON-NLS-1$
+                break;
+
+            case SuspendReason.Breakpoint:
+                sb.append(getLocalizationManager().getLocalizedTextString("suspendReason_HitBreakpoint")); //$NON-NLS-1$
+                break;
+
+            case SuspendReason.Watch:
+                sb.append(getLocalizationManager().getLocalizedTextString("suspendReason_HitWatchpoint")); //$NON-NLS-1$
+                break;
+
+            case SuspendReason.Fault:
+                sb.append(getLocalizationManager().getLocalizedTextString("suspendReason_ProgramThrewException")); //$NON-NLS-1$
+                break;
+
+            case SuspendReason.StopRequest:
+                sb.append(getLocalizationManager().getLocalizedTextString("suspendReason_StopRequest")); //$NON-NLS-1$
+                break;
+
+            case SuspendReason.Step:
+                sb.append(getLocalizationManager().getLocalizedTextString("suspendReason_ProgramFinishedStepping")); //$NON-NLS-1$
+                break;
+
+            case SuspendReason.HaltOpcode:
+                sb.append(getLocalizationManager().getLocalizedTextString("suspendReason_HaltOpcode")); //$NON-NLS-1$
+                break;
+
+            case SuspendReason.ScriptLoaded:
+                sb.append(getLocalizationManager().getLocalizedTextString("suspendReason_ScriptHasLoadedIntoFlashPlayer")); //$NON-NLS-1$
+                break;
+        }
+    }
+
+    /**
+     * The big ticket item, where all your questions are answered.
+     */
+    void doInfo() throws AmbiguousException, PlayerDebugException {
+		/* info without any args brings up help */
+        if (!hasMoreTokens())
+            out(getHelpTopic("info")); //$NON-NLS-1$
+        else {
+			/* otherwise we have a boatload of options */
+            String subCmdString = nextToken();
+            int subCmd = infoCommandFor(subCmdString);
+            switch (subCmd) {
+                case INFO_ARGS_CMD:
+                    doInfoArgs();
+                    break;
+
+                case INFO_BREAK_CMD:
+                    doInfoBreak();
+                    break;
+
+                case INFO_FILES_CMD:
+                    doInfoFiles();
+                    break;
+
+                case INFO_FUNCTIONS_CMD:
+                    doInfoFuncs();
+                    break;
+
+                case INFO_HANDLE_CMD:
+                    doInfoHandle();
+                    break;
+
+                case INFO_LOCALS_CMD:
+                    doInfoLocals();
+                    break;
+
+                case INFO_SCOPECHAIN_CMD:
+                    doInfoScopeChain();
+                    break;
+
+                case INFO_SOURCES_CMD:
+                    doInfoSources();
+                    break;
+
+                case INFO_STACK_CMD:
+                    doInfoStack();
+                    break;
+
+                case INFO_VARIABLES_CMD:
+                    doInfoVariables();
+                    break;
+
+                case INFO_DISPLAY_CMD:
+                    doInfoDisplay();
+                    break;
+
+                case INFO_TARGETS_CMD:
+                    doInfoTargets();
+                    break;
+
+                case INFO_SWFS_CMD:
+                    doInfoSwfs();
+                    break;
+
+                case INFO_WORKERS_CMD:
+                    doInfoWorkers();
+                    break;
+
+                default:
+                    doUnknown("info", subCmdString); //$NON-NLS-1$
+                    break;
+            }
+        }
+    }
+
+    void doInfoWorkers() throws NotConnectedException, NotSupportedException, NotSuspendedException, NoResponseException {
+//		waitTilHalted();
+        Isolate[] isolates = m_session.getWorkers();
+        if (isolates == null || isolates.length == 0) {
+            out(getLocalizationManager().getLocalizedTextString("noWorkersRunning")); //$NON-NLS-1$
+            return;
+        }
+        StringBuilder sb = new StringBuilder();
+        for (Isolate t : isolates) {
+            String status = getLocalizationManager().getLocalizedTextString("workerRunning"); //$NON-NLS-1$
+            if (m_session.getWorkerSession(t.getId()).isSuspended()) {
+                status = getLocalizationManager().getLocalizedTextString("workerSuspended"); //$NON-NLS-1$
+            }
+            if (m_activeIsolate == t.getId()) {
+                status += " " + getLocalizationManager().getLocalizedTextString("workerSelected"); //$NON-NLS-1$ //$NON-NLS-2$
+            }
+            if (t.getId() == Isolate.DEFAULT_ID) {
+                sb.append(getLocalizationManager().getLocalizedTextString("mainThread")); //$NON-NLS-1$
+                sb.append(" "); //$NON-NLS-1$
+                sb.append(Isolate.DEFAULT_ID - 1);
+            } else {
+                HashMap<String, Object> workArgs = new HashMap<String, Object>();
+                workArgs.put("worker", (t.getId() - 1)); //$NON-NLS-1$
+                sb.append(getLocalizationManager().getLocalizedTextString("inWorker", workArgs)); //$NON-NLS-1$
+            }
+            sb.append(" - " + status + m_newline); //$NON-NLS-1$
+        }
+        out(sb.toString());
+    }
+
+
+    void doInfoStack() throws PlayerDebugException {
+        waitTilHalted(m_activeIsolate);
+
+        StringBuilder sb = new StringBuilder();
+        Frame[] stack = m_session.getWorkerSession(m_activeIsolate).getFrames();
+        if (stack == null || stack.length == 0)
+            sb.append(getLocalizationManager().getLocalizedTextString("no

<TRUNCATED>

[02/15] FLEX-34291: Merge the donated FDB with the current one.

Posted by ft...@apache.org.
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_no.txt
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_no.txt b/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_no.txt
index 7abc993..336c0f5 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_no.txt
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_no.txt
@@ -1,5 +1,4 @@
-
-
+    
       Licensed to the Apache Software Foundation (ASF) under one or more
       contributor license agreements.  See the NOTICE file distributed with
       this work for additional information regarding copyright ownership.
@@ -15,1575 +14,790 @@
       See the License for the specific language governing permissions and
       limitations under the License.
 
-This file contains the text displayed by the 'help' command in fdb.
-
 
+This file contains the text displayed by the 'help' command in fdb.
 
 It is divided into "topics". For example, when an fdb user types
-
 'help break', the [break] topic below is displayed.
 
-
-
 The first and last lines of each topic should be blank.
-
 They don't get displayed in fdb; they are here only
-
 to make this file more easily readable.
 
-
-
 Help text should be formatted to not wrap
-
 when displayed on an 80-character-wide console.
-
 The following line is 80 characters wide.
 
-
-
 --------------------------------------------------------------------------------
 
-
-
 [?]
 
-
-
 Udefinert kommando. Skriv "help" hvis du vil se en liste over alle 
-
 fdb-kommandoer.
 
-
-
 [break]
 
-
-
 Angi stoppunkt ved valgt linje eller funksjon.
-
 Eksempler:
-
   break 87
-
     Angir et stoppunkt ved linje 87 i gjeldende fil.
-
   break myapp.mxml:56
-
     Angir et stoppunkt ved linje 56 i myapp.mxml.
-
   break #3:29
-
     Angir et stoppunkt ved linje 29 i fil nr. 3.
-
   break doThis
-
     Angir et stoppunkt ved funksjonen doThis() i gjeldende fil.
-
   break myapp.mxml:doThat
-
     Angir et stoppunkt ved funksjonen doThat() i filen myapp.mxml.
-
   break #3:doOther
-
     Angir et stoppunkt ved funksjonen doOther() i fil nr. 3.
-
   break
-
    Angir et stoppunkt ved gjeldende kjøringsadresse i gjeldende stakkramme. 
-
    Dette er nyttig for stopp ved retur til en stakkramme.
-
 Hvis du vil se filnavn og filnummer, skriver du "info sources" eller "info 
-
 files".
-
 Hvis du vil se funksjonsnavn, skriver du "info functions".
-
 Forkortede fil- og funksjonsnavn godtas hvis de ikke er tvetydige.
-
 Hvis linjenummer er angitt, legges stoppet på begynnelsen av koden for den 
-
 linjen.
-
 Hvis funksjon er angitt, legges stoppet på begynnelsen av koden for den 
-
 funksjonen.
-
 Du finner mer om stoppunktkontroll under "commands" og "condition".
 
-
-
 [bt]
 
-
-
 Tilbakesporing i stakk.
 
-
-
 [catch]
 
-
-
 Stopp hvis unntak oppstår. Dette påvirker kun unntak som blir fanget, dvs. 
-
 unntak som skal håndteres av en catch-blokk. Unntak som ikke blir fanget, 
-
 stanses alltid i feilsøkingen.
 
-
-
 Du sletter et catch-punkt med kommandoen "delete".
 
-
-
 Eksempler:
-
   catch *
-
     Stopper ved ethvert unntak som oppstår.
-
   catch ReferenceError
-
     Stopper hvis det oppstår en ReferenceError, enten den fanges eller ikke.
 
-
-
 [cf]
 
-
-
 Vis navn og nummer for gjeldende fil, eller endre gjeldende fil.
-
 Eksempler:
-
   cf
-
     Viser navn og nummer for gjeldende fil.
-
   cf myapp.mxml
-
     Endrer gjeldende fil til myapp.mxml.
-
   cf #29
-
     Endrer gjeldende fil til filnr. 29.
-
 Hvis du vil se filnavn og filnummer, skriver du "info sources" eller "info 
-
 files".
-
 Forkortede filnavn godtas hvis de ikke er tvetydige.
-
 Hvis du lister en fil med kommandoen "list", blir den filen til gjeldende fil.
 
-
-
 [clear]
 
-
-
 Fjern stoppunkt ved valgt linje eller funksjon.
-
 Eksempler:
-
   clear 87
-
     Fjerner stoppunktet ved linje 87 i gjeldende fil.
-
   clear myapp.mxml:56
-
     Fjerner stoppunktet ved linje 56 i myapp.mxml.
-
   clear #3:29
-
     Fjerner stoppunktet ved linje 29 i fil nr. 3.
-
   clear doThis
-
     Fjerner stoppunktet ved funksjonen doThis() i gjeldende fil.
-
   clear myapp.mxml:doThat
-
     Fjerner stoppunktet ved funksjonen doThat() i filen myapp.mxml.
-
   clear #3:doOther
-
     Fjerner stoppunktet ved funksjonen doOther() i fil nr. 3.
-
   clear
-
     Fjerner stoppunktet på gjeldende linje i gjeldende fil. 
-
 Hvis du vil se filnavn og filnummer, skriver du "info sources" eller "info 
-
 files".
-
 Hvis du vil se funksjonsnavn, skriver du "info functions".
-
 Forkortede fil- og funksjonsnavn godtas hvis de ikke er tvetydige.
-
 Hvis linjenummer er angitt, tømmes alle stoppunkt på den linjen
-
 Hvis funksjon er angitt, fjernes stoppunkt på begynnelsen av funksjonen.
 
-
-
 [continue]
 
-
-
 Fortsett kjøring etter stans ved stoppunkt.
-
 Denne kommandoen bruker ingen argumenter.
 
-
-
 [condition]
 
 
-
-
-
 Angi at stoppunkt nummer n skal stoppe kun hvis COND er sann.
-
 Brukes slik: "condition N COND", der N er et heltall og COND er et uttrykk som 
-
 skal evalueres hver gang kjøringen når stoppunkt N.
 
-
-
 [commands]
 
-
-
 Angi kommandoer som skal utføres ved stoppunkt.
-
 Angi nummeret til stoppunktet som et argument etter "commands".
-
 Hvis du ikke oppgir et argument, brukes siste angitte stoppunkt som mål.
-
 Kommandoene følger deretter, og starter på neste linje.
-
 Skriv en linje som inneholder "end" for å angi at de skal avsluttes.
-
 Angi "silent" på første linje for å gjøre stoppunktet stumt. Da vises ingen 
-
 utdata når kjøringen kommer til stoppunktet, med unntak av det kommandoen viser.
-
 Eksempel:
-
   (fdb) commands
-
   Skriv inn kommandoer for når stoppunkt 1 nås, én kommando per linje.
-
   Avslutt med en linje der det bare står "end".
-
   >w
-
   >end
 
-
-
 [delete]
 
-
-
 Slett ett eller flere stoppunkt.
-
 Eksempler:
-
   delete
-
     Sletter alle stoppunkt
-
   delete 2 5
-
     Sletter stoppunkt nr. 2 og 5.
-
 Hvis du vil se numrene til stoppunktene, skriver du "info breakpoints".
 
-
-
 [directory]
 
-
-
 Endre listen over kataloger fdb søker etter kildefiler i.
 
-
-
 Eksempler:
 
-
-
   directory
-
     Gjenoppretter listen til standard, dvs. katalogen der kildefilen ble 
-
     kompilert til objektkode, fulgt av gjeldende arbeidskatalog.
 
-
-
   directory C:\MySource        (Windows)
-
   directory /MySource          (Mac)
-
     Legger til angitt katalog i begynnelsen av listen over kataloger som blir 
-
     gjennomsøkt etter kilde. Hvis du f.eks. ser etter kilden til klassen 
-
     mypackage.MyClass, ser feilsøkingen etter både 
-
     C:\MySource\mypackage\MyClass.as og C:\MySource\MyClass.as.
 
-
-
   directory C:\Dir1;C:\Dir2    (Windows: bruk ; (semikolon) som skilletegn)
-
   directory /Dir1:/Dir2        (Mac: bruk : (kolon) som skilletegn)
-
     Legger til flere kataloger i begynnelsen av listen over kataloger som blir 
-
     gjennomsøkt etter kilde.
 
-
-
 Hvis du vil se gjeldende liste, skriver du "show directories".
 
-
-
 [disable]
 
-
-
 Deaktiver ett eller flere stoppunkt eller automatvisningsuttrykk.
-
 Eksempler:
-
   disable
-
   disable breakpoints
-
     Deaktiverer alle stoppunkt.
-
   disable 2 5
-
   disable breakpoints 2 5
-
     Deaktiverer stoppunkt nr. 2 og 5.
-
   disable display
-
     Deaktiverer alle automatvisningsuttrykk.
-
   disable display 1 3
-
     Deaktiverer automatvisningsuttrykk nr. 1 og 3.
-
 Hvis du vil se numrene til stoppunktene, skriver du "info breakpoints".
-
 Hvis du vil se numrene til automatvisningsuttrykkene, skriver du "info display".
 
-
-
 [disassemble]
 
-
-
 (Kun ActionScript 2, støttes ikke ved feilsøking av ActionScript 3)
 
-
-
 Del opp en angitt del av kildekoden.
-
 Standard er gjeldende listelinje.
-
 Argumenter som støttes, er de samme som for listekommando.
-
 Eksempler:
-
   disassemble 87
-
     Deler opp linje 87 i gjeldende fil.
-
   disassemble 87 102
-
     Deler opp linje 87 til 102 i gjeldende fil.
-
   disassemble doThis
-
       Deler opp funksjonen doThis() i gjeldende fil.
-
 I tillegg til å bruke enkle linjenummer som ovenfor, kan du angi linjer på 
-
 flere måter:
-
    myapp.mxml
-
       Linje 1 i myapp.mxml.
-
    myapp.mxml:doThat
-
       Første linje i funksjonen doThat() i myapp.mxml.
-
    myapp.mxml:56
-
       Linje 56 i myapp.mxml.
-
    #3
-
       Linje 1 i fil nr. 3.
-
    #3:doOther
-
       Den linjen i fil nr. 3 der funksjonen doOther() begynner.
-
    #3:29
-
       Linje 29 i fil nr. 3.
 
-
-
 [display]
 
-
-
 Legg til et uttrykk i listen over automatvisningsuttrykk.
-
 Eksempel:
-
   display employee.name
-
     Legger "employee.name" til listen over automatvisningsuttrykk.
-
     Hver gang fdb stanser, vises verdien for employee.name.
-
 Argumentet for denne kommandoen ligner argumentet for "print".
-
 Hvis du vil se listen over automatvisningsuttrykk og tilhørende nummer, skriver 
-
 du "info display".
 
-
-
 [down]
 
-
-
 Velg og vis stakkrammen som denne kaller.
-
 Påfølgende "info arguments"- og "info locals"-kommandoer viser lokale 
-
 innstillinger og argumenter for valgt ramme.
-
 Se også "up" og "frame". 
 
-
-
 [enable]
 
-
-
 Aktiver ett eller flere stoppunkt eller automatvisningsuttrykk.
-
 Eksempler:
-
   enable
-
   enable breakpoints
-
     Aktiverer alle stoppunkt.
-
   enable 2 5
-
   enable breakpoints 2 5
-
     Aktiverer stoppunkt nr. 2 og 5.
-
   enable display
-
     Aktiverer alle automatvisningsuttrykk.
-
   enable display 1 3
-
     Aktiverer automatvisningsuttrykk nr. 1 og 3.
-
 Hvis du vil se numrene til stoppunktene, skriver du "info breakpoints".
-
 Hvis du vil se numrene til automatvisningsuttrykkene, skriver du "info display".
 
-
-
 [file]
 
-
-
 Angi et program som skal feilsøkes uten at det startes.
-
 Eksempler:
-
   file http://www.mysite.com/myapp.mxml
-
     Angi et MXML-program som skal feilsøkes.
-
   file myapp.swf
-
     Angi en lokal SWF-fil som skal feilsøkes, og som ligger i gjeldende katalog.
-
     I dette tilfellet må også myapp.swd (filen med feilsøkingsinformasjonen) 
-
     ligge i gjeldende katalog.
-
 Denne kommandoen starter ikke programmet. Du bruker kommandoen "run" uten 
-
 argumenter for å starte feilsøkingen av programmet.
-
 I stedet for å bruke "file <mål>" fulgt av "run", kan du bare angi hvilket 
-
 program som skal feilsøkes som et argument i "run":
-
   run http://mysite.com/myapp.mxml
-
   run myapp.swf
-
 Du kan også angi programmet som skal feilsøkes som et kommandolinjeargument, 
-
 når du starter fdb:
-
   fdb http://www.mysite.com/myapp.mxml
-
   fdb myapp.swf
-
 I dette tilfellet trenger du ikke å bruke "file" eller "run".
-
 Hvis du bruker "run" uten å angi et program som skal feilsøkes, venter fdb til 
-
 et program kobler til det.
 
-
-
 [finish]
 
-
-
 Kjør til gjeldende funksjon kommer tilbake.
-
 Denne kommandoen bruker ingen argumenter.
 
-
-
 [frame]
 
-
-
 Velg og vis en bestemt stakkramme.
-
 Denne kommandoen tar et valgfritt argument: et rammenummer.
-
 Hvis det ikke oppgis et argument, er standard virkemåte retur til gjeldende 
-
 øverste ramme (ramme 0).
-
 Eksempler:
-
   frame 4
-
   frame
-
 Påfølgende "info arguments"- og "info locals"-kommandoer viser lokale 
-
 innstillinger og argumenter for valgt ramme.
-
 Se også "up", "down" og "bt". 
 
-
-
 [handle]
 
-
-
 Angi hvordan fdb skal håndtere en feil i Flash Player.
-
 Eksempler:
-
   handle recursion_limit stop
-
     Hvis det oppstår en recursion_limit-feil, vises en melding i fdb, og 
-
     kjøringen stanser som ved et stoppunkt.
-
   handle all print nostop
-
     Hvis det oppstår en feil av noe slag, vises en melding i fdb, men 
-
     kjøringen stanser ikke.
-
 Det første argumentet er navnet på en feil, eller "all".
-
 Tilleggsargumenter er handlinger som gjelder den angitte feilen.
-
 Hvis du vil se navn på feil, skriver du "info handle".
-
 Handlinger er print/noprint og stop/nostop.
-
 "print" vil si at en melding vises hvis denne feilen oppstår.
-
 "stop" vil si at feilsøkeren tas i bruk hvis feilen oppstår. "print" er 
-
 implisert.
 
-
-
 [help]
 
-
-
 Ny bruker av fdb? Skriv "tutorial" hvis du vil ha litt grunnleggende 
-
 informasjon.
-
 Liste over fdb-kommandoer:
-
 bt (bt)             Vis tilbakesporing av alle stakkrammer
-
 break (b)           Angi stoppunkt ved valgt linje eller funksjon
-
 catch (ca)          Stopp hvis unntak oppstår
-
 cf (cf)             Vis navn og nummer for gjeldende fil
-
 clear (cl)          Fjern stoppunkt ved valgt linje eller funksjon
-
 condition (cond)    Legg til / fjern betingelsesuttrykk på et stoppunkt
-
 continue (c)        Fortsett kjøring etter stans ved stoppunkt
-
 commands (com)      Angi at kommandoer skal kjøre ved stoppunkt
-
 delete (d)          Slett alle stoppunkt eller automatvisningsuttrykk
-
 directory (dir)     Legg til en katalog i søkebanen for kildefiler
-
 disable (disab)     Deaktiver alle stoppunkt eller automatvisningsuttrykk
-
 disassemble (disas)       Del opp kildelinjer eller funksjoner
-
 display (disp)      Legg til et automatvisningsuttrykk
-
 enable (e)          Aktiver alle stoppunkt eller automatvisningsuttrykk
-
 file (fil)          Angi hvilket program som skal feilsøkes.
-
 finish (f)          Kjør til gjeldende funksjon kommer tilbake
-
 handle (han)        Angi hvordan en feil skal håndteres
-
 help (h)            Vis hjelp for fdb-kommandoer
-
 home (ho)           Angi listeplassering der kjøring stanses
-
 info (i)            Vis informasjon om programmet som feilsøkes
-
 kill (k)            Avbryt kjøring av programmet som feilsøkes
-
 list (l)            List opp angitt funksjon eller linje
-
 next (n)            Gå gjennom program trinnvis
-
 print (p)           Vis verdien for variabelen EXP
-
 pwd (pw)            Vis arbeidskatalog
-
 quit (q)            Avslutt fdb
-
 run (r)             Start feilsøkt program
-
 set (se)            Angi verdien til en variabel
-
 source (so)         Les fdb-kommandoer fra en fil
-
 step (s)            Gå gjennom program trinnvis til det når en annen kildelinje
-
 tutorial (t)        Vis en opplæring for fdb
-
 undisplay (u)       Fjern et automatvisningsuttrykk
-
 viewswf (v)         Angi eller tøm filter for fillisting basert på SWF
-
 watch (wa)          Legg til et overvåkningspunkt på en angitt variabel
-
 what (wh)           Viser kontekst for en variabel
-
 where (w)           Samme som bt
-
 Skriv "help" fulgt av navnet på en kommando hvis du vil se hele dokumentasjonen 
-
 om den.
 
-
-
 [home]
 
-
-
 Angi listeplasseringen der kjøring stanses.
 
-
-
 [info]
 
-
-
 Generisk kommando som brukes til å vise ting om programmet som feilsøkes.
-
 Liste over info-delkommandoer:
-
 info arguments (i a)    Argumentvariabler for gjeldende stakkramme
-
 info breakpoints (i b)  Status for brukerdefinerbare stoppunkt
-
 info display (i d)      Vis liste over automatvisningsuttrykk
-
 info files (i f)        Navn på mål og filer som feilsøkes
-
 info functions (i fu)   Alle funksjonsnavn
-
 info handle (i h)       Hvordan feil håndteres
-
 info locals (i l)       Lokale variabler for gjeldende stakkramme
-
 info scopechain (i sc)  Scope chain for gjeldende stakkramme
-
 info sources (i so)     Kildefiler i programmet
-
 info stack (i s)        Tilbakesporing i stakk
-
 info swfs (i sw)        Liste over SWF-filer i denne økten
-
 info targets(i t)       Programmet som feilsøkes
-
 info variables (i v)    Alle globale og statiske variabelnavn
-
 Skriv "help info" fulgt av navnet på en info-delkommando hvis du vil se hele 
-
 dokumentasjonen om den.
 
-
-
 [info arguments]
 
-
-
 Vis argumenter for gjeldende stakkramme.
 
-
-
 [info breakpoints]
 
-
-
 Vis status for alle stoppunkt og overvåkningspunkt.
-
 Kolonnen Type viser ett av følgende:
-
    breakpoint   - normalt stoppunkt
-
    watchpoint   - overvåkningspunkt
-
 Kolonnen Disp inneholder enten "keep", "del" eller "dis", som viser 
-
 stoppunktets disposisjon etter at det er nådd. "dis" vil si at stoppunktet 
-
 deaktiveres, og "del" vil si at det slettes.  
-
 Kolonnene "Address" og "What" viser henholdsvis adresse og fil-/linjenummer. 
 
-
-
 [info display]
 
-
-
 Vis liste over automatvisningsuttrykk og tilhørende tall.
 
-
-
 [info files]
 
-
-
 Vis navn og nummer for filene til programmet som feilsøkes, inkludert 
-
 kildefiler, rammeverkfiler og automatisk opprettede filer.
-
 Eksempler:
-
   info files
-
     Lister alle filer alfabetisk etter kategori
-
   info files my
-
   info files my*
-
     Lister alle filer hvis navn begynner på "my" alfabetisk.
-
   info files *.as
-
     Lister alle filer hvis navn slutter med ".as" alfabetisk.
-
   info files *foo*
-
     Lister alle filer hvis navn inneholder "foo" alfabetisk. 
-
 Filer vises i formatet navn#N, der N er filnummeret.
-
 Du kan bruke #N i stedet for et filnavn i flere kommandoer.
 
-
-
 [info functions]
 
-
-
 Vis funksjonsnavn.
-
 Eksempler:
-
   info functions .
-
     Vis alle funksjoner i gjeldende fil.
-
   info functions myapp.mxml
-
     Vis alle funksjoner i myapp.mxml.
-
   info functions #3
-
     Viser alle funksjoner i fil nr. 3.
-
   info functions
-
     Viser alle funksjoner i alle filer.
-
 Hvis du vil se filnavn og filnummer, skriver du "info sources" eller "info 
-
 files".
-
 Forkortede filnavn godtas hvis de ikke er tvetydige.
 
-
-
 [info handle]
 
-
-
 Vis hva fdb gjør når det oppstår en feil i Flash Player.
-
 Eksempler:
-
   info handle
-
     Vis hvordan fdb håndterer alle feil.
-
   info handle recursion_limit
-
     Vis hvordan fdb håndterer en recursion_limit-feil.
 
-
-
 [info locals]
 
-
-
 Vis lokale variabler for gjeldende stakkramme.
 
-
-
 [info scopechain]
 
-
-
 Vis scope chain for gjeldende stakkramme. En "scope chain" er listen med 
-
 objekter som blir gjennomsøkt når Flash Player prøver å løse et symbolnavn.
 
-
-
 [info sources]
 
-
-
 Vis navn og nummer for kildefilene til programmet som feilsøkes. Rammeverkfiler 
-
 og automatisk opprettede filer inkluderes ikke.
-
 Filer vises i formatet navn#N, der N er filnummeret.
-
 Du kan bruke #N i stedet for et filnavn i flere kommandoer.
 
-
-
 [info stack]
 
-
-
 Tilbakesporing i stakk.
 
-
-
 [info swfs]
 
-
-
 Vis SWF-filer som feilsøkingsøkten kjenner. Du kan bruke kommandoen "viewswf" 
-
 hvis du vil vite mer om hvordan fillisten kan filtreres ut fra navn på 
-
 SWF-filer. 
 
-
-
 [info targets]
 
-
-
 Vis URL-adresse (http: eller file:) for programmet som feilsøkes.
 
-
-
 [info variables]
 
-
-
 Vis alle globale og statiske variabelnavn og -verdier.
 
-
-
 [info ?]
 
-
-
 Udefinert info-kommando. Prøv å skrive "help info".
 
-
-
 [kill]
 
-
-
 Avbryt kjøring av programmet som feilsøkes.
-
 Denne kommandoen bruker ingen argumenter.
 
-
-
 [list]
 
-
-
 Vis liste med kodelinjer i en kildefil.
-
 Eksempler:
-
   list
-
     Viser ti linjer til i gjeldende fil, etter eller rundt forrige liste.
-
   list -
-
     Viser ti linjer før en tidligere liste i gjeldende fil.
-
   list 87
-
     Viser ti linjer i gjeldende fil rundt linje 87.
-
   list 87 102
-
     Viser linje 87 til 102 i gjeldende fil.
-
 I tillegg til å bruke enkle linjenummer som ovenfor, kan du angi linjer på sju 
-
 andre måter:
-
   doThis
-
       Den første linjen av funksjonen doThis() i gjeldende fil.
-
    myapp.mxml
-
       Linje 1 i myapp.mxml.
-
    myapp.mxml:doThat
-
       Første linje i funksjonen doThat() i myapp.mxml.
-
    myapp.mxml:56
-
       Linje 56 i myapp.mxml.
-
    #3
-
       Linje 1 i fil nr. 3.
-
    #3:doOther
-
       Den linjen i fil nr. 3 der funksjonen doOther() begynner.
-
    #3:29
-
       Linje 29 i fil nr. 3.
-
 Hvis du vil se filnavn og filnummer, skriver du "info sources" eller "info 
-
 files".
-
 Hvis du vil se funksjonsnavn, skriver du "info functions".
-
 Forkortede fil- og funksjonsnavn godtas hvis de ikke er tvetydige.
-
 Hvis du lister en fil, blir den filen til gjeldende fil. (Se under kommandoen 
-
 "cf".)
 
-
-
 [next]
 
-
-
 Gå gjennom program trinnvis, gjennom delrutinekall.
-
   next
-
     Gå videre ett trinn.
-
   next 3
-
     Gå videre tre trinn, eller til programmet stanser av en annen grunn.
-
 I likhet med kommandoen "step", utføres denne kommandoen såfremt det ikke 
-
 oppstår delrutinekall. Når delrutinekall oppstår, behandles kallet som én 
-
 instruksjon.
 
-
-
 [print]
 
-
-
 Vis verdien til en variabel eller et uttrykk.
-
 Eksempler:
-
   print i
-
     Vis verdien til i.
-
   print employee.name
-
     Vis verdien til employee.name.
-
   print employee
-
     Vis verdien til objektet employee.
-
     Resultatet kan være så enkelt som [Object 10378].
-
   print employee.
-
     Vis verdiene til alle egenskaper for objektet employee.
-
   print *employee
-
     Vis verdiene til alle egenskaper for objektet employee.
-
     Prefikset * som operator, brukes på samme måte som suffikset . som operator.
-
   print #10378.
-
     Vis verdiene til alle egenskaper for objekt nr. 10378.
-
 Tilgjengelige variabler er alle som er i den valgte stakkrammens leksikalske 
-
 miljø, samt alle med enten globalt omfang eller hvis omfang dekker en hel fil.
 
-
-
 [pwd]
 
-
-
 Vis gjeldende arbeidskatalog.
-
 Dette er katalogen fdb ble startet fra. Den kan ikke endres i fdb. Argumentet 
-
 for "run" og "source" kan spesifiseres i forhold til denne katalogen.
-
 Denne kommandoen bruker ingen argumenter.
 
-
-
 [quit]
 
-
-
 Avslutt fdb.
-
 Denne kommandoen bruker ingen argumenter.
 
-
-
 [run]
 
-
-
 Start en feilsøkingsøkt.
-
 Eksempler:
-
   run http://www.mysite.com/myapp.mxml
-
     Kjører angitt MXML-program.
-
   run myapp.swf
-
   run mydir\myapp.swf
-
   run c:\mydir\myapp.swf
-
     Kjører den lokale SWF-filen myapp.swf, som kan spesifiseres enten i forhold 
-
     til gjeldende katalog (se under kommandoen "pwd") eller med en fast bane. 
-
     I så fall må også myapp.swd (filen med feilsøkingsinformasjonen) finnes i 
-
     samme katalog som myapp.swf.
-
   run
-
     Kjør programmet som tidligere ble spesifisert med kommandoen "file".
-
     Hvis det ikke er angitt et program, venter fdb til et program kobles til. 
-
     Det oppstår et tidsavbrudd hvis ingen programmer kobles til.
-
 "run" starter programmet i en nettleser eller en frittstående Flash Player.
-
 Så snart programmet starter, bryter det inn i fdb så du kan angi stoppunkt osv.
 
-
-
 På Macintosh støttes kun kommandoen "run" uten argumenter. Du må da starte 
-
 Flash Player manuelt.
 
-
-
 [set]
 
-
-
 Angi verdien til en variabel eller en enkel variabel.
-
 Enkle variabler er variabler som kun finnes i fdb, de er ikke en del av 
-
 programmet.
-
 Enkle variabler har prefikset $, og kan ha et hvilket som helst navn som ikke 
-
 kommer i konflikt med en eksisterende variabel. Eksempel: $minVar. Enkle 
-
 variabler brukes også til å kontrollere ulike deler av fdb. 
 
-
-
 Følgende enkle variabler brukes av fdb.
-
 $listsize          – antall kildelinjer som skal vises når kommandoen "list" 
-
                      brukes.
-
 $columnwrap        – kolonnenummer som viser hvor utdata brytes for ny linje
-
 $infostackshowthis – hvis verdien er 0, vises ikke "this" i tilbakesporing av 
-
                      stakk
-
 $invokegetters     – hvis verdien er 0, kan ikke fdb sende getter-funksjoner
-
 $bpnum             – siste definerte stoppunktnummer
-
 $displayattributes – hvis verdien er 1, viser "print var" alle attributter for 
-
                      medlemmer av "var" (f.eks. private og statiske)
 
-
-
 Eksempler:
-
   set i = 3
-
     Angir at variabelen i har nummeret 3.
-
   set employee.name = "Susan"
-
     Angir at variabelen employee.name har verdien Susan.
-
   set $myVar = 20
-
     Angir at den enkle variabelen $myVar har nummeret 20.
 
-
-
 [show]
 
-
-
 Generisk kommando som brukes til å vise ting om status for fdb.
-
 Liste over show-delkommandoer:
-
 show break (sh b)       Plassering ved og grunn til utsettelse av kjøring
-
 show directories (sh d) Kataloger som skal gjennomsøkes etter kildefiler
-
 show files (sh f)       Målfiler og -baner
-
 show functions (sh fu)  Informasjon om tilordning av funksjonslinjer 
-
 show locations (sh l)   Plassering av stoppunkt
-
 show memory (sh m)      Minnebruk for øyeblikket
-
 show net (sh n)         Meldingsstatistikk for spilleren 
-
 show properties (sh p)  Verdier for egenskaper
-
 show uri (sh u)         Spillerens URI for denne økten 
-
 show variable (sh v)    Innhenting av ren variabel
-
 Skriv "help show" fulgt av navnet på en show-delkommando hvis du vil se hele 
-
 dokumentasjonen om den.
 
-
-
 [show break]
 
-
-
 Vis forskyvningen i SWF-filen som programmet har stanset ved
 
-
-
 [show directories]
 
-
-
 Vis gjeldende søkebane for henting av kildefiler.
 
-
-
 [show files]
 
-
-
 Vis bane og filnavn for alle målfiler
 
-
-
 [show functions]
 
-
-
 Vis tilordningsinformasjon for funksjon-til-linjenummer.
-
 Eksempler:
-
   show functions .
-
     Viser tilordningsinformasjon for alle funksjoner i gjeldende fil.
-
   show functions myapp.mxml
-
     Viser tilordningsinformasjon for alle funksjoner i myapp.mxml.
-
   show functions #3
-
     Viser tilordningsinformasjon for alle funksjoner i fil nr. 3.
-
   show functions
-
     Viser tilordningsinformasjon for alle funksjoner i alle filer.
-
 Hvis du vil se filnavn og filnummer, skriver du "info sources" eller "info 
-
 files".
-
 Forkortede filnavn godtas hvis de ikke er tvetydige.
 
-
-
 [show locations]
 
-
-
 Viser en liste over plasseringer som er angitt for hvert stoppunkt
 
-
-
 [show memory]
 
-
-
 Viser minnestatistikk for Java VM.
 
-
-
 [show net]
 
-
-
 Vis informasjon om meldinger som er sendt til og mottatt fra Flash Player.
 
-
-
 [show properties]
 
-
-
 Viser en liste over enkle variabler som brukes i feilsøkingen 
 
-
-
 [show uri]
 
-
-
 Vis URI som spilleren har sendt for denne økten.
 
-
-
 [show variable]
 
-
-
 Vis verdien til medlemmer av variabelen. Du trenger to parametere: den første 
-
 er en numerisk variabelidentifikator, den andre er navnet på egenskapen til 
-
 variabelen. Den enkle variabelen $invokegetters brukes til å avgjøre om 
-
 egenskaps-getteren sendes eller ikke, dersom den eksisterer.
-
 Eksempel:
-
     show variable 1 __proto__
 
-
-
 [show ?]
 
-
-
 Udefinert show-kommando. Prøv å skrive "help show".
 
-
-
 [source]
 
-
-
 Les fdb-kommandoer fra en fil, og kjør dem.
-
   source mycommands.txt
-
   source mydir\mycommands.txt
-
   source c:\mydir\mycommands.txt
-
     Leser filen mycommands.txt og kjører fdb-kommandoene i den.
-
     Du kan angi filen med kommandoene
-
 	i forhold til gjeldende katalog (se under kommandoen "pwd")
-
 	eller med en fast bane.
-
 Filen .fdbinit leses automatisk på denne måten når fdb startes.
-
 Kun gjeldende katalog gjennomsøkes etter .fdbinit. Du kan dermed konfigurere 
-
 flere .fdbinit-filer for ulike prosjekter.
 
-
-
 [step]
 
-
-
 Gå gjennom program trinnvis til det når en annen kildelinje.
-
 Eksempler:
-
   step
-
     Gå videre ett trinn.
-
   step 3
-
     Gå videre tre trinn, eller til programmet stanser av en annen grunn.
 
-
-
 [tutorial]
 
-
-
 Vis en opplæring for fdb.
-
 Denne kommandoen bruker ingen argumenter.
 
-
-
 [Tutorial]
 
-
-
 En typisk fdb-økt:
-
 Start et program med "run".
-
 Vis filnavn med "info sources".
-
 List opp en fil med "list".
-
 Angi stoppunkt med "break".
-
 Kjør programmet med "continue" til det når et stoppunkt.
-
 Se på status for programmet med "where", "print" og "info locals".
-
 Kjør enkeltsetninger med "next", "step" og "finish".
-
 Fortsett kjøringen med "continue".
-
 Avslutt fdb med "quit".
 
-
-
 [undisplay]
 
-
-
 Fjern ett eller flere automatvisningsuttrykk.
-
 Eksempler:
-
   undisplay
-
     Fjern alle automatvisningsuttrykk.
-
   undisplay 2 7
-
     Fjern automatvisningsuttrykk nr. 2 og 7.
-
 Hvis du vil se listen over automatvisningsuttrykk og tilhørende nummer, skriver 
-
 du "info display".
 
-
-
 [up]
 
-
-
 Velg og vis stakkrammen som kalte denne.
-
 Påfølgende "info arguments"- og "info locals"-kommandoer viser
-
 lokale innstillinger og argumenter for valgt ramme.
-
 Se også "down" og "frame".
 
-
-
 [viewswf]
 
-
-
 Angir eller tømmer filter for filliste (dvs. "info files" og "info sources"), 
-
 ut fra navn på SWF-fil. 
-
 Hvis du ikke angir noen parametere, vises alle filer. Hvis samme fil er i én 
-
 eller flere SWF-filer, viser listen kun første forekomst av filen. Hvis du vil 
-
 se andre forekomster av filen, bruker du filens nummer (f.eks. "list #192"), 
-
 eller du kan bruke denne kommandoen med en parameter (se nedenfor) for å vise 
-
 filer fra en bestemt SWF-fil. Med kun SWF-navnet som vises med kommandoen "info 
-
 swfs", som parameter, vises kun filene fra angitt SWF-fil. 
-
 Filer fra andre SWF-filer vises ikke. Denne kommandoen påvirker også kommandoer 
-
 som godtar en fil som parameter (som "break).
-
 Eksempel:
-
   viewswf myApp.mxml.swf
-
     Kun filer fra myApp.mxml.swf vises.
-
   viewswf 
-
     Alle filer fra alle SWF-filer vises.
-
  
-
 [watch]
 
-
-
 Legg til et overvåkningspunkt på en angitt variabel. Feilsøkeren stanser 
-
 kjøringen hvis variabelens verdi endres.
-
 Eksempel:
-
   watch foo
 
-
-
 [what]
 
-
-
 Viser konteksten en variabel løses i. 
 
-
-
 [where]
 
-
-
 Tilbakesporing i stakk.
 
-
-
 [zzz]
 
-
-
 ((( Keep this unused topic at the end of the file    )))
-
 ((( so that the next-to-last one is parsed properly. )))
-

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_ru.txt
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_ru.txt b/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_ru.txt
index ad7d135..ae3d636 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_ru.txt
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_ru.txt
@@ -1,4 +1,4 @@
-
+    
       Licensed to the Apache Software Foundation (ASF) under one or more
       contributor license agreements.  See the NOTICE file distributed with
       this work for additional information regarding copyright ownership.
@@ -14,1613 +14,809 @@
       See the License for the specific language governing permissions and
       limitations under the License.
 
-This file contains the text displayed by the 'help' command in fdb.
-
 
+This file contains the text displayed by the 'help' command in fdb.
 
 It is divided into "topics". For example, when an fdb user types
-
 'help break', the [break] topic below is displayed.
 
-
-
 The first and last lines of each topic should be blank.
-
 They don't get displayed in fdb; they are here only
-
 to make this file more easily readable.
 
-
-
 Help text should be formatted to not wrap
-
 when displayed on an 80-character-wide console.
-
 The following line is 80 characters wide.
 
-
-
 --------------------------------------------------------------------------------
 
-
-
 [?]
 
-
-
 Ќеопределенна€ команда. ¬ведите Ђhelpї дл€ просмотра списка всех команд fdb.
 
-
-
 [break]
 
-
-
 ”становка точки прерывани€ на указанной строке или функции.
-
 ѕримеры:
-
   break 87
-
     ”становка точки прерывани€ на строке 87 текущего файла.
-
   break myapp.mxml:56
-
     ”становка точки прерывани€ на строке 56 файла myapp.mxml.
-
   break #3:29
-
     ”становка точки прерывани€ на строке 29 файла є 3.
-
   break doThis
-
     ”становка точки прерывани€ на функции doThis() в текущем файле.
-
   break myapp.mxml:doThat
-
     ”становка точки прерывани€ на функции doThat() в файле myapp.mxml.
-
   break #3:doOther
-
     ”становка точки прерывани€ на функции doOther() в файле є 3.
-
   break
-
    ”становка точки прерывани€ на текущем адресе выполнени€ в текущем стековом 
-
    фрейме. “акое прерывание примен€етс€ при возврате к стековому фрейму.
-
 ¬ведите Ђinfo sourcesї или Ђinfo filesї дл€ просмотра имен и номеров файлов.
-
 ¬ведите Ђinfo functionsї дл€ просмотра имен функций.
-
 —окращенные имена файлов и функций принимаютс€, если они однозначно 
-
 идентифицируютс€.
-
 ѕри указании номера строки прерывание будет выполн€тьс€ при запуске кода в этой 
-
 строке.
-
 ѕри указании функции прерывание будет выполн€тьс€ при запуске кода в этой 
-
 функции.
-
 —м. Ђcommandsї и Ђconditionї дл€ информации о дополнительном управлении точек 
-
 прерывани€.
 
-
-
 [bt]
 
-
-
 ќбратна€ трассировка стека.
 
-
-
 [catch]
 
-
-
 ќстановка при возникновении исключени€.  ѕримен€етс€ только дл€ перехваченных 
-
 исключений, т.е. тех исключений, которые будут обрабатыватьс€ блоком Ђcatchї.  
-
 Ќеперехваченные исключени€ всегда останавливаютс€ в отладчике.
 
-
-
 »спользуйте команду Ђdeleteї дл€ удалени€ точки перехвата.
 
-
-
 ѕримеры:
-
   catch *
-
     ќстановка при возникновении любого исключени€.
-
   catch ReferenceError
-
     ќстановка при возникновении перехваченной или неперехваченной ошибки 
-
     ReferenceError.
 
-
-
 [cf]
 
-
-
 ќтображение имени и номера текущего файла или изменение текущего файла.
-
 ѕримеры:
-
   cf
-
     ќтображение имени и номера текущего файла.
-
   cf myapp.mxml
-
     «амена текущего файла на файл myapp.mxml.
-
   cf #29
-
     «амена текущего файла на файл є 29.
-
 ¬ведите Ђinfo sourcesї или Ђinfo filesї дл€ просмотра имен и номеров файлов.
-
 —окращенные имена файлов принимаютс€, если они однозначно идентифицируютс€.
-
 ѕри включении файла в список с помощью команды Ђlistї этот файл становитс€ 
-
 текущим.
 
-
-
 [clear]
 
-
-
 —брос точки прерывани€ в указанной строке или функции.
-
 ѕримеры:
-
   clear 87
-
     —брос точки прерывани€ на строке 87 текущего файла.
-
   clear myapp.mxml:56
-
     —брос точки прерывани€ на строке 56 файла myapp.mxml.
-
   clear #3:29
-
     —брос точки прерывани€ на строке 29 файла є 3.
-
   clear doThis
-
     —брос точки прерывани€ на функции doThis() в текущем файле.
-
   clear myapp.mxml:doThat
-
     —брос точки прерывани€ на функции doThat() в файле myapp.mxml.
-
   clear #3:doOther
-
     —брос точки прерывани€ на функции doOther() в файле є 3.
-
   clear
-
     —брос точки прерывани€ на текущей строке в текущем файле. 
-
 ¬ведите Ђinfo sourcesї или Ђinfo filesї дл€ просмотра имен и номеров файлов.
-
 ¬ведите Ђinfo functionsї дл€ просмотра имен функций.
-
 —окращенные имена файлов и функций принимаютс€, если они однозначно 
-
 идентифицируютс€.
-
 ѕри указании номера строки сбрасываютс€ все точки прерывани€ на этой строке.
-
 ѕри указании функции сбрасываютс€ точки прерывани€ в начале этой функции.
 
-
-
 [continue]
 
-
-
 ѕродолжение выполнени€ после остановки на точке прерывани€.
-
 Ёта команда не принимает аргументы.
 
-
-
 [condition]
 
 
-
-
-
 ќстановка в точке прерывани€ номер N, только если COND имеет значение true.
-
 »спользование: Ђcondition N CONDї, где N €вл€етс€ целым числом, а COND 
-
 представл€ет выражение дл€ вычислени€ при достижении точки прерывани€ N.
 
-
-
 [commands]
 
-
-
 ”становка команд дл€ выполнени€ при активации точки прерывани€.
-
 ”кажите номер точки прерывани€ в качестве аргумента после Ђcommandsї.
-
 ѕри отсутствии аргументов целевой точкой прерывани€ будет последн€€ указанна€ 
-
 точка прерывани€.
-
  оманды следуют с начала следующей строки.
-
 ¬ведите в строке Ђendї дл€ указани€ окончани€ команд.
-
 ¬ведите Ђsilentї в первой строке дл€ того, чтобы точка прерывани€ стала 
-
 необъ€вл€емой. Ёто позволит не отображать выходные данные при активации точки 
-
 прерывани€, и на экран будет выводитьс€ только информаци€ Ђcommandsї.
-
 ѕример:
-
   (fdb) commands
-
   ¬ведите Ђcommandsї дл€ активации точки прерывани€ 1 по одной команде на 
-
   строку.
-
   ѕоследн€€ строка должна содержать только Ђendї.
-
   >w
-
   >end
 
-
-
 [delete]
 
-
-
 ”даление точек прерывани€.
-
 ѕримеры:
-
   delete
-
     ”даление всех точек прерывани€.
-
   delete 2 5
-
     ”даление точек прерывани€ є 2 и є 5.
-
 ƒл€ просмотра номеров точек прерывани€ введите Ђinfo breakpointsї.
 
-
-
 [directory]
 
-
-
 »зменение списка каталогов, в которых fdb осуществл€ет поиск исходных файлов.
 
-
-
 ѕримеры:
 
-
-
   directory
-
     ¬осстановление списка по умолчанию, который €вл€етс€ каталогом, где 
-
     исходный файл был скомпилирован в код объекта, за которым следует текущий 
-
     рабочий каталог.
 
-
-
   directory C:\MySource        (Windows)
-
   directory /MySource          (Mac)
-
     ƒобавление указанного каталога в начало списка каталогов, в которых будет 
-
     осуществл€тьс€ поиск источника.  Ќапример, при поиске источника дл€ класса 
-
     mypackage.MyClass отладчик выполнит поиск C:\MySource\mypackage\MyClass.as 
-
     и C:\MySource\MyClass.as.
 
-
-
   directory C:\Dir1;C:\Dir2    (Windows Ц используйте Ђ;ї в качестве разделител€)
-
   directory /Dir1:/Dir2        (Mac Ц используйте Ђ:ї в качестве разделител€)
-
     ƒобавление нескольких каталогов в начало списка каталогов, в которых будет 
-
     осуществл€тьс€ поиск источника.
 
-
-
 ƒл€ просмотра текущего списка введите Ђshow directoriesї.
 
-
-
 [disable]
 
-
-
 ¬ыключение одной или нескольких точек прерывани€ или выражений автоотображени€.
-
 ѕримеры:
-
   disable
-
   disable breakpoints
-
     ¬ыключение всех точек прерывани€.
-
   disable 2 5
-
   disable breakpoints 2 5
-
     ¬ыключение точек прерывани€ є 2 и є 5.
-
   disable display
-
     ¬ыключение всех выражений автоотображени€.
-
   disable display 1 3
-
     ¬ыключение выражений автоотображени€ є 1 и є 3.
-
 ƒл€ просмотра номеров точек прерывани€ введите Ђinfo breakpointsї.
-
 ƒл€ просмотра номеров выражений автоотображени€ введите Ђinfo displayї.
 
-
-
 [disassemble]
 
-
-
 (только дл€ ActionScript 2; не поддерживаетс€ при отладке ActionScript 3)
 
-
-
 ƒизассемблирование указанной части исходного кода.
-
 ѕо умолчанию используетс€ текуща€ строка перечислени€.
-
 ѕоддерживаютс€ те же аргументы, что и при команде Ђlistї.
-
 ѕримеры:
-
   disassemble 87
-
     ƒизассемблирование строки 87 в текущем файле.
-
   disassemble 87 102
-
     ƒизассемблирование строк 87-102 в текущем файле.
-
   disassemble doThis
-
       ƒизассемблирование функции doThis() в текущем файле.
-
 ѕомимо использовани€ простых номеров строк, как показано выше, существуют 
-
 дополнительные способы дл€ указани€ строк:
-
    myapp.mxml
-
       —трока 1 в myapp.mxml.
-
    myapp.mxml:doThat
-
       ѕерва€ строка функции doThat() в myapp.mxml.
-
    myapp.mxml:56
-
       —трока 56 в myapp.mxml.
-
    #3
-
       —трока 1 в файле є 3.
-
    #3:doOther
-
       —трока в файле є 3, где начинаетс€ функци€ doOther().
-
    #3:29
-
       —трока 29 в файле є 3.
 
-
-
 [display]
 
-
-
 ƒобавление выражени€ к списку выражений автоотображени€.
-
 ѕример:
-
   display employee.name
-
     ƒобавление Ђemployee.nameї к списку выражений автоотображени€.
-
     «начение employee.name будет отображатьс€ при каждой остановке fdb.
-
 јргумент дл€ этой команды аналогичен аргументу дл€ команды Ђprintї.
-
 ƒл€ просмотра списка выражений автоотображени€ и их номеров введите Ђinfo 
-
 displayї.
 
-
-
 [down]
 
-
-
 ¬ыбор и печать стекового фрейма, вызванного этой командой.
-
 ѕри последующем вводе команд Ђinfo argumentsї и Ђinfo localsї отобраз€тс€ 
-
 локальные переменные и аргументы дл€ выбранного фрейма.
-
 —м. Ђupї и Ђframeї 
 
-
-
 [enable]
 
-
-
 ¬ключение точек прерывани€ или выражений автоотображени€.
-
 ѕримеры:
-
   enable
-
   enable breakpoints
-
     ¬ключение всех точек прерывани€.
-
   enable 2 5
-
   enable breakpoints 2 5
-
     ¬ключение точек прерывани€ є 2 и є 5.
-
   enable display
-
     ¬ключение всех выражений автоотображени€.
-
   enable display 1 3
-
     ¬ключение выражений автоотображени€ є 1 и є 3.
-
 ƒл€ просмотра номеров точек прерывани€ введите Ђinfo breakpointsї.
-
 ƒл€ просмотра номеров выражений автоотображени€ введите Ђinfo displayї.
 
-
-
 [file]
 
-
-
 ”казание приложени€ дл€ выполнени€ отладки без запуска приложени€.
-
 ѕримеры:
-
   file http://www.mysite.com/myapp.mxml
-
     ”казание MXML-приложени€ дл€ выполнени€ отладки.
-
   file myapp.swf
-
     ”казание локального SWF-файла в текущем каталоге дл€ выполнени€ отладки.
-
     ¬ этом случае myapp.swd (файл, содержащий информацию по отладке) должен 
-
     также находитьс€ в текущем каталоге.
-
 Ёта команда не приводит к запуску приложени€; используйте команду Ђrunї без 
-
 аргументов дл€ запуска отладки приложени€.
-
 ¬место Ђfile <target>ї с последующей командой Ђrunї можно указать приложение 
-
 дл€ отладки в качестве аргумента дл€ Ђrunї.
-
   run http://mysite.com/myapp.mxml
-
   run myapp.swf
-
 ѕриложение дл€ отладки можно также указать в качестве аргумента командной 
-
 строки при запуске fdb:
-
   fdb http://www.mysite.com/myapp.mxml
-
   fdb myapp.swf
-
 ¬ этом случае не требуетс€ использовать Ђfileї или Ђrunї.
-
 ≈сли дл€ команды Ђrunї не указано приложение дл€ отладки, fdb будет ожидать 
-
 соединени€ с любым приложением.
 
-
-
 [finish]
 
-
-
 ¬ыполнение до возврата текущей функции.
-
 Ёта команда не принимает аргументы.
 
-
-
 [frame]
 
-
-
 ¬ыбор и печать определенного стекового фрейма.
-
 Ёта команда принимает дополнительный аргумент Ц номер фрейма.
-
 ѕри отсутствии аргументов по умолчанию выполн€етс€ возврат к текущему верхнему 
-
 фрейму (т.е. фрейму 0).
-
 ѕримеры:
-
   frame 4
-
   frame
-
 ѕри последующем вводе команд Ђinfo argumentsї и Ђinfo localsї отобраз€тс€ 
-
 локальные переменные и аргументы дл€ выбранного фрейма.
-
 —м. Ђupї, Ђdownї и Ђbtї. 
 
-
-
 [handle]
 
-
-
 ќпределение способа, которым fdb будет обрабатывать ошибки в Flash Player.
-
 ѕримеры:
-
   handle recursion_limit stop
-
     ѕри возникновении ошибки recursion_limit отображаетс€ сообщение в fdb и 
-
     выполн€етс€ остановка, как будто на точке прерывани€.
-
   handle all print nostop
-
     ѕри возникновении любых ошибок отображаетс€ сообщение в fdb, но остановка 
-
     не выполн€етс€.
-
 ѕервый аргумент €вл€етс€ именем ошибки или Ђallї.
-
 ƒополнительные аргументы представл€ют действи€, применимые к данной ошибке.
-
 ƒл€ просмотра имен ошибок введите Ђinfo handleї.
-
 ƒействи€ми €вл€ютс€ print/noprint и stop/nostop.
-
 Ђprintї означает печать сообщени€ при возникновении этой ошибки.
-
 Ђstopї означает повторный вход в отладчик при возникновении этой ошибки. 
-
 Ђprintї также подразумеваетс€.
 
-
-
 [help]
 
-
-
 Ќовичок в fdb? ¬ведите Ђtutorialї дл€ просмотра основной информации.
-
 —писок команд fdb:
-
 bt (bt)             ѕечать обратной трассировки всех стековых фреймов
-
 break (b)           ”становка точки прерывани€ на указанной строке или функции
-
 catch (ca)          ќстановка при возникновении исключени€
-
 cf (cf)             ќтображение имени и номера текущего файла
-
 clear (cl)          —брос точки прерывани€ в указанной строке или функции
-
 condition (cond)    ѕрименение или удаление условного выражени€ в точке 
-
                     прерывани€
-
 continue (c)        ѕродолжение выполнени€ после остановки в точке прерывани€
-
 commands (com)      ”становка команд дл€ выполнени€ при активации точки 
-
                     прерывани€
-
 delete (d)          ”даление точек прерывани€ или выражений автоотображени€
-
 directory (dir)     ƒобавление каталога к пути дл€ поиска исходных файлов
-
 disable (disab)     ¬ыключение точек прерывани€ или выражений автоотображени€
-
 disassemble (disas) ƒизассемблирование исходных строк или функций
-
 display (disp)      ƒобавление выражений автоотображени€
-
 enable (e)          ¬ключение точек прерывани€ или выражений автоотображени€
-
 file (fil)          ”казание приложени€ дл€ выполнени€ отладки.
-
 finish (f)          ¬ыполнение до возврата текущей функции
-
 handle (han)        ќпределение способа обработки ошибки
-
 help (h)            ќтображение справки по командам fdb
-
 home (ho)           ”казание местоположени€ перечислени€, где происходит 
-
                     остановка выполнени€
-
 info (i)            ќтображение информации об отлаживаемой программе
-
 kill (k)            ѕрерывание выполнени€ отлаживаемой программы
-
 list (l)            ¬ключение в список указанной функции или строки
-
 next (n)            ѕошаговый режим программы
-
 print (p)           ѕечать значени€ переменной EXP
-
 pwd (pw)            ѕечать рабочего каталога
-
 quit (q)            ¬ыход из fdb
-
 run (r)             «апуск программы после отладки
-
 set (se)            ”казание значени€ переменной
-
 source (so)         „тение команд fdb из файла
-
 step (s)            ѕошаговый режим программы до достижени€ другой исходной 
-
                     строки
-
 tutorial (t)        ќтображение руководства по использованию fdb
-
 undisplay (u)       ”даление выражени€ автоотображени€
-
 viewswf (v)         ”становка или сброс фильтра дл€ перечислени€ файлов на 
-
                     основе swf
-
 watch (wa)          ƒобавление точки-датчика на данную переменную
-
 what (wh)           ќтображение контекста переменной
-
 where (w)           јналогично bt
-
 ƒл€ просмотра полной документации введите Ђhelpї с последующим именем команды.
 
-
-
 [home]
 
-
-
 ”казание местоположени€ перечислени€, где происходит остановка выполнени€.
 
-
-
 [info]
 
-
-
 ќбща€ команда дл€ отображени€ информации об отлаживаемой программе.
-
 —писок подкоманд info:
-
 info arguments (i a)    ѕеременные аргументов текущего стекового фрейма
-
 info breakpoints (i b)  —осто€ние точек прерывани€, указываемых пользователем
-
 info display (i d)      ќтображение списка выражений автоотображени€
-
 info files (i f)        »мена отлаживаемых целевых объектов и файлов
-
 info functions (i fu)   »мена всех функций
-
 info handle (i h)       —пособы обработки ошибок
-
 info locals (i l)       Ћокальные переменные текущего стекового фрейма
-
 info scopechain (i sc)  ÷епочка областей видимости текущего стекового фрейма
-
 info sources (i so)     »сходные файлы в программе
-
 info stack (i s)        ќбратна€ трассировка стека
-
 info swfs (i sw)        —писок файлов swf в этом сеансе
-
 info targets(i t)       ќтлаживаемое приложение
-
 info variables (i v)    »мена всех глобальных и статических переменных
-
 ƒл€ просмотра полной документации введите Ђhelp infoї с последующим именем 
-
 подкоманды info.
 
-
-
 [info arguments]
 
-
-
 ќтображение аргументов текущего стекового фрейма.
 
-
-
 [info breakpoints]
 
-
-
 ќтображение состо€ни€ всех точек прерывани€ и точек-датчиков.
-
 —толбец Type определ€ет одно из следующего:
-
    breakpoint   - обычна€ точка прерывани€
-
    watchpoint   - точка-датчик
-
 —толбец Disp содержит одну из команд Ђkeepї, Ђdelї или Ђdisї дл€ указани€ 
-
 размещени€ точки прерывани€ после ее активации. Ђdisї указывает на выключение 
-
 точки прерывани€, в то врем€ как Ђdelї обозначает ее удаление.  
-
 —толбцы Address и What указывают адрес и номер файла или строки соответственно. 
 
-
-
 [info display]
 
-
-
 ќтображение списка выражений автоотображени€ и их номеров.
 
-
-
 [info files]
 
-
-
 ќтображение имен и номеров файлов дл€ отлаживаемого приложени€, в том числе 
-
 исходных файлов, файлов инфраструктуры и автоматически созданных файлов.
-
 ѕримеры:
-
   info files
-
     —писок всех файлов в алфавитном пор€дке по категори€м
-
   info files my
-
   info files my*
-
     —писок всех файлов, начинающихс€ с Ђmyї, в алфавитном пор€дке.
-
   info files *.as
-
     —писок всех файлов, заканчивающихс€ на Ђ.asї, в алфавитном пор€дке.
-
   info files *foo*
-
     —писок всех файлов, содержащих в имени Ђfooї, в алфавитном пор€дке. 
-
 ‘айлы отображаютс€ в формате name#N, где N Ц номер файла.
-
 ¬о многих командах #N используетс€ вместо имени файла.
 
-
-
 [info functions]
 
-
-
 ќтображение имен функций.
-
 ѕримеры:
-
   info functions .
-
     ќтображение всех функций в текущем файле.
-
   info functions myapp.mxml
-
     ќтображение всех функций в myapp.mxml.
-
   info functions #3
-
     ќтображение всех функций в файле є 3.
-
   info functions
-
     ќтображение всех функций во всех файлах.
-
 ƒл€ просмотра имен и номеров файлов введите Ђinfo sourcesї или Ђinfo filesї.
-
 —окращенные имена файлов принимаютс€, если они однозначно идентифицируютс€.
 
-
-
 [info handle]
 
-
-
 ќтображение действий fdb при возникновении ошибки в Flash Player.
-
 ѕримеры:
-
   info handle
-
     ќтображение действий fdb при обработке ошибок.
-
   info handle recursion_limit
-
     ќтображение действий fdb при обработке ошибки recursion_limit.
 
-
-
 [info locals]
 
-
-
 ќтображение локальных переменных текущего стекового фрейма.
 
-
-
 [info scopechain]
 
-
-
 ќтображение цепочки областей видимости текущего стекового фрейма.  ÷епочка 
-
 областей видимости представл€ет собой список объектов, в котором выполн€етс€ 
-
 поиск при попытке Flash Player обработать им€ символа.
 
-
-
 [info sources]
 
-
-
 ќтображение имен и номеров исходных файлов дл€ отлаживаемого приложени€. ‘айлы 
-
 инфраструктуры и автоматически созданные файлы не включены.
-
 ‘айлы отображаютс€ в формате name#N, где N Ц номер файла.
-
 ¬о многих командах #N используетс€ вместо имени файла.
 
-
-
 [info stack]
 
-
-
 ќбратна€ трассировка стека.
 
-
-
 [info swfs]
 
-
-
 ќтображение файлов swf, известных сеансу отладки.  —м. команду Ђviewswfї дл€ 
-
 получени€ дополнительной информации о способах фильтрации перечислени€ файлов 
-
 на основе имени swf. 
 
-
-
 [info targets]
 
-
-
 ќтображение URL-адреса (http: или file:) отлаживаемого приложени€.
 
-
-
 [info variables]
 
-
-
 ќтображение имен и значений всех глобальных и статических переменных.
 
-
-
 [info ?]
 
-
-
 Ќеопределенна€ команда info. ¬ведите Ђhelp infoї.
 
-
-
 [kill]
 
-
-
 ѕрерывание выполнени€ отлаживаемой программы.
-
 Ёта команда не принимает аргументы.
 
-
-
 [list]
 
-
-
 —оздание списка строк кода в исходном файле.
-
 ѕримеры:
-
   list
-
     —оздание списка из дес€ти дополнительных строк в текущем файле после или 
-
     вокруг предыдущего перечислени€.
-
   list -
-
     —оздание списка из дес€ти строк в текущем файле до предыдущего перечислени€.
-
   list 87
-
     —оздание списка из дес€ти строк в текущем файле вокруг строки 87.
-
   list 87 102
-
     —оздание списка строк 87-102 в текущем файле.
-
 ѕомимо использовани€ простых номеров строк, как показано выше, существует семь 
-
 дополнительных способов дл€ указани€ строк:
-
   doThis
-
       ѕерва€ строка функции doThis() в текущем файле.
-
    myapp.mxml
-
       —трока 1 в myapp.mxml.
-
    myapp.mxml:doThat
-
       ѕерва€ строка функции doThat() в myapp.mxml.
-
    myapp.mxml:56
-
       —трока 56 в myapp.mxml.
-
    #3
-
       —трока 1 в файле є 3.
-
    #3:doOther
-
       —трока в файле є 3, где начинаетс€ функци€ doOther().
-
    #3:29
-
       —трока 29 в файле є 3.
-
 ƒл€ просмотра имен и номеров файлов введите Ђinfo sourcesї или Ђinfo filesї.
-
 ƒл€ просмотра имен функций введите Ђinfo functionsї.
-
 —окращенные имена файлов и функций принимаютс€, если они однозначно 
-
 идентифицируютс€.
-
 ѕри включении файла в список этот файл становитс€ текущим. (—м. команду Ђcfї.)
 
-
-
 [next]
 
-
-
 ѕошаговый режим программы, продолжающийс€ во врем€ вызовов подпрограмм.
-
   next
-
     ѕереход на один шаг.
-
   next 3
-
     ѕереход на 3 шага, или до тех пор, пока программа не остановитс€ по иной 
-
     причине.
-
 јналогично команде Ђstepї при отсутствии вызовов подпрограмм; при возникновении 
-
 вызов обрабатываетс€ как одна инструкци€.
 
-
-
 [print]
 
-
-
 ѕечать значени€ переменной или выражени€.
-
 ѕримеры:
-
   print i
-
     ѕечать значени€ Ђiї.
-
   print employee.name
-
     ѕечать значени€ Ђemployee.nameї.
-
   print employee
-
     ѕечать значени€ объекта Ђemployeeї.
-
     »нформаци€ может быть выведена как, например, [Object 10378].
-
   print employee.
-
     ѕечать значений всех свойств объекта Ђemployeeї.
-
   print *employee
-
     ѕечать значений всех свойств объекта Ђemployeeї.
-
     ѕрефиксный оператор Ђ*ї €вл€етс€ альтернативой префикса постфиксному 
-
     оператору Ђ.ї.
-
   print #10378.
-
     ѕечать значений всех свойств объекта є 10378.
-
 ƒоступными €вл€ютс€ переменные лексического окружени€ выбранного стекового 
-
 фрейма, а также все переменные, область видимости которых €вл€етс€ глобальной 
-
 или представлена всем файлом.
 
-
-
 [pwd]
 
-
-
 ѕечать текущего рабочего каталога.
-
 Ёто каталог, из которого запускаетс€ fdb. ƒанный каталог нельз€ изменить 
-
 изнутри fdb. ѕо отношению к этому каталогу можно указать аргумент Ђrunї и 
-
 Ђsourceї.
-
 Ёта команда не принимает аргументы.
 
-
-
 [quit]
 
-
-
 ¬ыход из fdb.
-
 Ёта команда не принимает аргументы.
 
-
-
 [run]
 
-
-
 «апуск сеанса отладки.
-
 ѕримеры:
-
   run http://www.mysite.com/myapp.mxml
-
     ¬ыполнение указанного MXML-приложени€.
-
   run myapp.swf
-
   run mydir\myapp.swf
-
   run c:\mydir\myapp.swf
-
     ¬ыполнение локального SWF-файла myapp.swf, который можно указать: 
-
     относительно текущего каталога (см. команду Ђpwdї) или с использованием 
-
     абсолютного пути. ¬ этих случа€х myapp.swd (файл, содержащий информацию по 
-
     отладке) должен находитьс€ в том же каталоге, что и myapp.swf.
-
   run
-
     ¬ыполнение приложени€, ранее указанного командой Ђfileї.
-
     ≈сли приложение не указано, fdb будет ожидать соединени€ с любым 
-
     приложением; если ни одно приложение не выполнит соединение, fdb отобразит 
-
     превышение времени ожидани€.
-
 Ђrunї запустит приложение в браузере или автономном проигрывателе Flash Player.
-
 ѕосле запуска приложение прервет выполнение в fdb дл€ того, чтобы пользователь 
-
 мог установить точки прерывани€ и т.п.
 
-
-
 ¬ системе Macintosh поддерживаетс€ только форма команды Ђrunї без аргументов.  
-
 «атем следует вручную запустить Flash Player.
 
-
-
 [set]
 
-
-
 ќтображение значени€ переменной или вспомогательной переменной.
-
 ¬спомогательными €вл€ютс€ переменные, которые существуют только внутри fdb и не 
-
 €вл€ютс€ частью программы пользовател€.
-
 ¬спомогательные переменные обозначены префиксом Ђ$ї и могут иметь любое им€, 
-
 которое не вызывает конфликт с именем любой существующей переменной. Ќапример, 
-
 $myVar.   роме того, вспомогательные переменные используютс€ дл€ управлени€ 
-
 различными аспектами fdb.  
 
-
-
 ¬ fdb используютс€ следующие вспомогательные переменные:
-
 $listsize          - количество отображаемых исходных строк дл€ команды Ђlistї
-
 $columnwrap        - номер столбца, в котором будет выполн€тьс€ перенос 
-
                      выходных данных
-
 $infostackshowthis - если 0, то Ђthisї не отображаетс€ в обратной трассировке стека
-
 $invokegetters     - если 0, то fdb не вызывает функции получател€
-
 $bpnum             - последний определенный номер точки прерывани€
-
 $displayattributes - если 1, то Ђprint var.ї отображает все атрибуты членов 
-
                      Ђvarї (например, private или static)
 
-
-
 ѕримеры:
-
   set i = 3
-
     ”становка числа 3 в качестве значени€ дл€ переменной Ђiї.
-
   set employee.name = "Susan"
-
     ”становка строки ЂSusanї в качестве значени€ дл€ переменной Ђemployee.nameї.
-
   set $myVar = 20
-
     ”становка числа 20 в качестве значени€ дл€ вспомогательной переменной 
-
     Ђ$myVarї
 
-
-
 [show]
 
-
-
 ќбща€ команда дл€ отображени€ информации о состо€нии fdb.
-
 —писок подкоманд show:
-
 show break (sh b)       ћестоположение и причина приостановленного выполнени€
-
 show directories (sh d)  аталоги дл€ поиска исходных файлов
-
 show files (sh f)       ÷елевые файлы и пути
-
 show functions (sh fu)  »нформаци€ по отображению строки функции 
-
 show locations (sh l)   ћестоположени€ точек прерывани€
-
 show memory (sh m)      “екущее использование пам€ти
-
 show net (sh n)         —татистика сообщений Player 
-
 show properties (sh p)  «начени€ свойств
-
 show uri (sh u)         URI проигрывател€ Player дл€ этого сеанса 
-
 show variable (sh v)    »звлечение необработанной переменной
-
 ƒл€ просмотра полной документации введите Ђhelp showї с последующим именем 
-
 подкоманды show.
 
-
-
 [show break]
 
-
-
 ќтображение смещени€ внутри SWF, где программа выполнила остановку
 
-
-
 [show directories]
 
-
-
 ќтображение текущего пути дл€ поиска исходных файлов.
 
-
-
 [show files]
 
-
-
 ќтображение пути и имени файла дл€ всех целевых файлов
 
-
-
 [show functions]
 
-
-
 ќтображение информации о сопоставленных номерах строк дл€ перечисленных функций.
-
 ѕримеры:
-
   show functions .
-
     ќтображение информации по сопоставлению всех функций в текущем файле.
-
   show functions myapp.mxml
-
     ќтображение информации по сопоставлению всех функций в myapp.mxml.
-
   show functions #3
-
     ќтображение информации по сопоставлению всех функций в файле є 3.
-
   show functions
-
     ќтображение информации по сопоставлению всех функций во всех файлах.
-
 ƒл€ просмотра имен и номеров файлов введите Ђinfo sourcesї или Ђinfo filesї.
-
 —окращенные имена файлов принимаютс€, если они однозначно идентифицируютс€.
 
-
-
 [show locations]
 
-
-
 ќтображение списка местоположений, указанных дл€ каждой точки прерывани€
 
-
-
 [show memory]
 
-
-
 ќтображение статистики пам€ти виртуальной машины Java.
 
-
-
 [show net]
 
-
-
 ќтображение информации о сообщени€х, отправл€емых и получаемых проигрывателем 
-
 Flash Player.
 
-
-
 [show properties]
 
-
-
 ќтображение списка вспомогательных переменных, используемых в отладчике 
 
-
-
 [show uri]
 
-
-
 ќтображение URI, отправленного проигрывателем дл€ этого сеанса.
 
-
-
 [show variable]
 
-
-
 ќтображение значени€ членов переменной.  Ќеобходимо наличие двух параметров: 
-
 первый параметр Ц числовой идентификатор переменной, второй параметр Ц им€ 
-
 свойства у переменной.  ¬спомогательна€ переменна€ $invokegetters используетс€ 
-
 дл€ определени€ того, будет ли вызвано предположительно существующее свойство 
-
 получател€.
-
 ѕример:
-
     show variable 1 __proto__
 
-
-
 [show ?]
 
-
-
 Ќеопределенна€ команда show. ¬ведите Ђhelp showї.
 
-
-
 [source]
 
-
-
 „тение команд fdb из файла и их выполнение.
-
   source mycommands.txt
-
   source mydir\mycommands.txt
-
   source c:\mydir\mycommands.txt
-
     „тение mycommands.txt и выполнение команд fdb в этом файле.
-
     ‘айл, содержащий команды, можно указать
-
 	относительно текущего каталога (см. команду Ђpwdї)
-
 	или с использованием абсолютного пути.
-
 „тение файла .fdbinit выполн€етс€ автоматически при запуске fdb.
-
 ѕоиск .fdbinit осуществл€етс€ только в текущем каталоге. Ёто означает, что 
-
 можно указать различные файлы .fdbinit дл€ различных проектов.
 
-
-
 [step]
 
-
-
 ѕошаговый режим программы до достижени€ другой исходной строки.
-
 ѕримеры:
-
   step
-
     ѕереход на один шаг.
-
   step 3
-
     ѕереход на 3 шага, или до тех пор, пока программа не остановитс€ по иной 
-
     причине.
 
-
-
 [tutorial]
 
-
-
 ќтображение руководства по использованию fdb.
-
 Ёта команда не принимает аргументы.
 
-
-
 [Tutorial]
 
-
-
 “ипичный сеанс fdb:
-
 «апуск приложени€ посредством команды Ђrunї.
-
 ѕросмотр имен файлов посредством команды Ђinfo sourcesї.
-
 ¬ключение файла в список с помощью команды Ђlistї.
-
 ”казание точек прерывани€ посредством команды Ђbreakї.
-
 ¬ыполнение программы посредством команды Ђcontinueї до активации точки 
-
 прерывани€.
-
 јнализ состо€ни€ программы посредством команд Ђwhereї, Ђprintї и Ђinfo localsї.
-
 ¬ыполнение индивидуальных инструкций посредством команд Ђnextї, Ђstepї и 
-
 Ђfinishї.
-
 ѕродолжение выполнени€ программы посредством команды Ђcontinueї.
-
 ¬ыход из fdb посредством команды Ђquitї.
 
-
-
 [undisplay]
 
-
-
 ”даление одного или нескольких выражений автоотображени€.
-
 ѕримеры:
-
   undisplay
-
     ”даление всех выражений автоотображени€.
-
   undisplay 2 7
-
     ”даление выражений автоотображени€ є 2 и є 7.
-
 ƒл€ просмотра списка выражений автоотображени€ и их номеров введите Ђinfo 
-
 displayї.
 
-
-
 [up]
 
-
-
 ¬ыбор и печать стекового фрейма, вызванного этой командой.
-
 ѕри последующем вводе команд Ђinfo argumentsї и Ђinfo localsї отобраз€тс€ 
-
 локальные переменные и аргументы дл€ выбранного фрейма.
-
 —м. Ђdownї и Ђframeї
 
-
-
 [viewswf]
 
-
-
 ”становка или сброс фильтра дл€ перечислени€ файлов (например, Ђinfo filesї и 
-
 Ђinfo sourcesї) на основе имени swf. 
-
 ≈сли параметры не указаны, отобраз€тс€ все файлы.  ≈сли один и тот же файл 
-
 существует в одном или нескольких файлах swf, то в перечислении отобразитс€ 
-
 только первый экземпл€р этого файла.  ƒл€ доступа к другим экземпл€рам этого 
-
 файла используйте номер файла (например, Ђlist #192ї) или эту команду с 
-
 параметром (см. ниже) дл€ отображени€ файлов из определенного файла swf.  ≈сли 
-
 указан один параметр - им€ swf, отображенное командой Ђinfo swfsї, то в 
-
 перечислении отобраз€тс€ только файлы из указанного swf.  
-
 ‘айлы из других файлов swf не будут отображатьс€.  Ёта команда также св€зана с 
-
 командами, принимающими файл в качестве параметра (например, Ђbreakї)
-
 ѕример:
-
   viewswf myApp.mxml.swf
-
     ќтображение файлов только из myApp.mxml.swf.
-
   viewswf 
-
     ќтображение всех файлов из всех файлов swf.
-
  
-
 [watch]
 
-
-
 ƒобавление точки-датчика к данной переменной. ѕри изменении значени€ переменной 
-
 отладчик приостановит выполнение.
-
 ѕример:
-
   watch foo
 
-
-
 [what]
 
-
-
 ќтображение контекста дл€ разрешени€ переменной. 
 
-
-
 [where]
 
-
-
 ќбратна€ трассировка стека.
 
-
-
 [zzz]
 
-
-
 ((( Keep this unused topic at the end of the file    )))
-
 ((( so that the next-to-last one is parsed properly. )))
-


[08/15] FLEX-34291: Merge the donated FDB with the current one.

Posted by ft...@apache.org.
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/DisplayAction.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/DisplayAction.java b/modules/debugger/src/java/flex/tools/debugger/cli/DisplayAction.java
index 57c6cab..d8612d5 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/DisplayAction.java
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/DisplayAction.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flex.tools.debugger.cli;
@@ -33,12 +31,14 @@ public class DisplayAction
 	int			m_id;
 	ValueExp	m_expression;
 	String		m_content;
+	int m_isolateId;
 
-	public DisplayAction(ValueExp expr, String content)
+	public DisplayAction(ValueExp expr, String content, int isolateId)
 	{
 		init();
 		m_expression = expr;
 		m_content = content;
+		m_isolateId = isolateId;
 	}
 
 	void init()
@@ -50,6 +50,10 @@ public class DisplayAction
 	/* getters */
 	public String		getContent()					{ return m_content; }
 	public int			getId()							{ return m_id; }
+	
+	public int getIsolateId() {
+		return m_isolateId;
+	}
 	public boolean		isEnabled()						{ return m_enabled; }
 	public ValueExp		getExpression()					{ return m_expression; }
 

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/ExpressionCache.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/ExpressionCache.java b/modules/debugger/src/java/flex/tools/debugger/cli/ExpressionCache.java
index 02d73d0..b07e16b 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/ExpressionCache.java
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/ExpressionCache.java
@@ -94,17 +94,18 @@ public class ExpressionCache
 	public String		getPackageName(int id)	{ return m_cli.module2ClassName(id); }
 
 	public void bind(Session s)
-	{ 
-		setSession(s); 
+	{
+		setSession(s);
 
 		// propagates our properties to the session / non-critical if fails
 		try { ((flash.tools.debugger.concrete.PlayerSession)s).setPreferences(m_props.map()); } catch(Exception e) {}
 	}
 
-	public EvaluationResult evaluate(ValueExp e) throws NumberFormatException, NoSuchVariableException, PlayerFaultException, PlayerDebugException
+	public EvaluationResult evaluate(ValueExp e, int isolateId) throws NumberFormatException, NoSuchVariableException, PlayerFaultException, PlayerDebugException
 	{
 		EvaluationResult result = new EvaluationResult();
 		result.context = new ExpressionContext(this);
+		result.context.setIsolateId(isolateId);
 		result.value = e.evaluate(result.context);
 		return result;
 	}
@@ -145,7 +146,7 @@ public class ExpressionCache
 	public Set<String>  keySet() { return m_props.keySet(); }
 
 	/**
-	 * Allow the session to receive property updates 
+	 * Allow the session to receive property updates
 	 */
 	void setSessionProperty(String s, int value)
 	{
@@ -157,7 +158,7 @@ public class ExpressionCache
 
 	/**
 	 * We are able to fetch properties or expressions (i.e previous expression)
-	 * using this single call, despite the fact that each of these types of 
+	 * using this single call, despite the fact that each of these types of
 	 * results lie in different data structures m_expressions and m_props.
 	 * This allows us to easily perform expression evaluation without
 	 * need or concern over which 'type' of $ reference we are dealing with
@@ -184,7 +185,7 @@ public class ExpressionCache
 			}
 			catch(NumberFormatException nfe)
 			{
-				// must be in the property list 
+				// must be in the property list
 				exp = m_props.getInteger(s);
 			}
 		}
@@ -198,27 +199,27 @@ public class ExpressionCache
 	/**
 	 * Formatting function for variable
 	 */
-	public void appendVariable(StringBuilder sb, Variable v)
+	public void appendVariable(StringBuilder sb, Variable v, int isolateId)
 	{
 		//sb.append('\'');
 		String name = v.getName();
 		sb.append(name);
 		//sb.append('\'');
 		sb.append(" = "); //$NON-NLS-1$
-		appendVariableValue(sb, v.getValue(), name);
+		appendVariableValue(sb, v.getValue(), name, isolateId);
 		//appendVariableAttributes(sb, v);
 	}
 
 	/**
 	 * Given any arbitrary constant value, such as a Double, a String, etc.,
 	 * format its value appropriately. For example, strings will be quoted.
-	 * 
+	 *
 	 * @param sb
 	 *            a StringBuilder to which the formatted value will be appended.
 	 * @param o
 	 *            the value to format.
 	 */
-	public void appendVariableValue(StringBuilder sb, final Object o)
+	public void appendVariableValue(StringBuilder sb, final Object o, final int isolateId)
 	{
 		Value v;
 
@@ -298,15 +299,20 @@ public class ExpressionCache
 				public Variable[] getPrivateInheritedMemberNamed(String name) {
 					return new Variable[0];
 				}
-			};
+
+                @Override
+                public int getIsolateId() {
+					return isolateId;
+                }
+            };
 		}
 
-		appendVariableValue(sb, v);
+		appendVariableValue(sb, v, isolateId);
 	}
 
-	public void appendVariableValue(StringBuilder sb, Value val) { appendVariableValue(sb,val,""); } //$NON-NLS-1$
+	public void appendVariableValue(StringBuilder sb, Value val, final int isolateId) { appendVariableValue(sb,val,"", isolateId); } //$NON-NLS-1$
 
-	public void appendVariableValue(StringBuilder sb, Value val, String variableName)
+	public void appendVariableValue(StringBuilder sb, Value val, String variableName, final int isolateId)
 	{
 		int type = val.getType();
 		String typeName = val.getTypeName();

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/ExpressionContext.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/ExpressionContext.java b/modules/debugger/src/java/flex/tools/debugger/cli/ExpressionContext.java
index fe08b1a..b088f05 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/ExpressionContext.java
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/ExpressionContext.java
@@ -1,5 +1,4 @@
 /*
- *
  *  Licensed to the Apache Software Foundation (ASF) under one or more
  *  contributor license agreements.  See the NOTICE file distributed with
  *  this work for additional information regarding copyright ownership.
@@ -14,7 +13,6 @@
  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
- *
  */
 
 package flex.tools.debugger.cli;
@@ -22,6 +20,7 @@ package flex.tools.debugger.cli;
 import java.util.StringTokenizer;
 import java.util.Vector;
 
+import flash.tools.debugger.Isolate;
 import flash.tools.debugger.PlayerDebugException;
 import flash.tools.debugger.Session;
 import flash.tools.debugger.SessionManager;
@@ -45,6 +44,7 @@ public class ExpressionContext implements Context
 	Vector<String>		m_namedPath;
 	boolean				m_nameLocked;
 	String				m_newline = System.getProperty("line.separator"); //$NON-NLS-1$
+	int m_isolateId;
 
 	// used when evaluating an expression
 	public ExpressionContext(ExpressionCache cache)
@@ -54,6 +54,11 @@ public class ExpressionContext implements Context
 		m_createIfMissing = false;
 		m_namedPath = new Vector<String>();
 		m_nameLocked = false;
+		m_isolateId = Isolate.DEFAULT_ID;
+	}
+
+	public void setIsolateId(int id) {
+		m_isolateId = id;
 	}
 
 	void		setContext(Object o)	{ m_current = o; }
@@ -77,7 +82,7 @@ public class ExpressionContext implements Context
 	}
 
 	String getCurrentPackageName()
-	{ 
+	{
 		String s = null;
 		try
 		{
@@ -90,7 +95,7 @@ public class ExpressionContext implements Context
 		catch(ClassCastException cce)
 		{
 		}
-		return s; 
+		return s;
 	}
 
 	//
@@ -100,13 +105,14 @@ public class ExpressionContext implements Context
 	//
 	public void createPseudoVariables(boolean oui) { m_createIfMissing = oui; }
 
-	// create a new context object by combining the current one and o 
+	// create a new context object by combining the current one and o
 	public Context createContext(Object o)
 	{
 		ExpressionContext c = new ExpressionContext(m_cache);
 		c.setContext(o);
 		c.createPseudoVariables(m_createIfMissing);
 		c.m_namedPath.addAll(m_namedPath);
+		c.setIsolateId(m_isolateId);
 		return c;
 	}
 
@@ -153,7 +159,7 @@ public class ExpressionContext implements Context
 	/**
 	 * The Context interface which goes out and gets values from the session
 	 * Expressions use this interface as a means of evaluation.
-	 * 
+	 *
 	 * We also use this to create a reference to internal variables.
 	 */
 	public Object lookup(Object o) throws NoSuchVariableException, PlayerFaultException
@@ -204,7 +210,7 @@ public class ExpressionContext implements Context
 				if (resultValue.isAttributeSet(ValueAttribute.IS_EXCEPTION))
 				{
 					String value = resultValue.getValueAsString();
-					throw new PlayerFaultException(new ExceptionFault(value, false, resultValue));
+					throw new PlayerFaultException(new ExceptionFault(value, false, resultValue, resultValue.getIsolateId()));
 				}
 			}
 		}
@@ -242,9 +248,9 @@ public class ExpressionContext implements Context
   		StringBuilder sb = new StringBuilder();
 
   		if (var != null)
-            m_cache.appendVariable(sb, var);
+            m_cache.appendVariable(sb, var, m_isolateId);
   		else
-            m_cache.appendVariableValue(sb, val);
+            m_cache.appendVariableValue(sb, val, m_isolateId);
 
 		boolean attrs = m_cache.propertyEnabled(DebugCLI.DISPLAY_ATTRIBUTES);
 		if (attrs && var != null)
@@ -263,7 +269,7 @@ public class ExpressionContext implements Context
 					if (classname.equals(mems[i].getDefiningClass()))
 					{
 			  			sb.append(m_newline + " "); //$NON-NLS-1$
-                        m_cache.appendVariable(sb, mems[i]);
+                        m_cache.appendVariable(sb, mems[i], m_isolateId);
 						if (attrs)
 							ExpressionCache.appendVariableAttributes(sb, mems[i]);
 					}
@@ -275,7 +281,7 @@ public class ExpressionContext implements Context
 	  		for(int i=0; i<mems.length; i++)
 	  		{
 	  			sb.append(m_newline + " "); //$NON-NLS-1$
-                m_cache.appendVariable(sb, mems[i]);
+                m_cache.appendVariable(sb, mems[i], m_isolateId);
 				if (attrs)
 					ExpressionCache.appendVariableAttributes(sb, mems[i]);
 	  		}
@@ -286,11 +292,11 @@ public class ExpressionContext implements Context
 
 	//
 	//
-	// End of Context API implementation 
+	// End of Context API implementation
 	//
 	//
 
-	// used to assign a value to an internal variable 
+	// used to assign a value to an internal variable
 	private void assignInternal(InternalProperty var, Value v) throws NoSuchVariableException, NumberFormatException, PlayerDebugException
 	{
 		// otherwise set it
@@ -315,7 +321,7 @@ public class ExpressionContext implements Context
 	}
 
 	/**
-	 * Resolve the object into a variable by various means and 
+	 * Resolve the object into a variable by various means and
 	 * using the current context.
 	 * @return variable, or <code>null</code>
 	 */
@@ -331,13 +337,13 @@ public class ExpressionContext implements Context
 		 * Resolve the name to something
 		 */
 		{
-			// not an id so try as name 
+			// not an id so try as name
 			String name = o.toString();
 			long id = nameAsId(name);
 
 			/**
 			 * if #N was used just pick up the variable, otherwise
-			 * we need to use the current context to resolve 
+			 * we need to use the current context to resolve
 			 * the name to a member
 			 */
 			if (id != Value.UNKNOWN_ID)
@@ -350,9 +356,9 @@ public class ExpressionContext implements Context
 				id = determineContext(name);
 				v = locateForNamed(id, name, true);
 				if (v != null)
-					v = new VariableFacade(v, id);
+					v = new VariableFacade(v, id, m_isolateId);
 				else if (v == null && m_createIfMissing && name.charAt(0) != '$')
-					v = new VariableFacade(id, name);
+					v = new VariableFacade(id, name, m_isolateId);
 			}
 		}
 
@@ -361,7 +367,7 @@ public class ExpressionContext implements Context
 	}
 
 	/*
-	 * Resolve the object into a variable by various means and 
+	 * Resolve the object into a variable by various means and
 	 * using the current context.
 	 */
 	Value resolveToValue(Object o) throws PlayerDebugException
@@ -374,36 +380,36 @@ public class ExpressionContext implements Context
 		else if (o instanceof Variable)
 			return ((Variable)o).getValue();
 		else if (o instanceof InternalProperty)
-			return DValue.forPrimitive(((InternalProperty)o).m_value);
+			return DValue.forPrimitive(((InternalProperty)o).m_value, m_isolateId);
 
 		/**
 		 * Resolve the name to something
 		 */
 		if (m_current == null)
 		{
-			// not an id so try as name 
+			// not an id so try as name
 			String name = o.toString();
 			long id = nameAsId(name);
 
 			/**
 			 * if #N was used just pick up the variable, otherwise
-			 * we need to use the current context to resolve 
+			 * we need to use the current context to resolve
 			 * the name to a member
 			 */
 			if (id != Value.UNKNOWN_ID)
 			{
-				v = getSession().getValue((int)id);
+				v = getSession().getWorkerSession(m_isolateId).getValue((int)id);
 			}
 			else if (name.equals("undefined")) //$NON-NLS-1$
 			{
-				v = DValue.forPrimitive(Value.UNDEFINED);
+				v = DValue.forPrimitive(Value.UNDEFINED, m_isolateId);
 			}
 			else
 			{
 				// Ask the player to find something, anything, on the scope chain
 				// with this name.  We'll end up here, for example, when resolving
 				// things like MyClass, String, Number, etc.
-				v = getSession().getGlobal(name);
+				v = getSession().getWorkerSession(m_isolateId).getGlobal(name);
 			}
 		}
 
@@ -420,7 +426,7 @@ public class ExpressionContext implements Context
 			if (name.charAt(0) == '#')
 				id = Long.parseLong(name.substring(1));
 		}
-		catch(Exception e) 
+		catch(Exception e)
 		{
 			id = Value.UNKNOWN_ID;
 		}
@@ -435,7 +441,7 @@ public class ExpressionContext implements Context
 	Variable memberNamed(long id, String name) throws NoSuchVariableException, PlayerDebugException
 	{
 		Variable v = null;
-		Value parent = getSession().getValue(id);
+		Value parent = getSession().getWorkerSession(m_isolateId).getValue(id);
 
 		if (parent == null)
 			throw new NoSuchVariableException(name);
@@ -448,7 +454,7 @@ public class ExpressionContext implements Context
 
 	/**
 	 * All the really good stuff about finding where name exists goes here!
-	 * 
+	 *
 	 * If name is not null, then it implies that we use the existing
 	 * m_current to find a member of m_current.  If m_current is null
 	 * Then we need to probe variable context points attempting to locate
@@ -475,13 +481,13 @@ public class ExpressionContext implements Context
 		{
 			// Each stack frame has a root variable under (BASE_ID-depth)
 			// where depth is the depth of the stack.
-			// So we query for our current stack depth and use that 
+			// So we query for our current stack depth and use that
 			// as the context for our base computation
 			long baseId = Value.BASE_ID;
 			int depth = ((Integer)m_cache.get(DebugCLI.DISPLAY_FRAME_NUMBER)).intValue();
 			baseId -= depth;
 
-			// obtain data about our current state 
+			// obtain data about our current state
 			Variable contextVar = null;
 			Value contextVal = null;
 			Value val = null;
@@ -504,7 +510,7 @@ public class ExpressionContext implements Context
 				;
 
 			// now try off of class level, if such a thing can be found
-			else if ( ( (contextVal = locate(Value.GLOBAL_ID, getCurrentPackageName(), false)) != null ) && 
+			else if ( ( (contextVal = locate(Value.GLOBAL_ID, getCurrentPackageName(), false)) != null ) &&
 					  ( setName("_global."+getCurrentPackageName()) && (val = locateParentForNamed(contextVal.getId(), name, true)) != null ) ) //$NON-NLS-1$
 				;
 
@@ -516,17 +522,17 @@ public class ExpressionContext implements Context
 				lockName();
 			}
 		}
-		
+
 		return id;
 	}
 
 	/**
 	 * Performs a search for a member with the given name using the
 	 * given id as the parent variable.
-	 * 
+	 *
 	 * If a match is found then, we return the parent variable of
 	 * the member that matched.  The proto chain is optionally traversed.
-	 * 
+	 *
 	 * No exceptions are thrown
 	 */
 	Value locateParentForNamed(long id, String name, boolean traverseProto) throws PlayerDebugException
@@ -569,7 +575,7 @@ public class ExpressionContext implements Context
 		if (var != null)
 		{
 			pushName(sb.toString());
-			val = getSession().getValue(id);
+			val = getSession().getWorkerSession(m_isolateId).getValue(id);
 		}
 
 		return val;
@@ -606,7 +612,7 @@ public class ExpressionContext implements Context
 
 		// first rip apart the dottedName
 		StringTokenizer names = new StringTokenizer(dottedName, "."); //$NON-NLS-1$
-		Value val = getSession().getValue(startingId);
+		Value val = getSession().getWorkerSession(m_isolateId).getValue(startingId);
 
 		while(names.hasMoreTokens() && val != null)
 			val = locateForNamed(val.getId(), names.nextToken(), traverseProto).getValue();
@@ -625,9 +631,9 @@ public class ExpressionContext implements Context
 		else if (o instanceof Variable)
 			return ((Variable)o).getValue();
 		else if (o instanceof InternalProperty)
-			return DValue.forPrimitive(((InternalProperty)o).m_value);
+			return DValue.forPrimitive(((InternalProperty)o).m_value, m_isolateId);
 		else
-			return DValue.forPrimitive(o);
+			return DValue.forPrimitive(o, m_isolateId);
 	}
 
 	public Value toValue()
@@ -639,4 +645,9 @@ public class ExpressionContext implements Context
 	{
 		return m_cache.getSession();
 	}
+
+	@Override
+	public int getIsolateId() {
+		return m_isolateId;
+	}
 }

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/Extensions.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/Extensions.java b/modules/debugger/src/java/flex/tools/debugger/cli/Extensions.java
index 0332100..3f94336 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/Extensions.java
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/Extensions.java
@@ -1,5 +1,4 @@
 /*
- *
  *  Licensed to the Apache Software Foundation (ASF) under one or more
  *  contributor license agreements.  See the NOTICE file distributed with
  *  this work for additional information regarding copyright ownership.
@@ -14,7 +13,6 @@
  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
- *
  */
 
 package flex.tools.debugger.cli;
@@ -49,7 +47,7 @@ import flash.util.FieldFormat;
 
 /**
  * Extensions class is a singleton that contains
- * every cli method that does not conform to the 
+ * every cli method that does not conform to the
  * API.  Thus we can easily remove these features
  * from the cli if the implementation does not
  * support these calls.
@@ -121,7 +119,7 @@ public class Extensions
 				arg = cli.nextToken();
 				int id = arg.equals(".") ? cli.propertyGet(DebugCLI.LIST_MODULE) : cli.parseFileArg(-1, arg); //$NON-NLS-1$
 
-				DModule m = (DModule)fileInfo.getFile(id);
+				DModule m = (DModule)fileInfo.getFile(id, cli.getActiveIsolateId());
                 m.lineMapping(sb);
 			}
 			else
@@ -214,16 +212,17 @@ public class Extensions
 	 */
 	public static void doShowBreak(DebugCLI cli) throws NotConnectedException
 	{
-		cli.waitTilHalted();
+		int isolateId = cli.getActiveIsolateId();
+		cli.waitTilHalted(isolateId);
 		try
 		{
 			Session session = cli.getSession();
 			StringBuilder sb = new StringBuilder();
-			if (session.isSuspended())
+			if (session.getWorkerSession(isolateId).isSuspended())
 			{
 				sb.append(getLocalizationManager().getLocalizedTextString("stopped")); //$NON-NLS-1$
 				sb.append(' ');
-				appendBreakInfo(cli, sb, true);
+				appendBreakInfo(cli, sb, true, isolateId);
 			}
 			else
 				sb.append(getLocalizationManager().getLocalizedTextString("key24")); //$NON-NLS-1$
@@ -237,7 +236,7 @@ public class Extensions
 	}
 
 	// Extended low level break information
-	public static void appendBreakInfo(DebugCLI cli, StringBuilder sb, boolean includeFault) throws NotConnectedException
+	public static void appendBreakInfo(DebugCLI cli, StringBuilder sb, boolean includeFault, int isolateId) throws NotConnectedException
 	{
 		Session session = cli.getSession();
 		FileInfoCache fileInfo = cli.getFileCache();
@@ -247,7 +246,7 @@ public class Extensions
 		int index = ((PlayerSession)session).getSuspendActionIndex();
 
 		SwfInfo info = null;
-		try { info = fileInfo.getSwfs()[index]; } catch(ArrayIndexOutOfBoundsException oobe) {}
+		try { info = fileInfo.getSwfs(isolateId)[index]; } catch(ArrayIndexOutOfBoundsException oobe) {}
 		if (info != null)
 		{
 			Map<String, String> args = new HashMap<String, String>();
@@ -274,7 +273,8 @@ public class Extensions
 	// Raw direct call to Player
 	public static void doShowVariable(DebugCLI cli) throws PlayerDebugException
 	{
-		cli.waitTilHalted();
+		int isolateId = cli.getActiveIsolateId();
+		cli.waitTilHalted(isolateId);
 		try
 		{
 			// an integer followed by a variable name
@@ -285,8 +285,8 @@ public class Extensions
 			StringBuilder sb = new StringBuilder();
 			sb.append(name);
 			sb.append(" = "); //$NON-NLS-1$
-			Value v = ((PlayerSession)session).getValue(id, name);
-            cli.m_exprCache.appendVariableValue(sb, v);
+			Value v = ((PlayerSession)session).getValue(id, name, isolateId);
+            cli.m_exprCache.appendVariableValue(sb, v, isolateId);
 			cli.out( sb.toString() );
 		}
 		catch(NullPointerException npe)
@@ -300,14 +300,15 @@ public class Extensions
 		/* currentXXX may NOT be invalid! */
 		int currentModule = cli.propertyGet(DebugCLI.LIST_MODULE);
 		int currentLine = cli.propertyGet(DebugCLI.LIST_LINE);
- 
+		int currentIsolate = cli.propertyGet(DebugCLI.LIST_WORKER);
+
 		String arg1 = null;
 		int module1 = currentModule;
 		int line1 = currentLine;
- 
+
 		String arg2 = null;
 		int line2 = currentLine;
- 
+
  		boolean functionNamed = false;
 		int numLines = 0;
  		try
@@ -324,11 +325,11 @@ public class Extensions
 				}
 				else
 				{
-					int[] result = cli.parseLocationArg(currentModule, currentLine, arg1);
+					int[] result = cli.parseLocationArg(currentModule, currentLine, arg1, currentIsolate);
 					module1 = result[0];
 					line2 = line1 = result[1];
  					functionNamed = (result[2] == 0) ? false : true;
- 
+
 					if (cli.hasMoreTokens())
 					{
 						arg2 = cli.nextToken();
@@ -339,22 +340,23 @@ public class Extensions
  			else
  			{
  				// since no parms test for valid location if none use players concept of where we stopped
- 				if( fileInfo.getFile(currentModule) == null)
+ 				if( fileInfo.getFile(currentModule, currentIsolate) == null)
  				{
+ 					int isolateId = cli.getActiveIsolateId();
  					//here we simply use the players concept of suspsend
- 					DSuspendInfo info = ((PlayerSession)session).getSuspendInfo();
+ 					DSuspendInfo info = ((PlayerSession)session).getSuspendInfoIsolate(isolateId);
  					int at = info.getOffset();
  					int which = info.getActionIndex();
  					int until = info.getNextOffset();
  					if (info.getReason() == SuspendReason.Unknown)
  						throw new SuspendedException();
- 
- 					SwfInfo swf = fileInfo.getSwfs()[which];
+
+ 					SwfInfo swf = fileInfo.getSwfs(isolateId)[which];
  					outputAssembly(cli, (DSwfInfo)swf, at, until);
  					throw new AmbiguousException(getLocalizationManager().getLocalizedTextString("key27")); //$NON-NLS-1$
  				}
- 			}			
- 
+ 			}
+
  			/**
  			 * Check for a few error conditions, otherwise we'll write a listing!
  			 */
@@ -366,15 +368,15 @@ public class Extensions
  			{
  				SourceFile file = fileInfo.getFile(module1);
  				numLines = file.getLineCount();
- 
+
  				// pressing return is ok, otherwise throw the exception
  				if (line1 > numLines && arg1 != null)
  					throw new IndexOutOfBoundsException();
- 
+
  				/* if no arg2 then user list a single line */
  				if (arg2 == null)
  					line2 = line1;
- 
+
  				/* adjust our range of lines to ensure we conform */
  				if (line1 < 1)
  				{
@@ -382,19 +384,19 @@ public class Extensions
  					line2 += -(line1 - 1);
  					line1 = 1;
  				}
- 
+
  				if (line2 > numLines)
  					line2 = numLines;
- 
+
 				//			    System.out.println("1="+module1+":"+line1+",2="+module2+":"+line2+",num="+numLines+",half="+half);
- 
+
  				/* nothing to display */
  				if (line1 > line2)
  					throw new IndexOutOfBoundsException();
- 
+
  				/* now dump the mixed source / assembly */
- 				// now lets find which swf this in 
- 				DSwfInfo swf = (DSwfInfo)fileInfo.swfForFile(file);
+ 				// now lets find which swf this in
+ 				DSwfInfo swf = (DSwfInfo)fileInfo.swfForFile(file, cli.getActiveIsolateId());
  				ActionLocation lStart = null;
  				ActionLocation lEnd = null;
  

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/FaultActions.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/FaultActions.java b/modules/debugger/src/java/flex/tools/debugger/cli/FaultActions.java
index ec4f4b9..73bc074 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/FaultActions.java
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/FaultActions.java
@@ -1,26 +1,35 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flex.tools.debugger.cli;
 
 import java.util.HashMap;
 
+import flash.localization.LocalizationManager;
+import flash.tools.debugger.events.DivideByZeroFault;
+import flash.tools.debugger.events.ExceptionFault;
+import flash.tools.debugger.events.InvalidTargetFault;
+import flash.tools.debugger.events.InvalidURLFault;
+import flash.tools.debugger.events.InvalidWithFault;
+import flash.tools.debugger.events.ProtoLimitFault;
+import flash.tools.debugger.events.RecursionLimitFault;
+import flash.tools.debugger.events.ScriptTimeoutFault;
+import flash.tools.debugger.events.StackUnderFlowFault;
+
 /**
  * FaultActions proivdes a convenient wrapper for housing the user specified
  * behaviour for a set of faults (aka text strings)
@@ -39,7 +48,7 @@ public class FaultActions
 
 	int m_nextBitForAction = 0x1;  // the next bit to use for the action
 
-	public FaultActions() {}
+	private FaultActions() {}
 
 	Integer		get(String o)			{ return m_faults.get(o); }
 	Integer		getAction(String o)		{ return m_actions.get(o); }
@@ -116,4 +125,104 @@ public class FaultActions
 
 		return n;
 	}
+	
+	public static class FaultActionsBuilder {
+
+		private final LocalizationManager localizationManager;
+
+		public FaultActionsBuilder(LocalizationManager localizationManager) {
+			super();
+			this.localizationManager = localizationManager;
+		}
+
+		public FaultActions build() {
+			FaultActions faultActions = new FaultActions();
+			populateFaultTable(faultActions);
+			return faultActions;
+		}
+
+		private void populateFaultTable(FaultActions faultActions) {
+			// possible actions for our fault table
+			faultActions.addAction("stop"); //$NON-NLS-1$
+			faultActions.addAction("print"); //$NON-NLS-1$
+
+			// the faults we support
+			faultActions.add(InvalidTargetFault.name);
+			faultActions.add(RecursionLimitFault.name);
+			faultActions.add(InvalidWithFault.name);
+			faultActions.add(ProtoLimitFault.name);
+			faultActions.add(InvalidURLFault.name);
+			faultActions.add(ExceptionFault.name);
+			faultActions.add(StackUnderFlowFault.name);
+			faultActions.add(DivideByZeroFault.name);
+			faultActions.add(ScriptTimeoutFault.name);
+			// faultActions.add(ConsoleErrorFault.name);
+
+			// nice description of the faults
+			faultActions.putDescription(
+					InvalidTargetFault.name,
+					getLocalizationManager().getLocalizedTextString(
+							"invalidTargetFault")); //$NON-NLS-1$
+			faultActions.putDescription(
+					RecursionLimitFault.name,
+					getLocalizationManager().getLocalizedTextString(
+							"recursionLimitFault")); //$NON-NLS-1$
+			faultActions.putDescription(
+					InvalidWithFault.name,
+					getLocalizationManager().getLocalizedTextString(
+							"invalidWithFault")); //$NON-NLS-1$
+			faultActions.putDescription(
+					ProtoLimitFault.name,
+					getLocalizationManager().getLocalizedTextString(
+							"protoLimitFault")); //$NON-NLS-1$
+			faultActions.putDescription(
+					InvalidURLFault.name,
+					getLocalizationManager().getLocalizedTextString(
+							"invalidUrlFault")); //$NON-NLS-1$
+			faultActions.putDescription(
+					ExceptionFault.name,
+					getLocalizationManager().getLocalizedTextString(
+							"exceptionFault")); //$NON-NLS-1$
+			faultActions.putDescription(
+					StackUnderFlowFault.name,
+					getLocalizationManager().getLocalizedTextString(
+							"stackUnderflowFault")); //$NON-NLS-1$
+			faultActions.putDescription(
+					DivideByZeroFault.name,
+					getLocalizationManager().getLocalizedTextString(
+							"divideByZeroFault")); //$NON-NLS-1$
+			faultActions.putDescription(
+					ScriptTimeoutFault.name,
+					getLocalizationManager().getLocalizedTextString(
+							"scriptTimeoutFault")); //$NON-NLS-1$
+			// faultActions.putDescription(ConsoleErrorFault.name,
+			// "ActionScript recoverable error");
+
+			// default values for the faults
+			faultActions.action(InvalidTargetFault.name, "stop"); //$NON-NLS-1$
+			faultActions.action(InvalidTargetFault.name, "print"); //$NON-NLS-1$
+			faultActions.action(RecursionLimitFault.name, "stop"); //$NON-NLS-1$
+			faultActions.action(RecursionLimitFault.name, "print"); //$NON-NLS-1$
+			faultActions.action(InvalidWithFault.name, "stop"); //$NON-NLS-1$
+			faultActions.action(InvalidWithFault.name, "print"); //$NON-NLS-1$
+			faultActions.action(ProtoLimitFault.name, "stop"); //$NON-NLS-1$
+			faultActions.action(ProtoLimitFault.name, "print"); //$NON-NLS-1$
+			faultActions.action(InvalidURLFault.name, "stop"); //$NON-NLS-1$
+			faultActions.action(InvalidURLFault.name, "print"); //$NON-NLS-1$
+			faultActions.action(ExceptionFault.name, "stop"); //$NON-NLS-1$
+			faultActions.action(ExceptionFault.name, "print"); //$NON-NLS-1$
+			faultActions.action(StackUnderFlowFault.name, "stop"); //$NON-NLS-1$
+			faultActions.action(StackUnderFlowFault.name, "print"); //$NON-NLS-1$
+			faultActions.action(DivideByZeroFault.name, "stop"); //$NON-NLS-1$
+			faultActions.action(DivideByZeroFault.name, "print"); //$NON-NLS-1$
+			faultActions.action(ScriptTimeoutFault.name, "stop"); //$NON-NLS-1$
+			faultActions.action(ScriptTimeoutFault.name, "print"); //$NON-NLS-1$
+			//			faultActions.action(ConsoleErrorFault.name, "print"); //$NON-NLS-1$
+			//			faultActions.action(ConsoleErrorFault.name, "stop"); //$NON-NLS-1$
+		}
+
+		private LocalizationManager getLocalizationManager() {
+			return localizationManager;
+		}
+	}
 }

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/FileInfoCache.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/FileInfoCache.java b/modules/debugger/src/java/flex/tools/debugger/cli/FileInfoCache.java
index 8a90988..c1e1187 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/FileInfoCache.java
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/FileInfoCache.java
@@ -19,19 +19,20 @@
 
 package flex.tools.debugger.cli;
 
-import flash.tools.debugger.Session;
-import flash.tools.debugger.SourceFile;
-import flash.tools.debugger.SwfInfo;
-import flash.tools.debugger.InProgressException;
-import flash.tools.debugger.NoResponseException;
-
-import flash.util.IntMap;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.Iterator;
 
+import flash.tools.debugger.InProgressException;
+import flash.tools.debugger.Isolate;
+import flash.tools.debugger.NoResponseException;
+import flash.tools.debugger.Session;
+import flash.tools.debugger.SourceFile;
+import flash.tools.debugger.SwfInfo;
+import flash.util.IntMap;
+
 /**
  * FileInfoCache manages a list of files that are unique
  * across multiple swfs.
@@ -44,18 +45,87 @@ public class FileInfoCache implements Comparator<SourceFile>
 	 * We can get at files by module id or path
 	 */
 	IntMap				m_byInt = new IntMap();
+	HashMap<Integer, IntMap> m_isolateState = new HashMap<Integer, IntMap> ();
+
+	private IntMap getIsolateState(int isolateId) {
+		IntMap isolateState = null;
+		if (!m_isolateState.containsKey(isolateId)) {
+			isolateState = new IntMap();
+			m_isolateState.put(isolateId, isolateState);
+		}
+		else
+			isolateState = m_isolateState.get(isolateId);
+		return isolateState;
+	}
+
 	SourceFile[]		m_files = null;
+	SourceFile[]		m_isolateFiles = null;
 	SwfInfo				m_swfFilter = null;
 	int					m_swfsLoaded = 0;
     boolean             m_dirty = false;
+    int lastActiveIsolate = Isolate.DEFAULT_ID;
+
+	public FileInfoCache() {
 
-	public FileInfoCache() {}
+	}
 
 	public void			bind(Session s)									{ setSession(s); }
 	public void			unbind()										{ m_session = null; }
-	public SourceFile	getFile(int i)									{ populate(); return (SourceFile)m_byInt.get(i);	}
-	public SourceFile[]	getFileList()									{ populate(); return m_files; }
-	public Iterator     getAllFiles()									{ populate(); return m_byInt.iterator(); }
+
+	public SourceFile getFile(int i) {
+		return getFile(i, Isolate.DEFAULT_ID);
+	}
+
+	public SourceFile getFile(int i, int isolateId) {
+		populate();
+		if (isolateId == Isolate.DEFAULT_ID)
+			return (SourceFile) m_byInt.get(i);
+		else
+			return (SourceFile)getIsolateState(isolateId).get(i);
+	}
+
+	public SourceFile[] getFileList() {
+		populate();
+		return m_files;
+	}
+
+	public SourceFile[] getFileList(int isolateId) {
+		populate();
+		if (isolateId == Isolate.DEFAULT_ID)
+			return m_files;
+		else if (isolateId != lastActiveIsolate) {
+			buildIsolateFiles(isolateId);
+		}
+		return m_isolateFiles;
+	}
+
+	private void buildIsolateFiles(int isolateId) {
+		SwfInfo[] swfs = getSwfs(isolateId);
+		boolean worked = true; // check that all worked correctly
+		ArrayList<SourceFile> files = new ArrayList<SourceFile>();
+
+		for(int i=0; i<swfs.length; i++)
+		{
+			if (swfs[i] != null)
+				worked = loadSwfFiles(files, swfs[i]) ? worked : false;
+		}
+
+		// trim the file list
+		ArrayList<SourceFile> fa = trimFileList(files);
+		m_isolateFiles = fa.toArray( new SourceFile[fa.size()] );
+
+		// sort this array in place so calls to getFileList will be ordered
+		Arrays.sort(m_isolateFiles, this);
+	}
+
+	public Iterator getAllFiles(int isolateId) {
+		populate();
+		if (isolateId == Isolate.DEFAULT_ID)
+			return m_byInt.iterator();
+		else
+			return getIsolateState(isolateId).iterator();
+	}
+
     public SwfInfo      getSwfFilter()                                  { return m_swfFilter; }
     public boolean      isSwfFilterOn()                                 { return (m_swfFilter != null); }
     public void         setDirty()                                      { m_dirty = true; }
@@ -67,10 +137,28 @@ public class FileInfoCache implements Comparator<SourceFile>
 		clear();
 	}
 
+	SwfInfo[] getAllSwfs() {
+		ArrayList<SwfInfo> result = new ArrayList<SwfInfo>();
+
+		for ( Isolate isolate : m_session.getWorkers()) {
+			SwfInfo[] swfs = new SwfInfo[0];
+			try {
+				swfs = m_session.getWorkerSession(isolate.getId()).getSwfs();
+			} catch (NoResponseException e) {
+				swfs = new SwfInfo[0];
+			}
+
+			for (SwfInfo swf : swfs)
+				result.add(swf);
+		}
+
+		return result.toArray(new SwfInfo[0]);
+	}
+
 	void populate()
 	{
 		// do we have a new swf to load?
-		if (m_session != null && (m_dirty || getSwfs().length > m_swfsLoaded))
+		if (m_session != null && (m_dirty || getAllSwfs().length > m_swfsLoaded))
 			reloadCache();
 	}
 
@@ -84,6 +172,7 @@ public class FileInfoCache implements Comparator<SourceFile>
 	void clear()
 	{
 		m_byInt.clear();
+		m_isolateState.clear();
 		m_files = null;
 	}
 
@@ -113,7 +202,7 @@ public class FileInfoCache implements Comparator<SourceFile>
 	{
 		boolean worked = true; // check that all worked correctly
 		ArrayList<SourceFile> files = new ArrayList<SourceFile>();
-		SwfInfo[] swfs = getSwfs();
+		SwfInfo[] swfs = getAllSwfs();
 		for(int i=0; i<swfs.length; i++)
 		{
 			if (swfs[i] != null)
@@ -144,7 +233,7 @@ public class FileInfoCache implements Comparator<SourceFile>
 			// add each file to our global source file IntMap and our list
 			for(int i=0; i<files.length; i++)
 			{
-				putFile(files[i]);
+				putFile(files[i], swf.getIsolateId());
 				ar.add(files[i]);
 			}
 		}
@@ -209,10 +298,13 @@ public class FileInfoCache implements Comparator<SourceFile>
 	 * be able to locate the SourceFile so that we can
 	 * display the correct context for the user.
 	 */
-	void putFile(SourceFile s)
+	void putFile(SourceFile s, int isolateId)
 	{
 		int i = s.getId();
+		if (isolateId == Isolate.DEFAULT_ID)
 		m_byInt.put(i, s);
+		else
+			getIsolateState(isolateId).put(i, s);
 	}
 
 	/**
@@ -230,7 +322,7 @@ public class FileInfoCache implements Comparator<SourceFile>
 		}
 		else
 		{
-			SwfInfo[] swfs = getSwfs();
+			SwfInfo[] swfs = getAllSwfs();
 			for(int i=0; i<swfs.length; i++)
 			{
 				SwfInfo e = swfs[i];
@@ -251,12 +343,17 @@ public class FileInfoCache implements Comparator<SourceFile>
 	}
 
 	// list all swfs we know about
-	public SwfInfo[] getSwfs()
+	public SwfInfo[] getSwfs(int isolateId)
+	{
+		return getSwfsIsolate(isolateId);
+	}
+
+	public SwfInfo[] getSwfsIsolate(int isolateId)
 	{
 		SwfInfo[] swfs = null;
 		try
 		{
-			swfs = m_session.getSwfs();
+			swfs = m_session.getWorkerSession(isolateId).getSwfs();
 		}
 		catch(NoResponseException nre)
 		{
@@ -268,12 +365,12 @@ public class FileInfoCache implements Comparator<SourceFile>
 	/**
 	 * Given a SourceFile locate the swf which it came from
 	 */
-	public SwfInfo swfForFile(SourceFile f)
+	public SwfInfo swfForFile(SourceFile f, int isolateId)
 	{
 		// We use the id to determine which swf this source files resides in
 		int id = f.getId();
 		SwfInfo info = null;
-		SwfInfo[] swfs = getSwfs();
+		SwfInfo[] swfs = getSwfs(isolateId);//getAllSwfs();
 		for(int i=0; ( i<swfs.length && (info == null) ); i++)
 		{
 			if (swfs[i] != null && swfs[i].containsSource(f))

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/VariableFacade.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/VariableFacade.java b/modules/debugger/src/java/flex/tools/debugger/cli/VariableFacade.java
index c2cdd48..eda7784 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/VariableFacade.java
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/VariableFacade.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flex.tools.debugger.cli;
@@ -41,15 +39,17 @@ public class VariableFacade implements Variable
 	long		m_context;
 	String		m_name;
 	String		m_path;
+	int m_isolateId;
 
-	public VariableFacade(Variable v, long context)		{ init(context, v, null); }
-	public VariableFacade(long context, String name)	{ init(context, null, name); }
+	public VariableFacade(Variable v, long context, int m_isolateId)		{ init(context, v, null, m_isolateId); }
+	public VariableFacade(long context, String name, int m_isolateId)	{ init(context, null, name, m_isolateId); }
 
-	void init(long context, Variable v, String name)
+	void init(long context, Variable v, String name, int isolateId)
 	{
 		m_var = v;
 		m_context = context;
 		m_name = name;
+		m_isolateId = isolateId;
 	}
 
 	/**
@@ -67,8 +67,9 @@ public class VariableFacade implements Variable
 	public boolean		hasValueChanged(Session s)				{ return m_var.hasValueChanged(s); }
 	public FaultEvent setValue(Session s, int type, String value) throws NotSuspendedException, NoResponseException, NotConnectedException
 	{
-		return ((PlayerSession)s).setScalarMember(m_context, getQualifiedName(), type, value);
+		return ((PlayerSession)s).setScalarMember(m_context, getQualifiedName(), type, value, m_var.getIsolateId());
 	}
+	@Override
 	public String		toString()								{ return (m_var == null) ? m_name : m_var.toString(); }
 	public String		getPath()								{ return m_path; }
 	public void			setPath(String path)					{ m_path = path; }
@@ -81,6 +82,10 @@ public class VariableFacade implements Variable
 	/**
 	 * Our lone get context (i.e. parent) interface 
 	 */
-	public int			getContext()									{ return (int)m_context; }
+	public long			getContext()									{ return m_context; }
 	public Variable		getVariable()									{ return m_var; }
+	@Override
+	public int getIsolateId() {
+		return m_isolateId;
+	}
 }

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/fdb_da.properties
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/fdb_da.properties b/modules/debugger/src/java/flex/tools/debugger/cli/fdb_da.properties
index faa02d2..305064c 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/fdb_da.properties
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/fdb_da.properties
@@ -1,21 +1,18 @@
-################################################################################
-##
-##  Licensed to the Apache Software Foundation (ASF) under one or more
-##  contributor license agreements.  See the NOTICE file distributed with
-##  this work for additional information regarding copyright ownership.
-##  The ASF licenses this file to You under the Apache License, Version 2.0
-##  (the "License"); you may not use this file except in compliance with
-##  the License.  You may obtain a copy of the License at
-##
-##      http://www.apache.org/licenses/LICENSE-2.0
-##
-##  Unless required by applicable law or agreed to in writing, software
-##  distributed under the License is distributed on an "AS IS" BASIS,
-##  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-##  See the License for the specific language governing permissions and
-##  limitations under the License.
-##
-################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
 
 # Translation:
 #
@@ -28,7 +25,7 @@
 
 defaultBuildName=development
 about=Apache fdb (Flash Player Debugger) [build ${build}]
-copyright=Copyright 2014 The Apache Software Foundation.
+copyright=Copyright 2013 The Apache Software Foundation. Alle rettigheder forbeholdes.
 noResponseException=Afspilleren reagerede ikke som forventet p\u00e5 kommandoen; kommandoen er afbrudt.
 notSuspendedException=Kommandoen kan ikke afgives mens afspilleren k\u00f8rer
 illegalStateException=Kommandoen fungerer ikke uden for en session.

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/fdb_de.properties
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/fdb_de.properties b/modules/debugger/src/java/flex/tools/debugger/cli/fdb_de.properties
index 381cef2..65107dd 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/fdb_de.properties
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/fdb_de.properties
@@ -1,21 +1,18 @@
-################################################################################
-##
-##  Licensed to the Apache Software Foundation (ASF) under one or more
-##  contributor license agreements.  See the NOTICE file distributed with
-##  this work for additional information regarding copyright ownership.
-##  The ASF licenses this file to You under the Apache License, Version 2.0
-##  (the "License"); you may not use this file except in compliance with
-##  the License.  You may obtain a copy of the License at
-##
-##      http://www.apache.org/licenses/LICENSE-2.0
-##
-##  Unless required by applicable law or agreed to in writing, software
-##  distributed under the License is distributed on an "AS IS" BASIS,
-##  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-##  See the License for the specific language governing permissions and
-##  limitations under the License.
-##
-################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
 
 # Translation:
 #
@@ -27,8 +24,8 @@
 # fit on a single line.
 
 defaultBuildName=development
-about=Apache fdb (Flash Player Debugger) [Build ${build}]
-copyright=Copyright 2014 The Apache Software Foundation.
+about=Apache FDB (Flash Player Debugger) [Build ${build}]
+copyright=Copyright 2013 The Apache Software Foundation. All rights reserved.
 noResponseException=Der Player hat nicht wie erwartet auf den Befehl reagiert; der Befehl wird abgebrochen.
 notSuspendedException=Der Befehl kann nicht ausgestellt werden, w\u00e4hrend der Player ausgef\u00fchrt wird
 illegalStateException=Der Befehl ist ohne Sitzung nicht zul\u00e4ssig.

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/fdb_en.properties
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/fdb_en.properties b/modules/debugger/src/java/flex/tools/debugger/cli/fdb_en.properties
index 784340f..cecdc4e 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/fdb_en.properties
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/fdb_en.properties
@@ -1,21 +1,18 @@
-################################################################################
-##
-##  Licensed to the Apache Software Foundation (ASF) under one or more
-##  contributor license agreements.  See the NOTICE file distributed with
-##  this work for additional information regarding copyright ownership.
-##  The ASF licenses this file to You under the Apache License, Version 2.0
-##  (the "License"); you may not use this file except in compliance with
-##  the License.  You may obtain a copy of the License at
-##
-##      http://www.apache.org/licenses/LICENSE-2.0
-##
-##  Unless required by applicable law or agreed to in writing, software
-##  distributed under the License is distributed on an "AS IS" BASIS,
-##  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-##  See the License for the specific language governing permissions and
-##  limitations under the License.
-##
-################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
 
 # Translation:
 #
@@ -28,7 +25,7 @@
 
 defaultBuildName=development
 about=Apache fdb (Flash Player Debugger) [build ${build}]
-copyright=Copyright 2014 The Apache Software Foundation.
+copyright=Copyright 2013 The Apache Software Foundation. All rights reserved.
 noResponseException=Player did not respond to the command as expected; command aborted.
 notSuspendedException=Command cannot be issued while Player is running
 illegalStateException=Command not valid without a session.
@@ -47,6 +44,11 @@ unknownBreakpointLocation=<unknown>
 unknownFilename=<unknown>
 inFunctionAt=in ${functionName}() at\ 
 inSwf=\ in ${swf}
+inWorker=Worker ${worker}
+workerRunning=Running
+workerSuspended=Suspended
+workerSelected=(Active)
+mainThread=Main Thread
 nonRestorable=\ ; Non-restorable from prior session
 sourceDirectoriesSearched=Source directories searched:
 attemptingToSuspend=Attempting to suspend Player execution...
@@ -81,6 +83,8 @@ breakpointNoCode=\ (no executable code on the specified line)
 sessionTerminated=Player session terminated
 additionalCodeLoaded=Additional ActionScript code has been loaded from a SWF or a frame.\n\
 To see all currently loaded files, type 'info files'.
+workerChanged=Active worker has changed to worker
+workerNotFound=No worker found with that ID
 setAdditionalBreakpoints=Set additional breakpoints as desired, and then type 'continue'.
 fixBreakpoints=Fix or remove bad breakpoints, then type 'continue'.
 executionHalted=Execution halted
@@ -89,6 +93,8 @@ haltedInFunction=${reasonForHalting}, ${functionName}() at ${fileAndLine}
 haltedInFile=${reasonForHalting}, ${fileAndLine}
 linePrefixWhenDisplayingConsoleError=[Error]
 linePrefixWhenDisplayingFault=[Fault]
+linePrefixWhenWorkerCreated=[WorkerCreate]
+linePrefixWhenWorkerExit=[WorkerDestroy]
 linePrefixWhenSwfLoaded=[SWF]
 linePrefixWhenSwfUnloaded=[UnloadSWF]
 informationAboutFault=, information=
@@ -265,3 +271,4 @@ key34=Player is not currently suspended on any actions.
 key35=in '${swfName}'
 atAddress=at ${address}
 haltedDueToFault=due to ${fault}
+noWorkersRunning=There are no workers running.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/fdb_es.properties
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/fdb_es.properties b/modules/debugger/src/java/flex/tools/debugger/cli/fdb_es.properties
index e9fb68a..5e4d52f 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/fdb_es.properties
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/fdb_es.properties
@@ -1,21 +1,18 @@
-################################################################################
-##
-##  Licensed to the Apache Software Foundation (ASF) under one or more
-##  contributor license agreements.  See the NOTICE file distributed with
-##  this work for additional information regarding copyright ownership.
-##  The ASF licenses this file to You under the Apache License, Version 2.0
-##  (the "License"); you may not use this file except in compliance with
-##  the License.  You may obtain a copy of the License at
-##
-##      http://www.apache.org/licenses/LICENSE-2.0
-##
-##  Unless required by applicable law or agreed to in writing, software
-##  distributed under the License is distributed on an "AS IS" BASIS,
-##  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-##  See the License for the specific language governing permissions and
-##  limitations under the License.
-##
-################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
 
 # Translation:
 #
@@ -28,7 +25,7 @@
 
 defaultBuildName=desarrollo
 about=Apache fdb (Flash Player Debugger) [build ${build}]
-copyright=Copyright 2014 The Apache Software Foundation.
+copyright=Copyright 2013 The Apache Software Foundation. Reservados todos los derechos.
 noResponseException=El reproductor no respondi\u00f3 al comando como se esperaba; se cancel\u00f3 el comando.
 notSuspendedException=No puede emitirse el comando mientras el reproductor se est\u00e1 ejecutando.
 illegalStateException=El comando no es v\u00e1lido sin una sesi\u00f3n.

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/fdb_fi.properties
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/fdb_fi.properties b/modules/debugger/src/java/flex/tools/debugger/cli/fdb_fi.properties
index a4eab52..fa39036 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/fdb_fi.properties
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/fdb_fi.properties
@@ -1,21 +1,18 @@
-################################################################################
-##
-##  Licensed to the Apache Software Foundation (ASF) under one or more
-##  contributor license agreements.  See the NOTICE file distributed with
-##  this work for additional information regarding copyright ownership.
-##  The ASF licenses this file to You under the Apache License, Version 2.0
-##  (the "License"); you may not use this file except in compliance with
-##  the License.  You may obtain a copy of the License at
-##
-##      http://www.apache.org/licenses/LICENSE-2.0
-##
-##  Unless required by applicable law or agreed to in writing, software
-##  distributed under the License is distributed on an "AS IS" BASIS,
-##  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-##  See the License for the specific language governing permissions and
-##  limitations under the License.
-##
-################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
 
 # Translation:
 #
@@ -28,7 +25,7 @@
 
 defaultBuildName=kehitys
 about=Apache fdb (Flash Player Debugger) [versio ${build}]
-copyright=Copyright 2014 The Apache Software Foundation.
+copyright=Copyright 2013 The Apache Software Foundation. All rights reserved.
 noResponseException=Soitin ei vastannut komentoon odotetulla tavalla. Komento keskeytettiin.
 notSuspendedException=Komentoa ei voi antaa, kun soitin on k\u00e4ynniss\u00e4
 illegalStateException=Komento ei kelpaa ilman istuntoa.

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/fdb_fr.properties
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/fdb_fr.properties b/modules/debugger/src/java/flex/tools/debugger/cli/fdb_fr.properties
index 92a4c14..0c04985 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/fdb_fr.properties
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/fdb_fr.properties
@@ -1,21 +1,18 @@
-################################################################################
-##
-##  Licensed to the Apache Software Foundation (ASF) under one or more
-##  contributor license agreements.  See the NOTICE file distributed with
-##  this work for additional information regarding copyright ownership.
-##  The ASF licenses this file to You under the Apache License, Version 2.0
-##  (the "License"); you may not use this file except in compliance with
-##  the License.  You may obtain a copy of the License at
-##
-##      http://www.apache.org/licenses/LICENSE-2.0
-##
-##  Unless required by applicable law or agreed to in writing, software
-##  distributed under the License is distributed on an "AS IS" BASIS,
-##  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-##  See the License for the specific language governing permissions and
-##  limitations under the License.
-##
-################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
 
 # Translation:
 #
@@ -28,7 +25,7 @@
 
 defaultBuildName=d\u00e9veloppement
 about=Apache fdb (Flash Player Debugger) [build ${build}]
-copyright=Copyright 2014 The Apache Software Foundation.
+copyright=Copyright 2013 The Apache Software Foundation. Tous droits r\u00e9serv\u00e9s.
 noResponseException=Le lecteur n'a pas r\u00e9pondu \u00e0 la commande comme pr\u00e9vu ; commande annul\u00e9e.
 notSuspendedException=Impossible d'\u00e9mettre la commande lorsque le lecteur est en cours d'ex\u00e9cution
 illegalStateException=Commande incorrecte sans session.
@@ -47,6 +44,11 @@ unknownBreakpointLocation=<inconnu>
 unknownFilename=<inconnu>
 inFunctionAt=dans ${functionName}() \u00e0 
 inSwf=dans ${swf}
+inWorker=Op\u00e9rateur ${worker}
+workerRunning=En cours d'ex\u00e9cution
+workerSuspended=Suspendu
+workerSelected=(Actif)
+mainThread=Thread principal\u00a0
 nonRestorable=; Aucun \u00e9l\u00e9ment \u00e0 restaurer de la session pr\u00e9c\u00e9dente
 sourceDirectoriesSearched=R\u00e9pertoires source dans lesquels rechercher :
 attemptingToSuspend=Tentative d'interruption de l'ex\u00e9cution du lecteur...
@@ -80,6 +82,8 @@ breakpointAmbiguous=(ambigu)
 breakpointNoCode=(pas de code ex\u00e9cutable sur la ligne sp\u00e9cifi\u00e9e)
 sessionTerminated=La session du lecteur s'est termin\u00e9e
 additionalCodeLoaded=Un code ActionScript suppl\u00e9mentaire a \u00e9t\u00e9 charg\u00e9 depuis un fichier SWF ou une image.\nPour voir tous les fichiers actuellement charg\u00e9s, tapez 'info files'.
+workerChanged=Op\u00e9rateur actif modifi\u00e9 en op\u00e9rateur
+workerNotFound=Aucun op\u00e9rateur trouv\u00e9 pour cet ID
 setAdditionalBreakpoints=D\u00e9finissez les points d'arr\u00eat suppl\u00e9mentaires voulus, puis tapez 'continue'.
 fixBreakpoints=Corrigez ou supprimez les points d'arr\u00eat incorrect, puis tapez 'continue'.
 executionHalted=Ex\u00e9cution arr\u00eat\u00e9e
@@ -88,6 +92,8 @@ haltedInFunction=${reasonForHalting}, ${functionName}() sur ${fileAndLine}
 haltedInFile=${reasonForHalting}, ${fileAndLine}
 linePrefixWhenDisplayingConsoleError=[Error]
 linePrefixWhenDisplayingFault=[Fault]
+linePrefixWhenWorkerCreated=[WorkerCreate]
+linePrefixWhenWorkerExit=[WorkerDestroy]
 linePrefixWhenSwfLoaded=[SWF]
 linePrefixWhenSwfUnloaded=[UnloadSWF]
 informationAboutFault=, information=
@@ -254,3 +260,4 @@ key34=Le lecteur n'est actuellement pas interrompu sur des actions.
 key35=dans '${swfName}'
 atAddress=\u00e0 ${adresse}
 haltedDueToFault=en raison de ${fault}
+noWorkersRunning=Aucun op\u00e9rateur en cours d\u2019ex\u00e9cution

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/fdb_it.properties
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/fdb_it.properties b/modules/debugger/src/java/flex/tools/debugger/cli/fdb_it.properties
index b0f18f8..d0cd6a5 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/fdb_it.properties
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/fdb_it.properties
@@ -1,21 +1,18 @@
-################################################################################
-##
-##  Licensed to the Apache Software Foundation (ASF) under one or more
-##  contributor license agreements.  See the NOTICE file distributed with
-##  this work for additional information regarding copyright ownership.
-##  The ASF licenses this file to You under the Apache License, Version 2.0
-##  (the "License"); you may not use this file except in compliance with
-##  the License.  You may obtain a copy of the License at
-##
-##      http://www.apache.org/licenses/LICENSE-2.0
-##
-##  Unless required by applicable law or agreed to in writing, software
-##  distributed under the License is distributed on an "AS IS" BASIS,
-##  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-##  See the License for the specific language governing permissions and
-##  limitations under the License.
-##
-################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
 
 # Translation:
 #
@@ -28,7 +25,7 @@
 
 defaultBuildName=sviluppo
 about=Apache fdb (Flash Player Debugger) [build ${build}]
-copyright=Copyright 2014 The Apache Software Foundation.
+copyright=Copyright 2013 The Apache Software Foundation. All rights reserved.
 noResponseException=Player non ha risposto al comando come previsto. Comando terminato.
 notSuspendedException=Impossibile inviare il comando mentre Player \u00e8 in esecuzione
 illegalStateException=Comando non valido senza una sessione.

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/fdb_ja.properties
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/fdb_ja.properties b/modules/debugger/src/java/flex/tools/debugger/cli/fdb_ja.properties
index 4ecc877..7f68711 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/fdb_ja.properties
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/fdb_ja.properties
@@ -1,21 +1,18 @@
-################################################################################
-##
-##  Licensed to the Apache Software Foundation (ASF) under one or more
-##  contributor license agreements.  See the NOTICE file distributed with
-##  this work for additional information regarding copyright ownership.
-##  The ASF licenses this file to You under the Apache License, Version 2.0
-##  (the "License"); you may not use this file except in compliance with
-##  the License.  You may obtain a copy of the License at
-##
-##      http://www.apache.org/licenses/LICENSE-2.0
-##
-##  Unless required by applicable law or agreed to in writing, software
-##  distributed under the License is distributed on an "AS IS" BASIS,
-##  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-##  See the License for the specific language governing permissions and
-##  limitations under the License.
-##
-################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
 
 # Translation:
 #
@@ -28,7 +25,7 @@
 
 defaultBuildName=development
 about=Apache fdb (Flash Player Debugger) [\u30d3\u30eb\u30c9 ${build}]
-copyright=Copyright 2014 The Apache Software Foundation.
+copyright=Copyright 2013 The Apache Software Foundation. All rights reserved.
 noResponseException=Player \u304c\u30b3\u30de\u30f3\u30c9\u306b\u5bfe\u3057\u3066\u4e88\u671f\u3055\u308c\u305f\u5fdc\u7b54\u3092\u3057\u306a\u304b\u3063\u305f\u305f\u3081\u3001\u30b3\u30de\u30f3\u30c9\u51e6\u7406\u306f\u4e2d\u6b62\u3055\u308c\u307e\u3057\u305f\u3002
 notSuspendedException=Player \u306e\u5b9f\u884c\u4e2d\u306b\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093
 illegalStateException=\u30bb\u30c3\u30b7\u30e7\u30f3\u304c\u78ba\u7acb\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u3001\u30b3\u30de\u30f3\u30c9\u306f\u7121\u52b9\u3067\u3059\u3002
@@ -47,6 +44,11 @@ unknownBreakpointLocation=<\u4e0d\u660e>
 unknownFilename=<\u4e0d\u660e>
 inFunctionAt=\u306e\u5834\u6240\u306b\u3042\u308b ${functionName}() \u5185 
 inSwf=${swf} \u5185
+inWorker=\u30ef\u30fc\u30ab\u30fc ${worker}
+workerRunning=\u5b9f\u884c\u4e2d
+workerSuspended=\u4e2d\u65ad
+workerSelected=(\u30a2\u30af\u30c6\u30a3\u30d6)
+mainThread=\u30e1\u30a4\u30f3\u30b9\u30ec\u30c3\u30c9
 nonRestorable=; \u76f4\u524d\u306e\u30bb\u30c3\u30b7\u30e7\u30f3\u304b\u3089\u5fa9\u5143\u3067\u304d\u307e\u305b\u3093
 sourceDirectoriesSearched=\u691c\u7d22\u3057\u305f\u30bd\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea :
 attemptingToSuspend=Player \u306e\u5b9f\u884c\u3092\u4e2d\u65ad\u3057\u3066\u3044\u307e\u3059...
@@ -80,6 +82,8 @@ breakpointAmbiguous=(ambiguous)
 breakpointNoCode=(\u6307\u5b9a\u884c\u306b\u306f\u5b9f\u884c\u53ef\u80fd\u306a\u30b3\u30fc\u30c9\u304c\u3042\u308a\u307e\u305b\u3093)
 sessionTerminated=Player \u30bb\u30c3\u30b7\u30e7\u30f3\u304c\u7d42\u4e86\u3057\u307e\u3057\u305f
 additionalCodeLoaded=SWF \u30d5\u30a1\u30a4\u30eb\u307e\u305f\u306f\u30d5\u30ec\u30fc\u30e0\u304b\u3089\u8ffd\u52a0\u306e ActionScript \u30b3\u30fc\u30c9\u304c\u30ed\u30fc\u30c9\u3055\u308c\u307e\u3057\u305f\u3002\n\u73fe\u5728\u30ed\u30fc\u30c9\u3055\u308c\u3066\u3044\u308b\u3059\u3079\u3066\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u8868\u793a\u3059\u308b\u306b\u306f\u3001\u300cinfo files\u300d\u3068\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+workerChanged=\u30a2\u30af\u30c6\u30a3\u30d6\u306a\u30ef\u30fc\u30ab\u30fc\u304c\u30ef\u30fc\u30ab\u30fc\u306b\u5909\u66f4\u3055\u308c\u307e\u3057\u305f
+workerNotFound=\u305d\u306e ID \u306e\u30ef\u30fc\u30ab\u30fc\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f
 setAdditionalBreakpoints=\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8\u3092\u8ffd\u52a0\u8a2d\u5b9a\u3057\u3001\u300ccontinue\u300d\u3068\u5165\u529b\u3057\u307e\u3059\u3002
 fixBreakpoints=\u4e0d\u6b63\u306a\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8\u3092\u4fee\u6b63\u307e\u305f\u306f\u524a\u9664\u3057\u3001\u300ccontinue\u300d\u3068\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002
 executionHalted=\u5b9f\u884c\u304c\u4e2d\u6b62\u3055\u308c\u307e\u3057\u305f
@@ -88,6 +92,8 @@ haltedInFunction=\u7406\u7531 : ${reasonForHalting}\u3001\u95a2\u6570\u540d : ${
 haltedInFile=${reasonForHalting}, ${fileAndLine}
 linePrefixWhenDisplayingConsoleError=[\u30a8\u30e9\u30fc]
 linePrefixWhenDisplayingFault=[\u30d5\u30a9\u30eb\u30c8]
+linePrefixWhenWorkerCreated=[WorkerCreate]
+linePrefixWhenWorkerExit=[WorkerDestroy]
 linePrefixWhenSwfLoaded=[SWF]
 linePrefixWhenSwfUnloaded=[UnloadSWF]
 informationAboutFault=\u3001\u60c5\u5831 =
@@ -254,3 +260,4 @@ key34=Player \u3067\u306f\u73fe\u5728\u3069\u306e\u30a2\u30af\u30b7\u30e7\u30f3\
 key35=\\u201d${swfName}\\u201d \u5185
 atAddress=\u30a2\u30c9\u30ec\u30b9 : ${address}
 haltedDueToFault=\u539f\u56e0 : ${fault}
+noWorkersRunning=\u5b9f\u884c\u4e2d\u306e\u30ef\u30fc\u30ab\u30fc\u306f\u3042\u308a\u307e\u305b\u3093\u3002

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/fdb_ko.properties
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/fdb_ko.properties b/modules/debugger/src/java/flex/tools/debugger/cli/fdb_ko.properties
index 7b21095..c603203 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/fdb_ko.properties
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/fdb_ko.properties
@@ -1,21 +1,18 @@
-################################################################################
-##
-##  Licensed to the Apache Software Foundation (ASF) under one or more
-##  contributor license agreements.  See the NOTICE file distributed with
-##  this work for additional information regarding copyright ownership.
-##  The ASF licenses this file to You under the Apache License, Version 2.0
-##  (the "License"); you may not use this file except in compliance with
-##  the License.  You may obtain a copy of the License at
-##
-##      http://www.apache.org/licenses/LICENSE-2.0
-##
-##  Unless required by applicable law or agreed to in writing, software
-##  distributed under the License is distributed on an "AS IS" BASIS,
-##  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-##  See the License for the specific language governing permissions and
-##  limitations under the License.
-##
-################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
 
 # Translation:
 #
@@ -28,7 +25,7 @@
 
 defaultBuildName=\uac1c\ubc1c
 about=Apache fdb(Flash Player Debugger) [\ube4c\ub4dc ${build}]
-copyright=Copyright 2014 The Apache Software Foundation.
+copyright=Copyright 2013 The Apache Software Foundation. All rights reserved.
 noResponseException=\ud50c\ub808\uc774\uc5b4\uac00 \uc608\uc0c1\ub300\ub85c \uba85\ub839\uc5d0 \uc751\ub2f5\ud558\uc9c0 \uc54a\uc544 \uba85\ub839\uc774 \uc911\ub2e8\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
 notSuspendedException=\ud50c\ub808\uc774\uc5b4 \uc2e4\ud589 \uc911\uc5d0 \uba85\ub839\uc744 \uc218\ud589\ud560 \uc218 \uc5c6\uc74c
 illegalStateException=\uc138\uc158\uc774 \uc5c6\uc73c\uba74 \uba85\ub839\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/fdb_nb.properties
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/fdb_nb.properties b/modules/debugger/src/java/flex/tools/debugger/cli/fdb_nb.properties
index 60c17ba..41c4fef 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/fdb_nb.properties
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/fdb_nb.properties
@@ -1,21 +1,18 @@
-################################################################################
-##
-##  Licensed to the Apache Software Foundation (ASF) under one or more
-##  contributor license agreements.  See the NOTICE file distributed with
-##  this work for additional information regarding copyright ownership.
-##  The ASF licenses this file to You under the Apache License, Version 2.0
-##  (the "License"); you may not use this file except in compliance with
-##  the License.  You may obtain a copy of the License at
-##
-##      http://www.apache.org/licenses/LICENSE-2.0
-##
-##  Unless required by applicable law or agreed to in writing, software
-##  distributed under the License is distributed on an "AS IS" BASIS,
-##  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-##  See the License for the specific language governing permissions and
-##  limitations under the License.
-##
-################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
 
 # Translation:
 #
@@ -28,7 +25,7 @@
 
 defaultBuildName=utvikling
 about=Apache fdb (Flash Player Debugger) [build ${build}]
-copyright=Copyright 2014 The Apache Software Foundation.
+copyright=Copyright 2013 The Apache Software Foundation. All rights reserved.
 noResponseException=Spilleren reagerte ikke som forventet p\u00e5 kommandoen. Kommando ble avbrutt.
 notSuspendedException=Kommandoen kan ikke gis mens spilleren kj\u00f8rer
 illegalStateException=Kommandoen er ikke gyldig uten en \u00f8kt.

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/fdb_nl.properties
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/fdb_nl.properties b/modules/debugger/src/java/flex/tools/debugger/cli/fdb_nl.properties
index 8c74962..c525f2a 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/fdb_nl.properties
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/fdb_nl.properties
@@ -1,21 +1,18 @@
-################################################################################
-##
-##  Licensed to the Apache Software Foundation (ASF) under one or more
-##  contributor license agreements.  See the NOTICE file distributed with
-##  this work for additional information regarding copyright ownership.
-##  The ASF licenses this file to You under the Apache License, Version 2.0
-##  (the "License"); you may not use this file except in compliance with
-##  the License.  You may obtain a copy of the License at
-##
-##      http://www.apache.org/licenses/LICENSE-2.0
-##
-##  Unless required by applicable law or agreed to in writing, software
-##  distributed under the License is distributed on an "AS IS" BASIS,
-##  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-##  See the License for the specific language governing permissions and
-##  limitations under the License.
-##
-################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
 
 # Translation:
 #
@@ -28,7 +25,7 @@
 
 defaultBuildName=ontwikkeling
 about=Apache fdb (Flash Player Debugger) [build ${build}]
-copyright=Copyright 2014 The Apache Software Foundation.
+copyright=Copyright 2013 The Apache Software Foundation. All rights reserved.
 noResponseException=Player heeft op onverwachte wijze gereageerd op de opdracht; opdracht afgebroken.
 notSuspendedException=Kan opdracht niet uitvoeren terwijl Player wordt uitgevoerd
 illegalStateException=Opdracht niet geldig zonder sessie

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/fdb_pt.properties
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/fdb_pt.properties b/modules/debugger/src/java/flex/tools/debugger/cli/fdb_pt.properties
index abed340..ed11515 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/fdb_pt.properties
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/fdb_pt.properties
@@ -1,21 +1,18 @@
-################################################################################
-##
-##  Licensed to the Apache Software Foundation (ASF) under one or more
-##  contributor license agreements.  See the NOTICE file distributed with
-##  this work for additional information regarding copyright ownership.
-##  The ASF licenses this file to You under the Apache License, Version 2.0
-##  (the "License"); you may not use this file except in compliance with
-##  the License.  You may obtain a copy of the License at
-##
-##      http://www.apache.org/licenses/LICENSE-2.0
-##
-##  Unless required by applicable law or agreed to in writing, software
-##  distributed under the License is distributed on an "AS IS" BASIS,
-##  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-##  See the License for the specific language governing permissions and
-##  limitations under the License.
-##
-################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
 
 # Translation:
 #
@@ -28,7 +25,7 @@
 
 defaultBuildName=desenvolvimento
 about=Apache fdb (Flash Player Debugger) [build ${build}]
-copyright=Copyright 2014 The Apache Software Foundation.
+copyright=Copyright 2013 The Apache Software Foundation. Todos os direitos reservados.
 noResponseException=O Player n\u00e3o respondeu ao comando como esperado; comando anulado.
 notSuspendedException=N\u00e3o \u00e9 poss\u00edvel emitir o comando enquanto o Player est\u00e1 em execu\u00e7\u00e3o
 illegalStateException=Comando inv\u00e1lido sem uma sess\u00e3o.


[15/15] git commit: [flex-sdk] [refs/heads/FDBWorkers] - FLEX-34292: Can't select another worker while a pending prompt is required

Posted by ft...@apache.org.
FLEX-34292: Can't select another worker while a pending prompt is required


Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/9ced6a87
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/9ced6a87
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/9ced6a87

Branch: refs/heads/FDBWorkers
Commit: 9ced6a87f74183627a281597a1fd851bbea48edb
Parents: 379cb60
Author: Fr�d�ric THMOAS <ft...@apache.org>
Authored: Wed Apr 30 10:51:00 2014 +0100
Committer: Fr�d�ric THMOAS <ft...@apache.org>
Committed: Wed Apr 30 10:51:00 2014 +0100

----------------------------------------------------------------------
 modules/debugger/src/java/flex/tools/debugger/cli/DebugCLI.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/9ced6a87/modules/debugger/src/java/flex/tools/debugger/cli/DebugCLI.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/DebugCLI.java b/modules/debugger/src/java/flex/tools/debugger/cli/DebugCLI.java
index 6eb04ef..95f207b 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/DebugCLI.java
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/DebugCLI.java
@@ -2357,7 +2357,7 @@ public class DebugCLI implements Runnable, SourceLocator {
                 } else {
                     pendingPromptIsolate = hasPendingInitialPrompts();
                 }
-                if (pendingPromptIsolate != -1) {
+                if (pendingPromptIsolate != -1 && pendingPromptIsolate == m_activeIsolate) {
                     dumpInitialPrompt(pendingPromptIsolate);
                 }
             }


[14/15] git commit: [flex-sdk] [refs/heads/FDBWorkers] - FLEX-34291: Merge the donated FDB with the current one.

Posted by ft...@apache.org.
FLEX-34291: Merge the donated FDB with the current one.

- Re-applied previous fixes
- Kept the legacy code to evaluate expressions, the new code based on Falcon classes will be created in the Falcon repository.


Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/379cb609
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/379cb609
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/379cb609

Branch: refs/heads/FDBWorkers
Commit: 379cb6098f2ffeb33b593a3ff5bacbc4856b65cf
Parents: dd6ef7e
Author: Fr�d�ric THMOAS <ft...@apache.org>
Authored: Wed Apr 30 10:41:54 2014 +0100
Committer: Fr�d�ric THMOAS <ft...@apache.org>
Committed: Wed Apr 30 10:41:54 2014 +0100

----------------------------------------------------------------------
 .../debugger/DefaultDebuggerCallbacks.java      |    55 +-
 .../src/java/flash/tools/debugger/Frame.java    |    50 +-
 .../tools/debugger/IDebuggerCallbacks.java      |    48 +-
 .../java/flash/tools/debugger/ILauncher.java    |    49 +
 .../src/java/flash/tools/debugger/Isolate.java  |    40 +
 .../flash/tools/debugger/IsolateController.java |   184 +
 .../flash/tools/debugger/IsolateSession.java    |   177 +
 .../src/java/flash/tools/debugger/Location.java |    31 +-
 .../src/java/flash/tools/debugger/Session.java  |    59 +-
 .../src/java/flash/tools/debugger/SwfInfo.java  |     5 +
 .../src/java/flash/tools/debugger/Value.java    |    56 +-
 .../src/java/flash/tools/debugger/Variable.java |    49 +-
 .../src/java/flash/tools/debugger/Watch.java    |    31 +-
 .../flash/tools/debugger/concrete/DIsolate.java |    49 +
 .../tools/debugger/concrete/DLocation.java      |    36 +-
 .../flash/tools/debugger/concrete/DManager.java |  3321 +++--
 .../flash/tools/debugger/concrete/DMessage.java |    93 +-
 .../tools/debugger/concrete/DMessageCache.java  |    26 +-
 .../debugger/concrete/DMessageCounter.java      |   133 +-
 .../flash/tools/debugger/concrete/DModule.java  |    37 +-
 .../tools/debugger/concrete/DProtocol.java      |    40 +-
 .../debugger/concrete/DProtocolNotifierIF.java  |    26 +-
 .../tools/debugger/concrete/DStackContext.java  |    48 +-
 .../tools/debugger/concrete/DSuspendInfo.java   |    26 +-
 .../flash/tools/debugger/concrete/DSwfInfo.java |    42 +-
 .../flash/tools/debugger/concrete/DValue.java   |    92 +-
 .../tools/debugger/concrete/DVariable.java      |    59 +-
 .../flash/tools/debugger/concrete/DWatch.java   |    34 +-
 .../debugger/concrete/IsolatePlayerSession.java |   221 +
 .../tools/debugger/concrete/PlayerSession.java  |  1262 +-
 .../concrete/PlayerSessionIsolateStatus.java    |    25 +
 .../flash/tools/debugger/events/BreakEvent.java |    37 +-
 .../debugger/events/ConsoleErrorFault.java      |    29 +-
 .../debugger/events/DivideByZeroFault.java      |    31 +-
 .../tools/debugger/events/ExceptionFault.java   |    31 +-
 .../flash/tools/debugger/events/FaultEvent.java |    43 +-
 .../debugger/events/InvalidTargetFault.java     |    29 +-
 .../tools/debugger/events/InvalidURLFault.java  |    29 +-
 .../tools/debugger/events/InvalidWithFault.java |    31 +-
 .../debugger/events/IsolateCreateEvent.java     |    38 +
 .../tools/debugger/events/IsolateExitEvent.java |    38 +
 .../tools/debugger/events/ProtoLimitFault.java  |    31 +-
 .../debugger/events/RecursionLimitFault.java    |    31 +-
 .../debugger/events/ScriptTimeoutFault.java     |    31 +-
 .../debugger/events/StackUnderFlowFault.java    |    31 +-
 .../tools/debugger/expression/Context.java      |     5 +
 .../debugger/expression/DebuggerEvaluator.java  |    10 +-
 .../flash/tools/debugger/expression/ECMA.java   |   119 +-
 .../debugger/threadsafe/ThreadSafeFrame.java    |    36 +-
 .../debugger/threadsafe/ThreadSafeIsolate.java  |    62 +
 .../threadsafe/ThreadSafeIsolateSession.java    |   285 +
 .../debugger/threadsafe/ThreadSafeLocation.java |    33 +-
 .../debugger/threadsafe/ThreadSafeSession.java  |    96 +-
 .../debugger/threadsafe/ThreadSafeSwfInfo.java  |    33 +-
 .../debugger/threadsafe/ThreadSafeValue.java    |    35 +-
 .../debugger/threadsafe/ThreadSafeVariable.java |    32 +-
 .../debugger/threadsafe/ThreadSafeWatch.java    |    33 +-
 .../java/flex/tools/debugger/cli/DebugCLI.java  | 12666 ++++++++---------
 .../flex/tools/debugger/cli/DisplayAction.java  |    34 +-
 .../tools/debugger/cli/ExpressionCache.java     |    34 +-
 .../tools/debugger/cli/ExpressionContext.java   |    87 +-
 .../flex/tools/debugger/cli/Extensions.java     |    66 +-
 .../flex/tools/debugger/cli/FaultActions.java   |   139 +-
 .../flex/tools/debugger/cli/FileInfoCache.java  |   137 +-
 .../flex/tools/debugger/cli/VariableFacade.java |    43 +-
 .../flex/tools/debugger/cli/fdb_da.properties   |    35 +-
 .../flex/tools/debugger/cli/fdb_de.properties   |    37 +-
 .../flex/tools/debugger/cli/fdb_en.properties   |    45 +-
 .../flex/tools/debugger/cli/fdb_es.properties   |    35 +-
 .../flex/tools/debugger/cli/fdb_fi.properties   |    35 +-
 .../flex/tools/debugger/cli/fdb_fr.properties   |    45 +-
 .../flex/tools/debugger/cli/fdb_it.properties   |    35 +-
 .../flex/tools/debugger/cli/fdb_ja.properties   |    45 +-
 .../flex/tools/debugger/cli/fdb_ko.properties   |    35 +-
 .../flex/tools/debugger/cli/fdb_nb.properties   |    35 +-
 .../flex/tools/debugger/cli/fdb_nl.properties   |    35 +-
 .../flex/tools/debugger/cli/fdb_pt.properties   |    35 +-
 .../flex/tools/debugger/cli/fdb_ru.properties   |    35 +-
 .../flex/tools/debugger/cli/fdb_sv.properties   |    35 +-
 .../tools/debugger/cli/fdb_zh_CN.properties     |    45 +-
 .../tools/debugger/cli/fdb_zh_TW.properties     |    35 +-
 .../java/flex/tools/debugger/cli/fdbhelp_br.txt |   805 +-
 .../java/flex/tools/debugger/cli/fdbhelp_de.txt |   859 +-
 .../java/flex/tools/debugger/cli/fdbhelp_dk.txt |   794 +-
 .../java/flex/tools/debugger/cli/fdbhelp_en.txt |    19 +-
 .../java/flex/tools/debugger/cli/fdbhelp_es.txt |   807 +-
 .../java/flex/tools/debugger/cli/fdbhelp_fi.txt |   803 +-
 .../java/flex/tools/debugger/cli/fdbhelp_fr.txt |  1397 +-
 .../java/flex/tools/debugger/cli/fdbhelp_it.txt |   858 +-
 .../java/flex/tools/debugger/cli/fdbhelp_ja.txt |    67 +-
 .../flex/tools/debugger/cli/fdbhelp_ko_kr.txt   |   810 +-
 .../java/flex/tools/debugger/cli/fdbhelp_nl.txt |  2610 ++--
 .../java/flex/tools/debugger/cli/fdbhelp_no.txt |   790 +-
 .../java/flex/tools/debugger/cli/fdbhelp_ru.txt |   808 +-
 .../java/flex/tools/debugger/cli/fdbhelp_se.txt |   792 +-
 .../flex/tools/debugger/cli/fdbhelp_zh_cn.txt   |   785 +-
 .../flex/tools/debugger/cli/fdbhelp_zh_tw.txt   |   738 +-
 97 files changed, 13198 insertions(+), 21995 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/DefaultDebuggerCallbacks.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/DefaultDebuggerCallbacks.java b/modules/debugger/src/java/flash/tools/debugger/DefaultDebuggerCallbacks.java
index 87f3136..d94ae46 100644
--- a/modules/debugger/src/java/flash/tools/debugger/DefaultDebuggerCallbacks.java
+++ b/modules/debugger/src/java/flash/tools/debugger/DefaultDebuggerCallbacks.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger;
@@ -316,13 +314,36 @@ public class DefaultDebuggerCallbacks implements IDebuggerCallbacks
 	{
 		return Runtime.getRuntime().exec(cmd);
 	}
-
+	
+	@Override
+	public Process launchDebugTarget(String[] cmd, ILauncher launcher) throws IOException {
+		return launcher.launch(cmd);
+	}
+	
 	/*
 	 * @see flash.tools.debugger.IDebuggerCallbacks#terminateDebugTarget(java.lang.Process)
 	 */
 	public void terminateDebugTarget(Process process) throws IOException
 	{
-		process.destroy();
+		terminateDebugTarget(process, null);
+	}
+	
+	@Override
+	public void terminateDebugTarget(Process process, ILauncher launcher) throws IOException {
+		if(null == launcher)
+		{
+			process.destroy();
+		}
+		else
+		{
+			launcher.terminate(process);
+		}
+		
+	}
+	
+	public String queryWindowsRegistry(String key, String value) throws IOException
+	{
+		return queryWindowsRegistry(key, value, 0);
 	}
 
 	/**
@@ -330,7 +351,7 @@ public class DefaultDebuggerCallbacks implements IDebuggerCallbacks
 	 * calls.  I had to do it this way because it is too hard, at this point,
 	 * to add native code to the Flex code tree.
 	 */
-	public String queryWindowsRegistry(String key, String value) throws IOException
+	public String queryWindowsRegistry(String key, String value, int registryBitMode) throws IOException
 	{
 		Process p = null;
 		String result = null;

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/Frame.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/Frame.java b/modules/debugger/src/java/flash/tools/debugger/Frame.java
index 127731ab..835c0d1 100644
--- a/modules/debugger/src/java/flash/tools/debugger/Frame.java
+++ b/modules/debugger/src/java/flash/tools/debugger/Frame.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger;
@@ -38,9 +36,9 @@ public interface Frame
 	/**
 	 * 'this' variable for the frame.  Will return null
 	 * if no 'this' pointer available for the frame.
-	 * @throws NoResponseException
-	 * @throws NotSuspendedException
-	 * @throws NotConnectedException
+	 * @throws flash.tools.debugger.NoResponseException
+	 * @throws flash.tools.debugger.NotSuspendedException
+	 * @throws flash.tools.debugger.NotConnectedException
 	 */
     public Variable getThis(Session s) throws NoResponseException, NotSuspendedException, NotConnectedException;
 
@@ -48,9 +46,9 @@ public interface Frame
 	 * Arguments that were passed into the function.  An empty
 	 * array is used to denote that no arguments were passed into 
 	 * this function scope.
-	 * @throws NoResponseException
-	 * @throws NotSuspendedException 
-	 * @throws NotConnectedException 
+	 * @throws flash.tools.debugger.NoResponseException
+	 * @throws flash.tools.debugger.NotSuspendedException
+	 * @throws flash.tools.debugger.NotConnectedException
 	 */
     public Variable[] getArguments(Session s) throws NoResponseException, NotSuspendedException, NotConnectedException;
 
@@ -58,9 +56,9 @@ public interface Frame
 	 * Locals used within this function scope.  An empty
 	 * array is used to denote no locals are available 
 	 * within this function scope.
-	 * @throws NoResponseException
-	 * @throws NotSuspendedException 
-	 * @throws NotConnectedException 
+	 * @throws flash.tools.debugger.NoResponseException
+	 * @throws flash.tools.debugger.NotSuspendedException
+	 * @throws flash.tools.debugger.NotConnectedException
 	 */
     public Variable[] getLocals(Session s) throws NoResponseException, NotSuspendedException, NotConnectedException;
 
@@ -115,4 +113,10 @@ public interface Frame
 	 * scope chain entries which were created via "with var".
 	 */
 	public Variable[] getScopeChain(Session s) throws NoResponseException, NotSuspendedException, NotConnectedException;
+	
+	/**
+	 * Returns the worker ID associated to this frame. This will return
+	 * Isolate.DEFAULT_ID, that is, the main worker.
+	 */
+	public int getIsolateId();
 }

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/IDebuggerCallbacks.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/IDebuggerCallbacks.java b/modules/debugger/src/java/flash/tools/debugger/IDebuggerCallbacks.java
index e704814..4151d53 100644
--- a/modules/debugger/src/java/flash/tools/debugger/IDebuggerCallbacks.java
+++ b/modules/debugger/src/java/flash/tools/debugger/IDebuggerCallbacks.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger;
@@ -82,6 +80,18 @@ public interface IDebuggerCallbacks
 	 * Terminates a debug target process.
 	 */
 	public void terminateDebugTarget(Process process) throws IOException;
+	
+	/**
+	 * Launches a debug target using the launcher instance<code>ILauncher.launch(cmd)</code>.
+	 * 
+	 */
+	public Process launchDebugTarget(String[] cmd, ILauncher launcher) throws IOException;
+
+	/**
+	 * Terminates a debug target process by invoking <code>ILauncher.terminate(process)</code>
+	 */
+	public void terminateDebugTarget(Process process, ILauncher launcher) throws IOException;
+
 
 	/**
 	 * Query the Windows registry.
@@ -96,13 +106,19 @@ public interface IDebuggerCallbacks
 	 *            value
 	 * @return the value stored at the location, or null if key or value was not
 	 *         found
-	 * @throws IOException
+	 * @throws java.io.IOException
 	 *             indicates the registry query failed -- warning, this can
 	 *             really happen! Some implementations of this function don't
 	 *             work on Windows 2000. So, this function should not be counted
 	 *             on too heavily -- you should have a backup plan.
 	 */
 	public String queryWindowsRegistry(String key, String value) throws IOException;
+	
+	/**
+	 * Same as queryWindowsRegistry, but allows specific access to the 32-bit
+	 * or 64-bit part of the registry.
+	 */
+	public String queryWindowsRegistry(String key, String value, int registryBitMode) throws IOException;
 
 	/**
 	 * Returns the version number of an application. For example, Firefox 3.5.4
@@ -127,7 +143,7 @@ public interface IDebuggerCallbacks
 	 *         this function needs to be cross- platform, and the format of
 	 *         version information tends to vary widely from one platform to
 	 *         another.
-	 * @throws IOException
+	 * @throws java.io.IOException
 	 *             e.g. for file not found, etc.
 	 */
 	public int[] getAppVersion(File application) throws IOException;

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/ILauncher.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/ILauncher.java b/modules/debugger/src/java/flash/tools/debugger/ILauncher.java
new file mode 100644
index 0000000..24b0623
--- /dev/null
+++ b/modules/debugger/src/java/flash/tools/debugger/ILauncher.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package flash.tools.debugger;
+
+import java.io.IOException;
+
+/**
+ * A ILauncher which handles the launching of the URI or the command.
+ * 
+ * ILauncher is to provide more flexibility to handle the Player launch in different platforms.
+ * 
+ * @author ugs
+ *
+ */
+public interface ILauncher {
+
+	/**
+	 * Launches the debug target. 
+	 * 
+	 * @param cmd - Launch URL and other arguments
+	 * @return A handle to the process.
+	 * 
+	 * @throws java.io.IOException
+	 */
+	public Process launch(String[] cmd) throws IOException;
+
+	/**
+	 * Terminate the process started by launch method.
+	 * @param process - process started by launch.
+	 * @throws java.io.IOException
+	 */
+	public void terminate(Process process) throws IOException;
+	
+	
+}

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/Isolate.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/Isolate.java b/modules/debugger/src/java/flash/tools/debugger/Isolate.java
new file mode 100644
index 0000000..982c2dd
--- /dev/null
+++ b/modules/debugger/src/java/flash/tools/debugger/Isolate.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package flash.tools.debugger;
+
+/**
+ * The Isolate object uniquely identifies a "Worker" in ActionScript.
+ * Workers are conceptually similar to Threads, but their implementation
+ * closely follows more that of a web worker than an actual OS Thread.
+ * 
+ * By default there is a default isolate object with id DEFAULT_ID.
+ * @author anirudhs
+ *
+ */
+public interface Isolate {
+	
+	public static final int DEFAULT_ID = 1;
+	
+	/**
+	 * Get the unique integer ID associated with the
+	 * worker. This is Isolate.DEFAULT_ID for the
+	 * primordial. 
+	 * @return unique integer ID
+	 */
+	public int getId();
+	
+}

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/IsolateController.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/IsolateController.java b/modules/debugger/src/java/flash/tools/debugger/IsolateController.java
new file mode 100644
index 0000000..ed09477
--- /dev/null
+++ b/modules/debugger/src/java/flash/tools/debugger/IsolateController.java
@@ -0,0 +1,184 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package flash.tools.debugger;
+
+import flash.tools.debugger.expression.PlayerFaultException;
+
+/**
+ * Worker specific debug session commands. These are a subset of Session that
+ * can be individually routed to a specific worker (including the main worker if
+ * the player does not support concurrency). This is implemented by
+ * PlayerSession and used by the getWorkerSession() api.
+ * 
+ * @see flash.tools.debugger.IsolateSession,
+ *      flash.tools.debugger.Session#getWorkerSession(int)
+ * @author anirudhs
+ * 
+ */
+public interface IsolateController {
+	
+	/**
+	 * @see flash.tools.debugger.Session#resume()
+	 */
+	public void resumeWorker(int isolateId) throws NotSuspendedException, NotConnectedException, NoResponseException;
+
+	/**
+	 * @see flash.tools.debugger.Session#suspend()
+	 */
+	public void suspendWorker(int isolateId) throws SuspendedException, NotConnectedException, NoResponseException;
+	
+	/**
+	 * @see flash.tools.debugger.Session#isSuspended()
+	 */
+	public boolean isWorkerSuspended(int isolateId) throws NotConnectedException;
+	
+	/**
+	 * @see flash.tools.debugger.Session#isSuspended()
+	 */
+	public int suspendReasonWorker(int isolateId) throws NotConnectedException;
+	
+	/**
+	 * @see flash.tools.debugger.Session#getFrames()
+	 */
+	public Frame[] getFramesWorker(int isolateId) throws NotConnectedException;
+	
+	/**
+	 * @see flash.tools.debugger.Session#stepInto()
+	 */
+	public void stepIntoWorker(int isolateId) throws NotSuspendedException, NoResponseException, NotConnectedException;
+	
+	/**
+	 * @see flash.tools.debugger.Session#stepOut()
+	 */
+	public void stepOutWorker(int isolateId)  throws NotSuspendedException, NoResponseException, NotConnectedException;
+	
+	/**
+	 * @see flash.tools.debugger.Session#stepOver()
+	 */
+	public void stepOverWorker(int isolateId) throws NotSuspendedException, NoResponseException, NotConnectedException;
+	
+	/**
+	 * @see flash.tools.debugger.Session#stepContinue()
+	 */
+	public void stepContinueWorker(int isolateId) throws NotSuspendedException, NoResponseException, NotConnectedException;
+	
+	/**
+	 * @see flash.tools.debugger.Session#getSwfs()
+	 */
+	public SwfInfo[] getSwfsWorker(int isolateId) throws NoResponseException;
+	
+	/**
+	 * @see flash.tools.debugger.Session#setBreakpoint(int, int)
+	 */
+	public Location setBreakpointWorker(int fileId, int lineNum, int isolateId) throws NoResponseException, NotConnectedException;
+	
+	/**
+	 * @see flash.tools.debugger.Session#getWatchList()
+	 */
+	public Watch[] getWatchListWorker(int isolateId) throws NoResponseException, NotConnectedException;
+	
+	/**
+	 * @see flash.tools.debugger.Session#getVariableList()
+	 */
+	public Variable[] getVariableListWorker(int isolateId) throws NotSuspendedException, NoResponseException, NotConnectedException, VersionException;
+	
+	/**
+	 * @see flash.tools.debugger.Session#getValue(long)
+	 */
+	public Value getValueWorker(long valueId, int isolateId) throws NotSuspendedException, NoResponseException, NotConnectedException;
+
+	/**
+	 * @see flash.tools.debugger.Session#getGlobal(String)
+	 */
+	public Value getGlobalWorker(String name, int isolateId) throws NotSuspendedException, NoResponseException, NotConnectedException;
+	
+	/**
+	 * @see flash.tools.debugger.Session#evalIs(Value, Value)
+	 */
+	public boolean evalIsWorker(Value value, Value type, int isolateId) throws PlayerDebugException, PlayerFaultException;
+
+	/**
+	 * @see flash.tools.debugger.Session#evalIs(Value, String)
+	 */
+	public boolean evalIsWorker(Value value, String type, int isolateId) throws PlayerDebugException, PlayerFaultException;
+
+	/**
+	 * @see flash.tools.debugger.Session#evalInstanceof(Value, Value)
+	 */
+	public boolean evalInstanceofWorker(Value value, Value type, int isolateId) throws PlayerDebugException, PlayerFaultException;
+
+	/**
+	 * @see flash.tools.debugger.Session#evalInstanceof(Value, String)
+	 */
+	public boolean evalInstanceofWorker(Value value, String type, int isolateId) throws PlayerDebugException, PlayerFaultException;
+
+	/**
+	 * @see flash.tools.debugger.Session#evalIn(Value, Value)
+	 */
+	public boolean evalInWorker(Value property, Value object, int isolateId) throws PlayerDebugException, PlayerFaultException;
+
+	/**
+	 * @see flash.tools.debugger.Session#evalAs(Value, Value)
+	 */
+	public Value evalAsWorker(Value value, Value type, int isolateId) throws PlayerDebugException, PlayerFaultException;
+	
+	/**
+	 * @see flash.tools.debugger.Session#callFunction(Value, String, Value[])
+	 */
+	public Value callFunctionWorker(Value thisObject, String functionName, Value[] args, int isolateId) throws PlayerDebugException;
+	
+	/**
+	 * @see flash.tools.debugger.Session#callConstructor(String, Value[])
+	 */
+	public Value callConstructorWorker(String classname, Value[] args, int isolateId) throws PlayerDebugException;
+
+	/**
+	 * @see flash.tools.debugger.Session#setExceptionBreakpoint(String)
+	 */
+	public boolean setExceptionBreakpointWorker(String exceptionClass, int isolateId) throws NoResponseException, NotConnectedException;
+	
+	/**
+	 * @see flash.tools.debugger.Session#clearExceptionBreakpoint(String)
+	 */
+	public boolean clearExceptionBreakpointWorker(String exceptionClass, int isolateId) throws NoResponseException, NotConnectedException;
+
+	/**
+	 * @see flash.tools.debugger.Session#breakOnCaughtExceptions(boolean)
+	 */
+	public void breakOnCaughtExceptions(boolean b, int isolateId) throws NotSupportedException, NoResponseException;
+	
+	/**
+	 * @see flash.tools.debugger.Session#supportsWatchpoints()
+	 */
+	public boolean supportsWatchpoints(int isolateId);
+	
+	/**
+	 * @see flash.tools.debugger.Session#playerCanBreakOnAllExceptions()
+	 */
+	public boolean playerCanBreakOnAllExceptions(int isolateId);
+	
+	/**
+	 * @see flash.tools.debugger.Session#supportsWideLineNumbers()
+	 */
+	public boolean supportsWideLineNumbers(int isolateId);
+	
+	/**
+	 * @see flash.tools.debugger.Session#playerCanCallFunctions(String)
+	 */
+	public boolean playerCanCallFunctions(int isolateId);
+	
+}

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/IsolateSession.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/IsolateSession.java b/modules/debugger/src/java/flash/tools/debugger/IsolateSession.java
new file mode 100644
index 0000000..6b57d62
--- /dev/null
+++ b/modules/debugger/src/java/flash/tools/debugger/IsolateSession.java
@@ -0,0 +1,177 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package flash.tools.debugger;
+
+import flash.tools.debugger.expression.PlayerFaultException;
+
+/**
+ * Used to issue commands to a particular worker (isolate).
+ * @see Session
+ * @author anirudhs
+ */
+public interface IsolateSession {
+	
+	/**
+	 * @see flash.tools.debugger.Session#resume()
+	 */
+	public void resume() throws NotSuspendedException, NotConnectedException, NoResponseException;
+	
+	/**
+	 * @see flash.tools.debugger.Session#suspend()
+	 */
+	public void suspend() throws SuspendedException, NotConnectedException, NoResponseException;
+	
+	/**
+	 * @see flash.tools.debugger.Session#isSuspended()
+	 */
+	public boolean isSuspended() throws NotConnectedException;
+	
+	/**
+	 * @see flash.tools.debugger.Session#isSuspended()
+	 */
+	public int suspendReason() throws NotConnectedException;
+	
+	/**
+	 * @see flash.tools.debugger.Session#getFrames()
+	 */
+	public Frame[] getFrames() throws NotConnectedException;
+	
+	/**
+	 * @see flash.tools.debugger.Session#stepInto()
+	 */
+	public void stepInto() throws NotSuspendedException, NoResponseException, NotConnectedException;
+	
+	/**
+	 * @see flash.tools.debugger.Session#stepOut()
+	 */
+	public void stepOut()  throws NotSuspendedException, NoResponseException, NotConnectedException;
+	
+	/**
+	 * @see flash.tools.debugger.Session#stepOver()
+	 */
+	public void stepOver() throws NotSuspendedException, NoResponseException, NotConnectedException;
+	
+	/**
+	 * @see flash.tools.debugger.Session#stepContinue()
+	 */
+	public void stepContinue() throws NotSuspendedException, NoResponseException, NotConnectedException;
+	
+	/**
+	 * @see flash.tools.debugger.Session#getSwfs()
+	 */
+	public SwfInfo[] getSwfs() throws NoResponseException;
+	
+	/**
+	 * @see flash.tools.debugger.Session#setBreakpoint(int, int)
+	 */
+	public Location setBreakpoint(int fileId, int lineNum) throws NoResponseException, NotConnectedException;
+	
+	/**
+	 * @see flash.tools.debugger.Session#getWatchList()
+	 */
+	public Watch[] getWatchList() throws NoResponseException, NotConnectedException;
+	
+	/**
+	 * @see flash.tools.debugger.Session#getVariableList()
+	 */
+	public Variable[] getVariableList() throws NotSuspendedException, NoResponseException, NotConnectedException, VersionException;
+	
+	/**
+	 * @see flash.tools.debugger.Session#getValue(long)
+	 */
+	public Value getValue(long valueId) throws NotSuspendedException, NoResponseException, NotConnectedException;
+
+	/**
+	 * @see flash.tools.debugger.Session#getGlobal(String)
+	 */
+	public Value getGlobal(String name) throws NotSuspendedException, NoResponseException, NotConnectedException;
+	
+	/**
+	 * @see flash.tools.debugger.Session#evalIs(Value, Value)
+	 */
+	public boolean evalIs(Value value, Value type) throws PlayerDebugException, PlayerFaultException;
+
+	/**
+	 * @see flash.tools.debugger.Session#evalIs(Value, String)
+	 */
+	public boolean evalIs(Value value, String type) throws PlayerDebugException, PlayerFaultException;
+
+	/**
+	 * @see flash.tools.debugger.Session#evalInstanceof(Value, Value)
+	 */
+	public boolean evalInstanceof(Value value, Value type) throws PlayerDebugException, PlayerFaultException;
+
+	/**
+	 * @see flash.tools.debugger.Session#evalInstanceof(Value, String)
+	 */
+	public boolean evalInstanceof(Value value, String type) throws PlayerDebugException, PlayerFaultException;
+
+	/**
+	 * @see flash.tools.debugger.Session#evalIn(Value, Value)
+	 */
+	public boolean evalIn(Value property, Value object) throws PlayerDebugException, PlayerFaultException;
+
+	/**
+	 * @see flash.tools.debugger.Session#evalAs(Value, Value)
+	 */
+	public Value evalAs(Value value, Value type) throws PlayerDebugException, PlayerFaultException;
+	
+	/**
+	 * @see flash.tools.debugger.Session#resume()
+	 */
+	public Value callFunction(Value thisObject, String functionName, Value[] args) throws PlayerDebugException;
+	
+	/**
+	 * @see flash.tools.debugger.Session#callFunction(Value, String, Value[])
+	 */
+	public Value callConstructor(String classname, Value[] args) throws PlayerDebugException;
+	
+	/**
+	 * @see flash.tools.debugger.Session#setExceptionBreakpoint(String)
+	 */
+	public boolean setExceptionBreakpoint(String exceptionClass) throws NoResponseException, NotConnectedException;
+	
+	/**
+	 * @see flash.tools.debugger.Session#clearExceptionBreakpoint(String)
+	 */
+	public boolean clearExceptionBreakpoint(String exceptionClass) throws NoResponseException, NotConnectedException;
+	
+	/**
+	 * @see flash.tools.debugger.Session#breakOnCaughtExceptions(boolean)
+	 */
+	public void breakOnCaughtExceptions(boolean b) throws NotSupportedException, NoResponseException;
+
+	/**
+	 * @see flash.tools.debugger.Session#supportsWatchpoints()
+	 */
+	public boolean supportsWatchpoints();
+	
+	/**
+	 * @see flash.tools.debugger.Session#playerCanBreakOnAllExceptions()
+	 */
+	public boolean playerCanBreakOnAllExceptions();
+	
+	/**
+	 * @see flash.tools.debugger.Session#supportsWideLineNumbers()
+	 */
+	public boolean supportsWideLineNumbers();
+	
+	/**
+	 * @see flash.tools.debugger.Session#playerCanCallFunctions()
+	 */
+	public boolean playerCanCallFunctions();
+}

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/Location.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/Location.java b/modules/debugger/src/java/flash/tools/debugger/Location.java
index 0c6c506..bf6103c 100644
--- a/modules/debugger/src/java/flash/tools/debugger/Location.java
+++ b/modules/debugger/src/java/flash/tools/debugger/Location.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger;
@@ -34,5 +32,10 @@ public interface Location
 	 * Line number within the source for this location 
 	 */
     public int getLine();
+    
+    /**
+     * Worker to which this location belongs.
+     */
+    public int getIsolateId();
 
 }

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/Session.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/Session.java b/modules/debugger/src/java/flash/tools/debugger/Session.java
index 6a3df50..e341990 100644
--- a/modules/debugger/src/java/flash/tools/debugger/Session.java
+++ b/modules/debugger/src/java/flash/tools/debugger/Session.java
@@ -346,7 +346,7 @@ public interface Session
 	 * to the end of the list.
 	 *
 	 * @param v the variable, upon whose member, the watch is to be placed.
-	 * @param varName is the mmeber name upon which the watch
+	 * @param memberName is the mmeber name upon which the watch
 	 * should be placed.  This variable name may NOT contain the dot ('.')
 	 * character and MUST be a member of v.
 	 * @param kind access type that will trigger the watchpoint to fire --
@@ -367,8 +367,6 @@ public interface Session
 	 *
 	 * @param watch
 	 *            the watch to enable or disable
-	 * @param enabled
-	 *            whether to enable it or disable it
 	 * @throws NotSupportedException
 	 * @throws NotConnectedException
 	 * @throws NoResponseException
@@ -548,4 +546,59 @@ public interface Session
 	 * PREF_SOCKET_TIMEOUT and helps in detecting broken connections.
 	 */
 	public Exception getDisconnectCause();
+
+	/**
+	 * Set an exception breakpoint. Returns true if succeeded.
+	 * @param exceptionClass
+	 * @return
+	 * @throws NoResponseException
+	 * @throws NotConnectedException
+	 */
+	public boolean setExceptionBreakpoint(String exceptionClass) throws NoResponseException, NotConnectedException;
+
+	/**
+	 * Clears an exception breakpoint. Returns true if succeeded.
+	 * @param exceptionClass
+	 * @return
+	 * @throws NoResponseException
+	 * @throws NotConnectedException
+	 */
+	public boolean clearExceptionBreakpoint(String exceptionClass) throws NoResponseException, NotConnectedException;
+
+	// Concurrency begin
+
+	/**
+	 * Returns whether the target player supports concurrency.
+	 * @see #setActiveIsolate(Value)
+	 */
+	public boolean supportsConcurrency();
+
+	/**
+	 * Get an array of all workers that the debugger knows of.
+	 */
+	public Isolate[] getWorkers();
+
+	/**
+	 * Ask the player again for a list of all workers. Use this
+	 * method with caution as it will also reset all state about
+	 * workers that the debugger is aware of.
+	 */
+	public Isolate[] refreshWorkers() throws  NotSupportedException, NotSuspendedException, NoResponseException, NotConnectedException;
+
+	/**
+	 * Return the worker specific session object that can be used
+	 * to communicate with that worker.
+	 */
+	public IsolateSession getWorkerSession(int isolateId);
+
+	/**
+	 *
+	 * Sets the ILauncher instance which is associated with this session.
+	 * ILauncher instance is used to terminate the process at the end of the debugging session.
+	 *
+	 * @param launcher
+	 * 				ILauncher instance used to launch & terminate the process.
+	 */
+	public void setLauncher(ILauncher launcher);
+
 }

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/SwfInfo.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/SwfInfo.java b/modules/debugger/src/java/flash/tools/debugger/SwfInfo.java
index 7858edf..b87b52e 100644
--- a/modules/debugger/src/java/flash/tools/debugger/SwfInfo.java
+++ b/modules/debugger/src/java/flash/tools/debugger/SwfInfo.java
@@ -104,4 +104,9 @@ public interface SwfInfo
 	 * @since Version 2
 	 */
 	public boolean containsSource(SourceFile f);
+
+	/**
+	 * Return the worker ID to which this SWF belongs.
+	 */
+	public int getIsolateId();
 }

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/Value.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/Value.java b/modules/debugger/src/java/flash/tools/debugger/Value.java
index 077e8a4..d849db7 100644
--- a/modules/debugger/src/java/flash/tools/debugger/Value.java
+++ b/modules/debugger/src/java/flash/tools/debugger/Value.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger;
@@ -32,6 +30,7 @@ public interface Value
 	 * A special object representing ActionScript's "undefined" value.
 	 */
 	public static final Object UNDEFINED = new Object() {
+		@Override
 		public String toString() {
 			return "undefined";  //$NON-NLS-1$
 		}
@@ -119,7 +118,7 @@ public interface Value
 	 * The class name of the value. This isn't actually very useful, and should
 	 * probably go away; it had more relevant in ActionScript 2, when the return
 	 * value from this function could have been any one of the strings returned
-	 * by {@link DVariable#classNameFor(long, boolean)}.
+	 * by {@link flash.tools.debugger.concrete.DVariable#classNameFor(long, boolean)}.
 	 * 
 	 * In the AS3 world, the only possible return values from this function are:
 	 * 
@@ -137,12 +136,12 @@ public interface Value
 	 * regarding the variable.  They are bitfields identified
 	 * as VariableAttribute.xxx
 	 * 
-	 * @see VariableAttribute
+	 * @see flash.tools.debugger.VariableAttribute
 	 */
 	public int			getAttributes();
 
 	/**
-	 * @see VariableAttribute
+	 * @see flash.tools.debugger.VariableAttribute
 	 */
 	public boolean		isAttributeSet(int variableAttribute);
 
@@ -185,9 +184,9 @@ public interface Value
 	/**
 	 * Returns all child members of this variable.  Can only be called for
 	 * variables of type Object or MovieClip.
-	 * @throws NotConnectedException 
-	 * @throws NoResponseException 
-	 * @throws NotSuspendedException 
+	 * @throws flash.tools.debugger.NotConnectedException
+	 * @throws flash.tools.debugger.NoResponseException
+	 * @throws flash.tools.debugger.NotSuspendedException
 	 */
 	public Variable[]	getMembers(Session s) throws NotSuspendedException, NoResponseException, NotConnectedException;
 
@@ -197,9 +196,9 @@ public interface Value
 	 * @param s the session
 	 * @param name just a varname name, without its namespace (see <code>getName()</code>)
 	 * @return the specified child member, or null if there is no such child.
-	 * @throws NotConnectedException 
-	 * @throws NoResponseException 
-	 * @throws NotSuspendedException 
+	 * @throws flash.tools.debugger.NotConnectedException
+	 * @throws flash.tools.debugger.NoResponseException
+	 * @throws flash.tools.debugger.NotSuspendedException
 	 */
 	public Variable     getMemberNamed(Session s, String name) throws NotSuspendedException, NoResponseException, NotConnectedException;
 
@@ -207,9 +206,9 @@ public interface Value
 	 * Returns the number of child members of this variable.  If called for
 	 * a variable which has a simple type such as integer or string,
 	 * returns zero.
-	 * @throws NotConnectedException 
-	 * @throws NoResponseException 
-	 * @throws NotSuspendedException 
+	 * @throws flash.tools.debugger.NotConnectedException
+	 * @throws flash.tools.debugger.NoResponseException
+	 * @throws flash.tools.debugger.NotSuspendedException
 	 */
 	public int			getMemberCount(Session s) throws NotSuspendedException, NoResponseException, NotConnectedException;
 
@@ -248,4 +247,9 @@ public interface Value
 	 * @param name Variable name.
 	 */
 	public Variable[] getPrivateInheritedMemberNamed(String name);
+	
+	/**
+	 * Get the worker id of the isolate to which this value belongs.
+	 */
+	public int getIsolateId();
 }

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/Variable.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/Variable.java b/modules/debugger/src/java/flash/tools/debugger/Variable.java
index 02561e2..703dd6f 100644
--- a/modules/debugger/src/java/flash/tools/debugger/Variable.java
+++ b/modules/debugger/src/java/flash/tools/debugger/Variable.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger;
@@ -66,7 +64,7 @@ public interface Variable
 	 * value can be compared directly to VariableAttribute.PUBLIC_SCOPE, etc.
 	 * using "==".
 	 * 
-	 * @see VariableAttribute
+	 * @see flash.tools.debugger.VariableAttribute
 	 */
 	public int			getScope();
 
@@ -100,12 +98,12 @@ public interface Variable
 	 * regarding the variable.  They are bitfields identified
 	 * as VariableAttribute.xxx
 	 * 
-	 * @see VariableAttribute
+	 * @see flash.tools.debugger.VariableAttribute
 	 */
 	public int			getAttributes();
 
 	/**
-	 * @see VariableAttribute
+	 * @see flash.tools.debugger.VariableAttribute
 	 */
 	public boolean		isAttributeSet(int variableAttribute);
 
@@ -136,11 +134,11 @@ public interface Variable
 	 *         invoked and the setter threw an exception. In that case, look at
 	 *         FaultEvent.information to see the error text of the exception
 	 *         that occurred.
-	 * @throws NoResponseException
+	 * @throws flash.tools.debugger.NoResponseException
 	 *             if times out
-	 * @throws NotSuspendedException
+	 * @throws flash.tools.debugger.NotSuspendedException
 	 *             if Player is running
-	 * @throws NotConnectedException
+	 * @throws flash.tools.debugger.NotConnectedException
 	 *             if Player is disconnected from Session
 	 */
 	public FaultEvent setValue(Session s, int type, String value) throws NotSuspendedException, NoResponseException, NotConnectedException;
@@ -158,9 +156,14 @@ public interface Variable
 	 * <p>
 	 * Has no effect if <code>needsToInvokeGetter()</code> is false.
 	 * 
-	 * @throws NotSuspendedException
-	 * @throws NoResponseException
-	 * @throws NotConnectedException
+	 * @throws flash.tools.debugger.NotSuspendedException
+	 * @throws flash.tools.debugger.NoResponseException
+	 * @throws flash.tools.debugger.NotConnectedException
 	 */
 	public void invokeGetter(Session s) throws NotSuspendedException, NoResponseException, NotConnectedException;
+	
+	/**
+	 * Get the worker id of the isolate to which this value belongs.
+	 */
+	public int getIsolateId();
 }

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/Watch.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/Watch.java b/modules/debugger/src/java/flash/tools/debugger/Watch.java
index 99186ab..d8d9aef 100644
--- a/modules/debugger/src/java/flash/tools/debugger/Watch.java
+++ b/modules/debugger/src/java/flash/tools/debugger/Watch.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger;
@@ -46,4 +44,9 @@ public interface Watch
 	 * The kind of watch placed on the variable being watched.
 	 */
     public int getKind();
+    
+    /**
+     * The isolate to which this watchpoint belongs.
+     */
+    public int getIsolateId();
 }

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/concrete/DIsolate.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/concrete/DIsolate.java b/modules/debugger/src/java/flash/tools/debugger/concrete/DIsolate.java
new file mode 100644
index 0000000..3a0b21b
--- /dev/null
+++ b/modules/debugger/src/java/flash/tools/debugger/concrete/DIsolate.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package flash.tools.debugger.concrete;
+
+import flash.tools.debugger.Isolate;
+
+/**
+ * Concrete implementation of an Isolate.
+ * @author anirudhs
+ */
+public class DIsolate implements Isolate {
+
+	/** Isolate object behind the primordial or main thread (always exists) */
+	public static final DIsolate DEFAULT_ISOLATE = new DIsolate(Isolate.DEFAULT_ID);
+	
+	private int id;
+	
+	public DIsolate(int id) {
+		this.id = id;
+	}
+	
+	/* (non-Javadoc)
+	 * @see flash.tools.debugger.Isolate#getId()
+	 */
+	@Override
+	public int getId() {
+		return id;
+	}
+
+	@Override
+	public String toString() {		
+		return "Worker " + getId(); //$NON-NLS-1$
+	}	
+
+}

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/concrete/DLocation.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/concrete/DLocation.java b/modules/debugger/src/java/flash/tools/debugger/concrete/DLocation.java
index 39181eb..01c5ab3 100644
--- a/modules/debugger/src/java/flash/tools/debugger/concrete/DLocation.java
+++ b/modules/debugger/src/java/flash/tools/debugger/concrete/DLocation.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger.concrete;
@@ -26,13 +24,15 @@ public class DLocation implements Location
 {
 	SourceFile	m_source;
 	int			m_line;
+	int m_isolateId;
 	boolean     m_removed;
 
-	DLocation(SourceFile src, int line)
+	DLocation(SourceFile src, int line, int isolateId)
 	{
 		m_source = src;
 		m_line = line;
 		m_removed = false;
+		m_isolateId = isolateId;
 	}
 
 	/* getters/setters */
@@ -60,8 +60,14 @@ public class DLocation implements Location
 	}
 	
 	/** for debugging */
+	@Override
 	public String toString()
 	{
 		return m_source.toString() + ":" + m_line; //$NON-NLS-1$
 	}
+
+	@Override
+	public int getIsolateId() {
+		return m_isolateId;
+	}
 }


[06/15] FLEX-34291: Merge the donated FDB with the current one.

Posted by ft...@apache.org.
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_dk.txt
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_dk.txt b/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_dk.txt
index 10bed93..4eace19 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_dk.txt
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_dk.txt
@@ -1,4 +1,4 @@
-
+    
       Licensed to the Apache Software Foundation (ASF) under one or more
       contributor license agreements.  See the NOTICE file distributed with
       this work for additional information regarding copyright ownership.
@@ -14,1585 +14,795 @@
       See the License for the specific language governing permissions and
       limitations under the License.
 
-This file contains the text displayed by the 'help' command in fdb.
-
 
+This file contains the text displayed by the 'help' command in fdb.
 
 It is divided into "topics". For example, when an fdb user types
-
 'help break', the [break] topic below is displayed.
 
-
-
 The first and last lines of each topic should be blank.
-
 They don't get displayed in fdb; they are here only
-
 to make this file more easily readable.
 
-
-
 Help text should be formatted to not wrap
-
 when displayed on an 80-character-wide console.
-
 The following line is 80 characters wide.
 
-
-
 --------------------------------------------------------------------------------
 
-
-
 [?]
 
-
-
 Udefineret kommando. Skriv 'help' for at se en liste over alle fdb-kommandoer.
 
-
-
 [break]
 
-
-
 Indsæt pausepunkt ved angivne linje eller funktion.
-
 Eksempler:
-
   break 87
-
     Indsætter et pausepunkt på linje 87 i den nuværende fil.
-
   break myapp.mxml:56
-
     Indsætter et pausepunkt på linje 56 i myapp.mxml.
-
   break #3:29
-
     Indsætter et pausepunkt på linje 29 i fil nr. 3.
-
   break doThis
-
     Indsætter et pausepunkt ved funktionen doThis() i den nuværende fil.
-
   break myapp.mxml:doThat
-
     Indsætter et pausepunkt ved funktionen doThat() i myapp.mxml.
-
   break #3:doOther
-
     Indsætter et pausepunkt ved funktionen doOther() i fil nr. 3.
-
   break
-
    Indsætter et pausepunkt ved den nuværende eksekveringsadresse i den 
-
    nuværende stakramme. Det kan være nyttigt hvis der kræves pauser ved 
-
    returnering til en stakramme.
-
 Hvis du vil have vist filernes navne og numre, skal du skrive 'info sources' 
-
 eller 'info files'.
-
 Hvis du vil se funktionernes navne, skal du skrive 'info functions'.
-
 Forkortede filnavne og funktionsnavne accepteres hvis de er entydige.
-
 Hvis der angives linjenummer, indsættes pausepunktet i starten af linjen.
-
 Hvis der angives funktion, indsættes pausepunktet inden funktionens kode.
-
 Du kan se mere om kontrol over pausepunkter ved at skrive 'commands' eller 
-
 'condition'.
 
-
-
 [bt]
 
-
-
 Tilbagesporing af stakken.
 
-
-
 [catch]
 
-
-
 Stands når der opstår en undtagelse.  Dette gælder kun for undtagelser der 
-
 bliver fanget – dvs. undtagelser der bliver håndteret af en "catch"-blok.  
-
 Undtagelser der ikke fanges, standser altid i fejlfinding.
 
-
-
 Du kan slette et opfangningspunkt med kommandoen "delete".
 
-
-
 Eksempler:
-
   catch *
-
     Standser når der opstår en vilkårlig undtagelse.
-
   catch ReferenceError
-
     Standser når der opstår en ReferenceError, uanset om den fanges eller ej.
 
-
-
 [cf]
 
-
-
 Vis navn og nummer på den nuværende fil, eller skift fil.
-
 Eksempler:
-
   cf
-
     Viser navn og nummer på den nuværende fil.
-
   cf myapp.mxml
-
     Skifter til myapp.mxml som nuværende fil.
-
   cf #29
-
     Skifter til fil nr. 29 som nuværende fil.
-
 Hvis du vil have vist filernes navne og numre, skal du skrive 'info sources' 
-
 eller 'info files'.
-
 Forkortede filnavne accepteres hvis de er entydige.
-
 Når du viser en fil med 'list', bliver den også valgt som nuværende fil.
 
-
-
 [clear]
 
-
-
 Slet pausepunkt ved angivne linje eller funktion.
-
 Eksempler:
-
   clear 87
-
     Sletter pausepunktet på linje 87 i den nuværende fil.
-
   clear myapp.mxml:56
-
     Sletter pausepunktet på linje 56 i myapp.mxml.
-
   clear #3:29
-
     Sletter pausepunktet på linje 29 i fil nr. 3.
-
   clear doThis
-
     Sletter pausepunktet ved funktionen doThis() i den nuværende fil.
-
   clear myapp.mxml:doThat
-
     Sletter pausepunktet ved funktionen doThat() i myapp.mxml.
-
   clear #3:doOther
-
     Sletter pausepunktet ved funktionen doOther() i fil nr. 3.
-
   clear
-
     Sletter pausepunktet på den nuværende linje i den nuværende fil. 
-
 Hvis du vil have vist filernes navne og numre, skal du skrive 'info sources' 
-
 eller 'info files'.
-
 Hvis du vil se funktionernes navne, skal du skrive 'info functions'.
-
 Forkortede filnavne og funktionsnavne accepteres hvis de er entydige.
-
 Hvis der angives et linjenummer, slettes alle pausepunkter på den linje.
-
 Hvis der angives en funktion, slettes pausepunktet inden funktionen.
 
-
-
 [continue]
 
-
-
 Fortsæt afvikling efter at have stoppet ved pausepunkt.
-
 Denne kommando kan ikke bruges sammen med argumenter.
 
-
-
 [condition]
 
 
-
-
-
 Angiv at pausepunkt nummer N kun skal aktiveres, hvis COND overholdes.
-
 Bruges således: 'condition N COND' hvor N er et heltal og COND er det udtryk 
-
 der skal holdes op imod, når pausepunktet N nås.
 
-
-
 [commands]
 
-
-
 Angiv de kommandoer der skal afvikles når et pausepunkt nås.
-
 Skriv pausepunktets nummer som argument efter 'commands'.
-
 Hvis der ikke angives et argument, vælges det senest angivne pausepunkt.
-
 Selve kommandoerne skal skrives fra den efterfølgende linje.
-
 Du angiver slutningen ved at skrive "end" på den pågældende linje.
-
 Hvis du skriver "silent" på første linje, er pausepunktet diskret; der skrives 
-
 altså ikke noget output når pausepunktet nås – ud over det som kommandoerne skriver.
-
 Eksempel:
-
   (fdb) commands
-
   Indtast kommandoer der skal afvikles når pausepunkt 1 nås, én pr. linje.
-
   Afslut med en linje der kun indeholder 'end'.
-
   >w
-
   >end
 
-
-
 [delete]
 
-
-
 Slet et eller flere pausepunkter.
-
 Eksempler:
-
   delete
-
     Sletter alle pausepunkter.
-
   delete 2 5
-
     Sletter pausepunkterne nr. 2 og nr. 5.
-
 Hvis du vil se pausepunkternes numre, skal du skrive 'info breakpoints'.
 
-
-
 [directory]
 
-
-
 Rediger listen over mapper som fdv søger efter kildefiler i.
 
-
-
 Eksempler:
 
-
-
   directory
-
     Gendanner listens standardindstillinger, dvs. mappen hvori kildefilen blev 
-
     kompileret til objektkode efterfulgt af den nuværende arbejdsmappe.
 
-
-
   directory C:\MySource        (Windows)
-
   directory /MySource          (Mac)
-
     Føjer den angivne mappe til begyndelsen af listen over mapper, hvori der 
-
     søges efter kilder.  Når der fx søges efter kilden til klassen 
-
     mypackage.MyClass, søges der i fejlfinding både efter 
-
     C:\MySource\mypackage\MyClass.as og C:\MySource\MyClass.as.
 
-
-
   directory C:\Dir1;C:\Dir2    (Windows – brug ';' som skilletegn)
-
   directory /Dir1:/Dir2        (Mac – brug ':' som skilletegn)
-
     Føjer flere mapper til begyndelsen af listen over mapper, hvori der søges 
-
     efter kilder.
 
-
-
 Du kan få vist listen i sin nuværende form ved at skrive 'show directories'.
 
-
-
 [disable]
 
-
-
 Deaktiver et eller flere pausepunkter eller auto-display-udtryk.
-
 Eksempler:
-
   disable
-
   disable breakpoints
-
     Deaktiverer alle pausepunkter.
-
   disable 2 5
-
   disable breakpoints 2 5
-
     Deaktiverer pausepunkterne nr. 2 og nr. 5.
-
   disable display
-
     Deaktiverer alle auto-display-udtryk.
-
   disable display 1 3
-
     Deaktiverer auto-display-udtryk nr. 1 og nr. 3.
-
 Hvis du vil se pausepunkternes numre, skal du skrive 'info breakpoints'.
-
 Hvis du vil se auto-display-udtrykkenes numre, skal du skrive 'info display'.
 
-
-
 [disassemble]
 
-
-
 (Kun til ActionScript 2; understøttes ikke ved fejlfinding i ActionScript 3)
 
-
-
 Opdel den angivne del af kildekoden.
-
 Som standard vælges den nuværende linje.
-
 Der understøttes samme argumenter som under listekommandoen
-
 Eksempler:
-
   disassemble 87
-
     Opdeler linje 87 i den nuværende fil.
-
   disassemble 87 102
-
     Opdeler linje 87 – 102 i den nuværende fil.
-
   disassemble doThis
-
       Opdeler funktionen doThis() i den nuværende fil.
-
 Ud over at bruge enkle linjenumre som vist ovenfor, kan du udpege linjer på 
-
 andre måder:
-
    myapp.mxml
-
       Linje 1 i myapp.mxml.
-
    myapp.mxml:doThat
-
       Den første linje af funktionen doThat() i myapp.mxml.
-
    myapp.mxml:56
-
       Linje 56 i myapp.mxml.
-
    #3
-
       Linje 1 i fil nr. 3.
-
    #3:doOther
-
       Linjen i fil nr. 3 hvor funktionen doOther() begynder.
-
    #3:29
-
       Linje 29 i fil nr. 3.
 
-
-
 [display]
 
-
-
 Føj et udtryk til listen over auto-display-udtryk.
-
 Eksempel:
-
   display employee.name
-
     Føj 'employee.name' til listen over auto-display-udtryk.
-
     Hver gang fdb stopper, vises værdien for employee.name.
-
 Argumentet for denne kommando minder om kommandoen for 'print'.
-
 Hvis du vil se en liste over auto-display-udtrykkene og deres numre, skal du 
-
 skrive 'info display'.
 
-
-
 [down]
 
-
-
 Vælg og skriv stakrammen der kaldes af denne.
-
 Ved efterfølgende 'info' argumenter og 'info locals' kommandoer vises de lokale 
-
 variable og argumenterne for den valgte ramme.
-
 Læs mere under 'up' og 'frame' 
 
-
-
 [enable]
 
-
-
 Aktiver et eller flere pausepunkter eller auto-display-udtryk.
-
 Eksempler:
-
   enable
-
   enable breakpoints
-
     Aktiverer alle pausepunkter.
-
   enable 2 5
-
   enable breakpoints 2 5
-
     Aktiverer pausepunkterne nr. 2 og nr. 5.
-
   enable display
-
     Aktiverer alle auto-display-udtryk.
-
   enable display 1 3
-
     Aktiverer auto-display-udtryk nr. 1 og nr. 3.
-
 Hvis du vil se pausepunkternes numre, skal du skrive 'info breakpoints'.
-
 Hvis du vil se auto-display-udtrykkenes numre, skal du skrive 'info display'.
 
-
-
 [file]
 
-
-
 Vælg en applikation at køre fejlfinding i uden at starte den.
-
 Eksempler:
-
   file http://www.mysite.com/myapp.mxml
-
     Vælg en MXML-applikation at køre fejlfinding i.
-
   file myapp.swf
-
     Angiv en lokal SWF-fil i den nuværende mappe at køre fejlfinding i.
-
     I dette tilfælde skal myapp.swd (filen der indeholder 
-
     fejlfindingsoplysninger) også ligge i den nuværende mappe.
-
 Kommandoen får ikke applikationen til at starte; du kan starte fejlfindingen af 
-
 applikationen ved at bruge kommandoen 'run' uden argument.
-
 I stedet for at skrive 'file <filnavn>' efterfulgt af 'run', kan du angive 
-
 hvilken applikation der skal køres fejlfinding i som et argument til 'run':
-
   run http://mysite.com/myapp.mxml
-
   run myapp.swf
-
 Du kan også angive hvilken applikation der skal køres fejlfinding i, som et 
-
 argument i kommandolinjen når du starter fdb:
-
   fdb http://www.mysite.com/myapp.mxml
-
   fdb myapp.swf
-
 I dette tilfælde behøver du ikke at bruge 'file' eller 'run'.
-
 Hvis du bruger 'run' uden at angive en applikation at køre fejlfinding i, 
-
 venter fdb på at en applikation etablerer forbindelse.
 
-
-
 [finish]
 
-
-
 Eksekver indtil den valgte funktion returnerer.
-
 Denne kommando kan ikke bruges sammen med argumenter.
 
-
-
 [frame]
 
-
-
 Vælg og skriv en bestemt stakramme.
-
 Denne kommando kan evt. bruges med et argument, et rammenummer.
-
 Hvis der ikke angives noget argument, returneres der som standard til den 
-
 nuværende topramme (dvs. ramme 0).
-
 Eksempler:
-
   frame 4
-
   frame
-
 Ved efterfølgende 'info' argumenter og 'info locals' kommandoer vises de lokale 
-
 variable og argumenterne for den valgte ramme.
-
 Læs mere under 'down' og 'bt' 
 
-
-
 [handle]
 
-
-
 Angiv hvordan fdb skal håndtere fejl i Flash Player.
-
 Eksempler:
-
   handle recursion_limit stop
-
     Vis en meddelelse i fdb, og stop som om et pausepunkt er nået når der 
-
     opstår en recursion_limit-fejl.
-
   handle all print nostop
-
     Vis en meddelelse i fdb når der opstår en fejl, men stop ikke.
-
 Første argument er et navn på fejlen eller 'all'.
-
 Yderligere argumenter er handlinger der vedrører fejlen.
-
 Hvis du vil se navne på fejl, skal du skrive 'info handle'.
-
 Mulige handlinger er print/noprint og stop/nostop.
-
 Med 'print' skrives der en meddelelse hvis fejlen opstår.
-
 Med 'stop' åbnes fejlfinding igen hvis fejlen opstår. Medfører 'print'.
 
-
-
 [help]
 
-
-
 Har du ikke brugt fdb før? Du kan få grundlæggende oplysninger ved at skrive 
-
 'tutorial'.
-
 Liste over kommandoer i fdb:
-
 bt (bt)             Skriv tilbagesporing af alle stakrammer
-
 break (b)           Indsæt pausepunkt ved angivne linje eller funktion
-
 catch (ca)          Stands når der opstår en undtagelse
-
 cf (cf)             Vis navn og nummer på den nuværende fil
-
 clear (cl)          Slet pausepunkt ved angivne linje eller funktion
-
 condition (cond)    Anvend/fjern betinget udtryk fra et pausepunkt
-
 continue (c)        Fortsæt afvikling efter at have stoppet ved pausepunkt
-
 commands (com)      Angiver de kommandoer der skal afvikles når et pausepunkt 
-
                     nås
-
 delete (d)          Slet pausepunkter eller auto-display-udtryk
-
 directory (dir)     Føj en mappe til søgningen efter kildefiler
-
 disable (disab)     Deaktiver pausepunkter eller auto-display-udtryk
-
 disassemble (disas)       Opdel kildelinjer eller funktioner
-
 display (disp)      Tilføj et auto-display-udtryk
-
 enable (e)          Aktiver pausepunkter eller auto-display-udtryk
-
 file (fil)          Vælg en applikation at køre fejlfinding i.
-
 finish (f)          Eksekver indtil den valgte funktion returnerer
-
 handle (han)        Angiv hvordan fejl skal håndteres
-
 help (h)            Vis hjælp til fdb-kommandoer
-
 home (ho)           Angiv listeplacering der hvor afviklingen standsede
-
 info (i)            Vis oplysninger om programmet der undersøges for fejl
-
 kill (k)            Afbryd afviklingen af programmet der undersøges for fejl
-
 list (l)            Vis liste for den angivne funktion eller linje
-
 next (n)            Spring i program
-
 print (p)           Skriv værdien af variablen EXP
-
 pwd (pw)            Skriv arbejdsmappen
-
 quit (q)            Afslut fdb
-
 run (r)             Start det program der blev kørt fejlfinding i
-
 set (se)            Angiv værdien for en variabel
-
 source (so)         Læs fdb-kommandoer fra en fil
-
 step (s)            Spring i program indtil der nås en anden kildelinje
-
 tutorial (t)        Vis en vejledning om at bruge fdb
-
 undisplay (u)       Fjern et auto-display-udtryk
-
 viewswf (v)         Angiv eller fjern filter for filvisning baseret på swf
-
 watch (wa)          Føj et overvågningspunkt til en given variabel
-
 what (wh)           Viser konteksten for en variabel
-
 where (w)           Samme som bt
-
 Skriv 'help' efterfulgt af navnet på en kommando for at få vist alle 
-
 oplysninger.
 
-
-
 [home]
 
-
-
 Angiv listeplaceringen dér hvor afviklingen standsede.
 
-
-
 [info]
 
-
-
 Generisk kommando til at vise oplysninger om det program der findes fejl i.
-
 Liste over underkommandoer til info:
-
 info arguments (i a)    Argumentvariable for nuværende stakramme
-
 info breakpoints (i b)  Status for brugerdefinerbare pausepunkter
-
 info display (i d)      Vis liste over alle auto-display-udtryk
-
 info files (i f)        Navne på mål og filer der findes fejl i
-
 info functions (i fu)   Navne på alle funktioner
-
 info handle (i h)       Angiver hvordan fejl håndteres
-
 info locals (i l)       Lokale variable for nuværende stakramme
-
 info scopechain (i sc)  Virkefeltet (scope chain) for nuværende stakramme
-
 info sources (i so)     Kildefiler i programmet
-
 info stack (i s)        Tilbagesporing af stakken
-
 info swfs (i sw)        Liste over swf-filer i denne session
-
 info targets(i t)       Angiver hvilken applikation der søges efter fejl i
-
 info variables (i v)    Navne på alle globale og statiske variable
-
 Skriv 'help info' efterfulgt af navnet på en info-underkommando for at få vist 
-
 alle oplysninger.
 
-
-
 [info arguments]
 
-
-
 Vis argumenter for nuværende stakramme.
 
-
-
 [info breakpoints]
 
-
-
 Vis status for alle pausepunkter og overvågningspunkter.
-
 I kolonnen Type står der enten:
-
    breakpoint   - almindeligt pausepunkt
-
    watchpoint   - overvågningspunkt
-
 I kolonnen Disp står der 'keep', 'del' eller 'dis' alt efter hvad der skal ske 
-
 med pausepunktet, når det nås. Hvis der står 'dis', deaktiveres pausepunktet. 
-
 Står der 'del', bliver det slettet.  
-
 I kolonnerne 'Address' og 'What' angives hhv. adressen og fil-/linjenummeret. 
 
-
-
 [info display]
 
-
-
 Vis liste over alle auto-display-udtryk og deres numre.
 
-
-
 [info files]
 
-
-
 Vis navne og numre på filerne i det program der søges efter fejl i, inklusive 
-
 kildefiler, framework-filer og automatisk genererede filer.
-
 Eksempler:
-
   info files
-
     Viser en liste over alle filer, i alfabetisk rækkefølge efter kategori
-
   info files my
-
   info files my*
-
     Viser en liste over alle de filer hvis navn starter med "my", i alfabetisk 
-
     rækkefølge.
-
   info files *.as
-
     Viser en liste over alle de filer hvis navn slutter med ".as", i alfabetisk 
-
     rækkefølge.
-
   info files *foo*
-
     Viser en liste over alle de filer hvis navn indeholder "foo", i alfabetisk 
-
     rækkefølge. 
-
 Filerne vises i formatet navn#N, hvor N er filens nummer.
-
 I mange kommandoer kan du bruge #N i stedet for filnavnet.
 
-
-
 [info functions]
 
-
-
 Vis navne på funktioner.
-
 Eksempler:
-
   info functions .
-
     Vis alle funktioner i den nuværende fil.
-
   info functions myapp.mxml
-
     Vis alle funktioner i myapp.mxml.
-
   info functions #3
-
     Vis alle funktioner i fil nr. 3.
-
   info functions
-
     Viser alle funktioner i alle filer.
-
 Hvis du vil have vist filernes navne og numre, skal du skrive 'info sources' 
-
 eller 'info files'.
-
 Forkortede filnavne accepteres hvis de er entydige.
 
-
-
 [info handle]
 
-
-
 Hvad fdb gør når der opstår en fejl i Flash Player.
-
 Eksempler:
-
   info handle
-
     Vis hvordan fdb håndterer alle fejl.
-
   info handle recursion_limit
-
     Vis hvordan fdb håndterer en recursion_limit-fejl.
 
-
-
 [info locals]
 
-
-
 Vis lokale variable for nuværende stakramme.
 
-
-
 [info scopechain]
 
-
-
 Vis virkefelt for nuværende stakramme.  Virkefeltet er listen over objekter der 
-
 søges i når Flash Player forsøger at fortolke et symbolnavn.
 
-
-
 [info sources]
 
-
-
 Vis navne og numre på kildefilerne i det program der søges efter fejl i. 
-
 Framework-filer og automatisk genererede filer er ikke inkluderet.
-
 Filerne vises i formatet navn#N, hvor N er filens nummer.
-
 I mange kommandoer kan du bruge #N i stedet for filnavnet.
 
-
-
 [info stack]
 
-
-
 Tilbagesporing af stakken.
 
-
-
 [info swfs]
 
-
-
 Vis swf-filer der kendes i fejlfindings-sessionen.  Kig under kommandoen 
-
 'viewswf' hvis du vil have oplysninger om hvordan fillisten kan filtreres efter 
-
 swf-filnavn. 
 
-
-
 [info targets]
 
-
-
 Vis URL-adressen (http: eller file:) til den applikation der søges efter fejl i.
 
-
-
 [info variables]
 
-
-
 Vis navne og værdier på alle globale og statiske variable.
 
-
-
 [info ?]
 
-
-
 Udefineret info-kommando. Du kan få hjælp ved at skrive 'help info'
 
-
-
 [kill]
 
-
-
 Afbryd afviklingen af programmet der undersøges for fejl.
-
 Denne kommando kan ikke bruges sammen med argumenter.
 
-
-
 [list]
 
-
-
 Vis en liste over linjer med kode i en kildefil.
-
 Eksempler:
-
   list
-
     Viser yderligere ti linjer i den nuværende fil, efter eller omkring den 
-
     tidligere viste linje.
-
   list -
-
     Viser de ti linjer i den nuværende fil, der står inden de tidligere viste.
-
   list 87
-
     Viser ti linjer omkring linje 87 i den nuværende fil.
-
   list 87 102
-
     Viser linje 87 – 102 i den nuværende fil.
-
 Ud over at bruge enkle linjenumre som vist ovenfor, kan du udpege linjer på syv 
-
 andre måder:
-
   doThis
-
       Den første linje af funktionen doThis() i den nuværende fil.
-
    myapp.mxml
-
       Linje 1 i myapp.mxml.
-
    myapp.mxml:doThat
-
       Den første linje af funktionen doThat() i myapp.mxml.
-
    myapp.mxml:56
-
       Linje 56 i myapp.mxml.
-
    #3
-
       Linje 1 i fil nr. 3.
-
    #3:doOther
-
       Linjen i fil nr. 3 hvor funktionen doOther() begynder.
-
    #3:29
-
       Linje 29 i fil nr. 3.
-
 Hvis du vil have vist filernes navne og numre, skal du skrive 'info sources' 
-
 eller 'info files'.
-
 Hvis du vil se funktionernes navne, skal du skrive 'info functions'.
-
 Forkortede filnavne og funktionsnavne accepteres hvis de er entydige.
-
 Når du får en fil vist, bliver den også valgt som den nuværende fil. (Læs mere 
-
 under kommandoen 'cf').
 
-
-
 [next]
 
-
-
 Spring i programmet, gennem kald fra underrutiner.
-
   next
-
     Spring en enkelt gang.
-
   next 3
-
     Spring 3 gange eller indtil programmet stopper af en anden grund.
-
 Fungerer som kommandoen 'step' så længe der ikke sker kald fra underrutiner. 
-
 Hvis der gør, behandles kaldet som én instruktion.
 
-
-
 [print]
 
-
-
 Skriv værdien af variablen eller udtrykket.
-
 Eksempler:
-
   print i
-
     Skriv værdien for 'i'.
-
   print employee.name
-
     Skriv værdien for 'employee.name'.
-
   print employee
-
     Skriv værdien for objektet 'employee'.
-
     Der skrives muligvis noget i stil med [Object 10378].
-
   print employee.
-
     Skriv værdierne for alle egenskaber for objektet 'employee'.
-
   print *employee
-
     Skriv værdierne for alle egenskaber for objektet 'employee'.
-
     Præfikset * fungerer på samme måde som suffikset '.' (punktum).
-
   print #10378.
-
     Skriv værdierne for alle egenskaber for objekt nr. 10378.
-
 Der kan bruges variable fra det leksikale miljø for den valgte stakramme, plus 
-
 de variable hvis virkefelt er globalt eller en hel fil.
 
-
-
 [pwd]
 
-
-
 Skriv den nuværende arbejdsmappe.
-
 Det er den mappe som fdb blev kørt fra; den kan ikke ændres fra fdb. Argumentet 
-
 for 'run' og 'source' kan angives i forhold til denne mappe.
-
 Denne kommando kan ikke bruges sammen med argumenter.
 
-
-
 [quit]
 
-
-
 Afslut fdb.
-
 Denne kommando kan ikke bruges sammen med argumenter.
 
-
-
 [run]
 
-
-
 Start en fejlfindings-session.
-
 Eksempler:
-
   run http://www.mysite.com/myapp.mxml
-
     Kører den angivne MXML-applikation.
-
   run myapp.swf
-
   run mydir\myapp.swf
-
   run c:\mydir\myapp.swf
-
     Kører den lokale SWF-fil myapp.swf som kan angives
-
 	enten i forhold til den nuværende mappe (læs mere under kommandoen 
-
         'pwd')
-
 	eller med en komplet sti. I disse tilfælde skal myapp.swd (filen der 
-
 indeholder fejlfindingsoplysninger) også ligge i den samme mappe som myapp.swf.
-
   run
-
     Kør applikationen der tidligere blev angivet med kommandoen 'file'.
-
     Hvis der ikke er angivet nogen applikation, venter fdb indtil der er en der 
-
     har etableret forbindelse. Hvis det ikke sker, opstår der timeout.
-
 Applikationen kan startes i et browser- eller Flash Player-vindue med 'run'.
-
 Så snart applikationen startes, åbnes fdb så du kan angive pausepunkter osv.
 
-
-
 På Macintosh-computere understøttes kommandoen 'run' kun uden argumenter.  
-
 Du skal derefter manuelt starte Flash Player.
 
-
-
 [set]
 
-
-
 Angiv værdien for en variabel eller en simpel variabel.
-
 Simple variable er variable der kun findes indenfor fdb; de er ikke en del af 
-
 dit program.
-
 Simple variable har fortegnet '$' og kan have ethvert navn der ikke er benyttes 
-
 med eksisterende variable.  Eksempel: $myVar.  Simple variable bruges også til 
-
 at styre diverse dele af fdb.  
 
-
-
 Følgende simple variable bruges af fdb.
-
 $listsize          - antallet af kildelinjer der skal vises med 'list'
-
 $columnwrap        - nummeret på den kolonne som outputtet skal ombrydes i
-
 $infostackshowthis - hvis værdien er 0, vises 'this' ikke i tilbagesporing af 
-
                      stakken
-
 $invokegetters     - hvis værdien er 0, forhindres fdb i at udløse 
-
                      hentefunktioner
-
 $bpnum             - nummeret på det senest definerede pausepunkt
-
 $displayattributes - hvis værdien er 1, viser 'print var.' alle attributter for 
-
                      'var' (fx privat, statisk etc.)
 
-
-
 Eksempler:
-
   set i = 3
-
     Definerer variablen 'i' som tallet 3.
-
   set employee.name = "Susan"
-
     Definerer variablen 'employee.name' som strengen "Susan".
-
   set $myVar = 20
-
     Definerer den simple variabel '$myVar' som tallet 20
 
-
-
 [show]
 
-
-
 Generisk kommando til at vise statusoplysninger om fdb.
-
 Liste over underkommandoer til 'show':
-
 show break (sh b)       Sted og begrundelse for standsning af afvikling
-
 show directories (sh d) Mapper hvori der skal søges efter kildefiler
-
 show files (sh f)       Målfiler og stier
-
 show functions (sh fu)  Tilknytningsoplysninger for funktionslinjen 
-
 show locations (sh l)   Placering af pausepunkter
-
 show memory (sh m)      Nuværende hukommelsesforbrug
-
 show net (sh n)         Meddelelsesstatistik for afspiller 
-
 show properties (sh p)  Værdier for egenskaber
-
 show uri (sh u)         Afspillerens URI for denne session 
-
 show variable (sh v)    Henter selve variablen
-
 Skriv 'help show' efterfulgt af navnet på en show-underkommando for at få vist 
-
 alle oplysninger.
 
-
-
 [show break]
 
-
-
 Vis hvor i swf-filen programmet standsede
 
-
-
 [show directories]
 
-
-
 Vis den nuværende sti til søgning efter kildefiler.
 
-
-
 [show files]
 
-
-
 Vis stier og filnavne for alle målfilerne
 
-
-
 [show functions]
 
-
-
 Vis oplysninger om sammenknytning af funktioner og linjenumre.
-
 Eksempler:
-
   show functions .
-
     Viser tilknytningsoplysninger for alle funktioner i den nuværende fil.
-
   show functions myapp.mxml
-
     Viser tilknytningsoplysninger for alle funktioner i myapp.mxml.
-
   show functions #3
-
     Viser tilknytningsoplysninger for alle funktioner i fil nr. 3.
-
   show functions
-
     Viser tilknytningsoplysninger for alle funktioner i alle filer.
-
 Hvis du vil have vist filernes navne og numre, skal du skrive 'info sources' 
-
 eller 'info files'.
-
 Forkortede filnavne accepteres hvis de er entydige.
 
-
-
 [show locations]
 
-
-
 Viser en liste over de placeringer der et angivet for hvert pausepunkt
 
-
-
 [show memory]
 
-
-
 Vis hukommelsesstatistik for Java VM.
 
-
-
 [show net]
 
-
-
 Vis oplysninger om meddelelser der er blevet sendt til eller modtaget fra Flash 
-
 Player.
 
-
-
 [show properties]
 
-
-
 Viser en liste over de simple variable der bruges af fejlfinding 
 
-
-
 [show uri]
 
-
-
 Vis den URI som afspilleren har sendt for denne session.
 
-
-
 [show variable]
 
-
-
 Vis værdien for medlemmer af en variabel.  Der kræves to parametre. den første 
-
 er til at identificere variablen numerisk, den anden er navnet på egenskaben 
-
 for variablen.  Den simple variabel $invokegetters bruges til at bestemme om 
-
 funktionen til at hente egenskaber skal udløses – under forudsætning af at den 
-
 findes.
-
 Eksempel:
-
     show variable 1 __proto__
 
-
-
 [show ?]
 
-
-
 Udefineret show-kommando. Du kan få hjælp ved at skrive 'help show'
 
-
-
 [source]
 
-
-
 Læs fdb-kommandoer fra en fil, og eksekver dem.
-
   source mycommands.txt
-
   source mydir\mycommands.txt
-
   source c:\mydir\mycommands.txt
-
     Læser mycommands.txt og afvikler fdb-kommandoerne deri.
-
     Filen der indeholder kommandoerne, kan angives enten
-
 	i forhold til den nuværende mappe (læs mere under kommandoen 'pwd')
-
 	eller med en komplet sti.
-
 På den måde indlæses filen .fdbinit automatisk når fdb startes.
-
 Der ledes kun efter .fdbinit i den nuværende mappe. Det betyder at du kan have 
-
 flere forskellige .fdbinit-filer liggende til forskellige lejligheder.
 
-
-
 [step]
 
-
-
 Spring i programmet indtil der nås en anden kildelinje.
-
 Eksempler:
-
   step
-
     Spring en enkelt gang.
-
   step 3
-
     Spring 3 gange eller indtil programmet stopper af en anden grund.
 
-
-
 [tutorial]
 
-
-
 Vis en vejledning til brug af fdb.
-
 Denne kommando kan ikke bruges sammen med argumenter.
 
-
-
 [Tutorial]
 
-
-
 En typisk fdb-session:
-
 Start en applikation med 'run'.
-
 Få filnavne vist med 'info sources'.
-
 Få vist en fil med 'list'.
-
 Angiv pausepunkter med 'break'.
-
 Eksekver program med 'continue' indtil der nås et pausepunkt.
-
 Undersøg programmets status med 'where', 'print' og 'info locals'.
-
 Eksekver individuelle udsagn med 'next', 'step' og 'finish'.
-
 Genoptag afvikling med 'continue'.
-
 Afslut fdb med 'quit'.
 
-
-
 [undisplay]
 
-
-
 Fjern et eller flere auto-display-udtryk.
-
 Eksempler:
-
   undisplay
-
     Fjern alle auto-display-udtryk.
-
   undisplay 2 7
-
     Fjern auto-display-udtryk nr. 2 og nr. 7.
-
 Hvis du vil se en liste over auto-display-udtrykkene og deres numre, skal du 
-
 skrive 'info display'.
 
-
-
 [up]
 
-
-
 Vælg og skriv stakrammen der kaldte denne.
-
 Ved efterfølgende 'info'-argumenter og 'info locals'-kommandoer vises de lokale 
-
 variable og argumenterne for den valgte ramme.
-
 Læs mere under 'down' og 'frame'
 
-
-
 [viewswf]
 
-
-
 Angiver eller fjerner filter for filvisning (dvs. 'info files' og 'info 
-
 sources') baseret på swf-filens navn 
-
 Hvis der ikke angives nogen parametre, vises alle filer.  Hvis samme fil findes 
-
 i flere swf-filer, er det kun den første forekomst af filen der vises.  Du kan 
-
 gå direkte til andre forekomster af filen ved at bruge filens nummer (fx 'list 
-
 #192') eller ved at bruge kommandoen med en parameter (læs mere herunder) for 
-
 at vise filer fra en bestemt swf-fil.  Hvis du angiver swf-filens navn med en 
-
 enkelt parameter, som vist med kommandoen 'info swfs', er det kun filerne fra 
-
 den angivne swf-fil som vises.  
-
 Filer fra andre swf-filer bliver ikke vist.  Kommandoen har også indflydelse på 
-
 kommandoer der accepterer en fil som parameter (fx 'break')
-
 Eksempel:
-
   viewswf myApp.mxml.swf
-
     Der bliver kun vist filer fra myApp.mxml.sfw.
-
   viewswf 
-
     Alle filer fra alle swf-filer bliver vist.
-
  
-
 [watch]
 
-
-
 Føj et overvågningspunkt til en given variabel. Fejlfinding standser 
-
 afviklingen når variablens værdi ændres.
-
 Eksempel:
-
   watch foo
 
-
-
 [what]
 
-
-
 Viser hvilken kontekst variablen fortolkes i. 
 
-
-
 [where]
 
-
-
 Tilbagesporing af stakken.
 
-
-
 [zzz]
 
-
-
 ((( Keep this unused topic at the end of the file    )))
-
 ((( so that the next-to-last one is parsed properly. )))
-

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_en.txt
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_en.txt b/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_en.txt
index 29915ba..a1b1b8f 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_en.txt
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_en.txt
@@ -14,6 +14,7 @@
       See the License for the specific language governing permissions and
       limitations under the License.
 
+
 This file contains the text displayed by the 'help' command in fdb.
 
 It is divided into "topics". For example, when an fdb user types
@@ -157,7 +158,17 @@ Examples:
   connect
     Connect to the debug player listening on port 7936.
   connect 7938
-    Connect to the debug player listening on port 7938.    
+    Connect to the debug player listening on port 7938.
+    
+[worker]
+
+Set the active worker to which subsequent debugger 
+commands are sent to. Use info workers to query the
+list of workers. id of the main thread is 0.
+
+Examples:
+  worker 3
+    Set the active worker to worker with id 3        
 
 [delete]
 
@@ -374,6 +385,7 @@ viewswf (v)         Set or clear filter for file listing based on swf
 watch (wa)          Add a watchpoint on a given variable
 what (wh)           Displays the context of a variable
 where (w)           Same as bt
+worker (wo)         Set active worker
 Type 'help' followed by command name for full documentation.
 
 [home]
@@ -397,6 +409,7 @@ info stack (i s)        Backtrace of the stack
 info swfs (i sw)        List of swfs in this session
 info targets(i t)       Application being debugged
 info variables (i v)    All global and static variable names
+info workers (i w)      List all workers
 Type 'help info' followed by info subcommand name for full documentation.
 
 [info arguments]
@@ -495,6 +508,10 @@ Display the URL (http: or file:) of the application being debugged.
 
 Display all global and static variable names and values.
 
+[info workers]
+
+Display all workers that have been started.
+
 [info ?]
 
 Undefined info command. Try 'help info'.

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_es.txt
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_es.txt b/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_es.txt
index 4db0f13..6402b87 100644
--- a/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_es.txt
+++ b/modules/debugger/src/java/flex/tools/debugger/cli/fdbhelp_es.txt
@@ -1,4 +1,4 @@
-
+    
       Licensed to the Apache Software Foundation (ASF) under one or more
       contributor license agreements.  See the NOTICE file distributed with
       this work for additional information regarding copyright ownership.
@@ -14,1611 +14,808 @@
       See the License for the specific language governing permissions and
       limitations under the License.
 
-This file contains the text displayed by the 'help' command in fdb.
-
 
+This file contains the text displayed by the 'help' command in fdb.
 
 It is divided into "topics". For example, when an fdb user types
-
 'help break', the [break] topic below is displayed.
 
-
-
 The first and last lines of each topic should be blank.
-
 They don't get displayed in fdb; they are here only
-
 to make this file more easily readable.
 
-
-
 Help text should be formatted to not wrap
-
 when displayed on an 80-character-wide console.
-
 The following line is 80 characters wide.
 
-
-
 --------------------------------------------------------------------------------
 
-
-
 [?]
 
-
-
 Comando no definido. Escriba 'help' para ver una lista de todos los comandos 
-
 fdb.
 
-
-
 [break]
 
-
-
 Establecer punto de corte en función o línea especificada.
-
 Ejemplos:
-
   break 87
-
     Establece un punto de corte en la línea 87 del archivo actual.
-
   break myapp.mxml:56
-
     Establece un punto de corte en la línea 56 de myapp.mxml.
-
   break #3:29
-
     Establece un punto de corte en la línea 29 del archivo 3.
-
   break doThis
-
     Establece un punto de corte en la función doThis() del archivo actual.
-
   break myapp.mxml:doThat
-
     Establece un punto de corte en la función doThat() del archivo myapp.mxml.
-
   break #3:doOther
-
     Establece un punto de corte en la función doOther() del archivo 3.
-
   break
-
    Establece un punto de corte en la dirección de ejecución actual en marco de 
-
    pila actual. Es útil para cortes al regresar a un marco de pila.
-
 Para ver números y nombres de archivo, escriba 'info sources' o 'info files'.
-
 Para ver nombres de función, escriba 'info functions'.
-
 Se aceptan nombres de archivo y función abreviados siempre que no sean ambiguos.
-
 Si se especifica número de línea, corte al inicio de código para esa línea.
-
 Si se especifica función, corte al inicio de código para esa función.
-
 Para más información sobre control de punto de corte, consulte 'commands' y 
-
 'condition'.
 
-
-
 [bt]
 
-
-
 Seguimiento regresivo de pila.
 
-
-
 [catch]
 
-
-
 Detener al emitirse una excepción.  Esto sólo afecta a excepciones detectadas 
-
 que se vayan a controlar mediante un bloque "catch".  Las excepciones no 
-
 detectadas siempre se detienen en el depurador.
 
-
-
 Use el comando "delete" para borrar un punto de detección.
 
-
-
 Ejemplos:
-
   catch *
-
     Se detiene al emitirse una excepción.
-
   catch ReferenceError
-
     Se detiene siempre que se produce una excepción ReferenceError, tanto si se 
-
     detecta como si no.
 
-
-
 [cf]
 
-
-
 Mostrar el nombre y el número del archivo actual o cambiar el archivo actual.
-
 Ejemplos:
-
   cf
-
     Muestra el nombre y el número del archivo actual.
-
   cf myapp.mxml
-
     
-
 Cambia el archivo actual a myapp.mxml.
-
   cf #29
-
     Cambia el archivo actual a archivo 29.
-
 Para ver números y nombres de archivo, escriba 'info sources' o 'info files'.
-
 Se aceptan nombres de archivo abreviados siempre que no sean ambiguos.
-
 Si un archivo se define con 'list' también se convierte en actual.
 
-
-
 [clear]
 
-
-
 Borrar punto de corte en función o línea especificada.
-
 Ejemplos:
-
   clear 87
-
     Borra el punto de corte en la línea 87 del archivo actual.
-
   clear myapp.mxml:56
-
     Borra el punto de corte en la línea 56 de myapp.mxml.
-
   clear #3:29
-
     Borra el punto de corte en la línea 29 del archivo 3.
-
   clear doThis
-
     Borra el punto de corte en la función doThis() del archivo actual.
-
   clear myapp.mxml:doThat
-
     Borra el punto de corte en la función doThat() del archivo myapp.mxml.
-
   clear #3:doOther
-
     Borra el punto de corte en la función doOther() del archivo 3.
-
   clear
-
     Borra el punto de corte de la línea actual en el archivo actual. 
-
 Para ver números y nombres de archivo, escriba 'info sources' o 'info files'.
-
 Para ver nombres de función, escriba 'info functions'.
-
 Se aceptan nombres de archivo y función abreviados siempre que no sean ambiguos.
-
 Si se especifica número de línea, se borran todos los puntos de corte de esa 
-
 línea.
-
 Si se especifica función, se borran los puntos de corte al principio de la 
-
 función.
 
-
-
 [continue]
 
-
-
 Continuar ejecución tras detención en punto de corte.
-
 Este comando no admite argumentos.
 
-
-
 [condition]
 
 
-
-
-
 Especificar número N de punto de corte para corte sólo si COND es true.
-
 El uso es `condition N COND', donde N es un número entero y COND es una 
-
 expresión que se debe evaluar siempre que se alcanza el punto de corte N.
 
-
-
 [commands]
 
-
-
 Establecer comandos que ejecutar al llegar a un punto de corte.
-
 Indicar número de punto de corte como argumento tras `commands`.
-
 Sin argumento, el punto de corte relevante es el último establecido.
-
 Le siguen los comandos propiamente dichos, en la línea siguiente.
-
 Escriba una línea que contenga "end" para indicar el fin de los comandos.
-
 Indique "silent" como la primera línea para que el punto de corte sea 
-
 silencioso; de ese modo no se imprime nada al llegar al punto, a excepción de 
-
 lo que imprimen los comandos.
-
 Ejemplo:
-
   (fdb) commands
-
   Escriba comandos para cuando se alcance el punto de corte 1, uno por línea.
-
   Termine con una línea que diga simplemente 'end'.
-
   >w
-
   >end
 
-
-
 [delete]
 
-
-
 Eliminar uno o varios puntos de corte.
-
 Ejemplos:
-
   delete
-
     Elimina todos los puntos de corte.
-
   delete 2 5
-
     Elimina los puntos de corte 2 y 5.
-
 Para ver números de punto de corte, escriba 'info breakpoints'.
 
-
-
 [directory]
 
-
-
 Modificar la lista de directorios en los que fdb buscará archivos de origen.
 
-
-
 Ejemplos:
 
-
-
   directory
-
     Restaura el directorio predeterminado de la lista; éste es el directorio en 
-
     que el archivo de origen se ha compilado en código de objeto, seguido del 
-
     directorio de trabajo actual.
 
-
-
   directory C:\MySource        (Windows)
-
   directory /MySource          (Mac)
-
     Añade el directorio especificado al principio de la lista de directorios en 
-
     que realizar las búsquedas de origen.  Por ejemplo, al buscar el origen de 
-
     mypackage.MyClass, el depurador examinará tanto 
-
     C:\MySource\mypackage\MyClass.as como C:\MySource\MyClass.as.
 
-
-
   directory C:\Dir1;C:\Dir2    (Windows: usar ';' como separador)
-
   directory /Dir1:/Dir2        (Mac: usar ':' como separador)
-
     Añade varios directorios al principio de la lista de directorios en que 
-
     realizar las búsquedas de origen.
 
-
-
 Para ver la lista actual, escriba 'show directories'.
 
-
-
 [disable]
 
-
-
 Desactivar uno o más puntos de corte o expresiones de visualización automática.
-
 Ejemplos:
-
   disable
-
   disable breakpoints
-
     Desactiva todos los puntos de corte.
-
   disable 2 5
-
   disable breakpoints 2 5
-
     Desactiva los puntos de corte 2 y 5.
-
   disable display
-
     Desactiva todas las expresiones de visualización automática.
-
   disable display 1 3
-
     Desactiva las expresiones de visualización automática 1 y 3.
-
 Para ver números de punto de corte, escriba 'info breakpoints'.
-
 Para ver números de expresiones de visualización automática, escriba 'info 
-
 display'.
 
-
-
 [disassemble]
 
-
-
 (ActionScript 2 sólo; no funciona al depurar ActionScript 3)
 
-
-
 Desensamblar una porción específica de código fuente.
-
 El valor predeterminado es la línea de lista actual.
-
 Los argumentos aceptados son los mismos que con el comando de lista
-
 Ejemplos:
-
   disassemble 87
-
     Desensambla la línea 87 en el archivo actual.
-
   disassemble 87 102
-
     Desensambla las líneas de la 87 a la 102 en el archivo actual.
-
   disassemble doThis
-
       Desensambla la función doThis() del archivo actual.
-
 Además de usar simplemente números de línea como arriba, puede especificar 
-
 líneas de otros modos:
-
    myapp.mxml
-
       Línea 1 en myapp.mxml.
-
    myapp.mxml:doThat
-
       La primera línea de la función doThat() en myapp.mxml.
-
    myapp.mxml:56
-
       Línea 56 en myapp.mxml.
-
    #3
-
       Línea 1 en el archivo 3.
-
    #3:doOther
-
       La línea del archivo 3 en que comienza la función doOther().
-
    #3:29
-
       Línea 29 en el archivo 3.
 
-
-
 [display]
 
-
-
 Añade una expresión a la lista de expresiones de visualización automática.
-
 Ejemplo:
-
   display employee.name
-
     Añadir 'employee.name' a la lista de expresiones de visualización 
-
     automática.
-
     Cada vez que fdb se detenga, se mostrará el valor de employee.name.
-
 El argumento para este comando es similar al usado para 'print'.
-
 Para ver la lista de expresiones de visualización automática y sus números, 
-
 escriba 'info display'.
 
-
-
 [down]
 
-
-
 Seleccionar e imprimir marco de pila llamado por este comando.
-
 Los comandos 'info arguments' y 'info locals' posteriores mostrarán las 
-
 variables locales y los argumentos del marco seleccionado.
-
 Consulte 'up' y 'frame' 
 
-
-
 [enable]
 
-
-
 Activar uno o más puntos de corte o expresiones de visualización automática.
-
 Ejemplos:
-
   enable
-
   enable breakpoints
-
     Activa todos los puntos de corte.
-
   enable 2 5
-
   enable breakpoints 2 5
-
     Activa los puntos de corte 2 y 5.
-
   enable display
-
     Activa todas las expresiones de visualización automática.
-
   enable display 1 3
-
     Activa las expresiones de visualización automática 1 y 3.
-
 Para ver números de punto de corte, escriba 'info breakpoints'.
-
 Para ver números de expresiones de visualización automática, escriba 'info 
-
 display'.
 
-
-
 [file]
 
-
-
 Especificar una aplicación que depurar, pero sin iniciarla.
-
 Ejemplos:
-
   file http://www.mysite.com/myapp.mxml
-
     Especificar una aplicación MXML que depurar.
-
   file myapp.swf
-
     Especificar un archivo SWF local que depurar, en el directorio actual.
-
     En este caso myapp.swd (el archivo que contiene la información de 
-
     depuración) también debe existir en el directorio actual.
-
 Este comando no inicia la aplicación; use el comando 'run' sin argumentos para 
-
 iniciar la depuración de la aplicación.
-
 En lugar de usar 'file <target>' y luego 'run', puede especificar la aplicación 
-
 que depurar como argumento de 'run':
-
   run http://mysite.com/myapp.mxml
-
   run myapp.swf
-
 También puede especificar la aplicación que depurar como argumento de línea de 
-
 comandos al iniciar fdb:
-
   fdb http://www.mysite.com/myapp.mxml
-
   fdb myapp.swf
-
 En este caso no es preciso usar 'file' ni 'run'.
-
 Si usa 'run' sin especificar una aplicación que depurar, fdb esperará a que se 
-
 conecte una aplicación cualquiera.
 
-
-
 [finish]
 
-
-
 Ejecutar hasta la devolución de la función actual.
-
 Este comando no admite argumentos.
 
-
-
 [frame]
 
-
-
 Seleccionar e imprimir un marco de pila concreto.
-
 Este comando admite un argumento opcional, un número de marco.
-
 Si no se suministra un argumento, se regresa de modo predeterminado al marco 
-
 superior actual (es decir frame 0).
-
 Ejemplos:
-
   frame 4
-
   frame
-
 Los comandos 'info arguments' e 'info locals' posteriores mostrarán las 
-
 variables locales y los argumentos del marco seleccionado.
-
 Consulte 'up', 'down' y 'bt' 
 
-
-
 [handle]
 
-
-
 Especificar la gestión de fallas por parte de fdb en Flash Player.
-
 Ejemplos:
-
   handle recursion_limit stop
-
     Cuando se produce una falla de tipo recursion_limit, mostrar mensaje en fdb 
-
     y detener como si hubiera punto de corte.
-
   handle all print nostop
-
     Cuando se produce cualquier tipo de falla, mostrar mensaje en fdb pero no 
-
     detener.
-
 El primer argumento es un nombre de falla o 'all'.
-
 Los argumentos adicionales son acciones aplicables a esa falla.
-
 Para ver nombres de falla, escriba 'info handle'.
-
 Las acciones son print/noprint y stop/nostop.
-
 'print' significa imprimir un mensaje si se produce esta falla.
-
 'stop' significa reactivar el depurador si se produce esta falla. Implica 
-
 'print'.
 
-
-
 [help]
 
-
-
 ¿No ha usado fdb antes? Escriba 'tutorial' para obtener información básica.
-
 Lista de comandos fdb:
-
 bt (bt)             Imprimir seguimiento regresivo de todos los marcos de pila
-
 break (b)           Establecer punto de corte en función o línea especificada
-
 catch (ca)          Detener al emitirse una excepción
-
 cf (cf)             Mostrar el nombre y el número del archivo actual
-
 clear (cl)          Borrar punto de corte en función o línea especificada
-
 condition (cond)    Aplicar/eliminar expresión condicional a un punto de corte
-
 continue (c)        Continuar ejecución tras detención en punto de corte
-
 commands (com)      Establece comandos que ejecutar al llegar a un punto de 
-
                     corte
-
 delete (d)          Eliminar puntos de corte o expresiones de visualización 
-
                     automática
-
 directory (dir)     Agregar un directorio a una ruta de búsqueda de archivos de 
-
                     origen
-
 disable (disab)     Desactivar puntos de corte o expresiones de visualización 
-
                     automática
-
 disassemble (disas) Desensamblar funciones o líneas de origen
-
 display (disp)      Agregar una expresión de visualización automática
-
 enable (e)          Activar puntos de corte o expresiones de visualización 
-
                     automática
-
 file (fil)          Especificar una aplicación que depurar
-
 finish (f)          Ejecutar hasta la devolución de la función actual
-
 handle (han)        Especificar cómo gestionar una falla
-
 help (h)            Mostrar ayuda para comandos fdb
-
 home (ho)           Establecer ubicación de lista en que detener ejecución
-
 info (i)            Mostrar información sobre el programa que se está depurando
-
 kill (k)            Cerrar el programa que se está depurando
-
 list (l)            Listar línea o función especificada
-
 next (n)            Avanzar programa
-
 print (p)           Imprimir valor de variable EXP
-
 pwd (pw)            Imprimir directorio de trabajo
-
 quit (q)            Cerrar fdb
-
 run (r)             Iniciar programa depurado
-
 set (se)            Establecer el valor de una variable
-
 source (so)         Leer comandos fdb de un archivo
-
 step (s)            Avanzar programa hasta llegar a una línea de origen 
-
                     diferente
-
 tutorial (t)        Mostrar tutorial de uso de fdb
-
 undisplay (u)       Eliminar una expresión de visualización automática
-
 viewswf (v)         Establecer o borrar filtro para listado de archivos según 
-
                     swf
-
 watch (wa)          Agregar punto de observación a una variable
-
 what (wh)           Muestra el contexto de una variable
-
 where (w)           Igual que bt
-
 Escriba 'help' seguido de un nombre de comando para acceder a información 
-
 exhaustiva.
 
-
-
 [home]
 
-
-
 Establecer ubicación de lista en que detener ejecución.
 
-
-
 [info]
 
-
-
 Comando genérico para mostrar datos sobre el programa que se está depurando.
-
 Lista de subcomandos de información:
-
 info arguments (i a)    Variables de argumento de marco de pila actual
-
 info breakpoints (i b)  Estado de puntos de corte definibles por usuario
-
 info display (i d)      Mostrar lista de expresiones de visualización automática
-
 info files (i f)        Nombres de objetivos y archivos que se van a depurar
-
 info functions (i fu)   Todos los nombres de función
-
 info handle (i h)       Cómo gestionar una falla
-
 info locals (i l)       Variables locales de marco de pila actual
-
 info scopechain (i sc)  Cadena de ámbito de marco de pila actual
-
 info sources (i so)     Archivos de origen en el programa
-
 info stack (i s)        Seguimiento regresivo de pila
-
 info swfs (i sw)        Lista de swf en esta sesión
-
 info targets(i t)       Aplicación que se está depurando
-
 info variables (i v)    Todos los nombres de variables estáticas y globales
-
 Escriba 'help info' seguido de un nombre de subcomando info para acceder a 
-
 información exhaustiva.
 
-
-
 [info arguments]
 
-
-
 Mostrar argumento de marco de pila actual.
 
-
-
 [info breakpoints]
 
-
-
 Mostrar estado de todos los puntos de corte y puntos de observación.
-
 La columna Type indica uno de estos valores:
-
    breakpoint   - punto de corte normal
-
    watchpoint   - punto de observación
-
 La columna Disp contendrá 'keep', 'del' o 'dis' para indicar la disposición del 
-
 punto de corte al llegar a él. 'dis' significa que el punto de corte se 
-
 desactivará; 'del' significa que se eliminará.  
-
 Las columnas 'Address' y 'What' indican la dirección y el número de 
-
 archivo/línea respectivamente. 
 
-
-
 [info display]
 
-
-
 Mostrar lista de expresiones de visualización automática y sus números.
 
-
-
 [info files]
 
-
-
 Mostrar nombres y números de archivos para la aplicación que se está depurando, 
-
 incluidos archivos de origen, framework y generados automáticamente.
-
 Ejemplos:
-
   info files
-
     Lista todos los archivos por orden alfabético y categoría
-
   info files my
-
   info files my*
-
     Lista por orden alfabético todos los archivos cuyos nombres empiezan por 
-
     "my".
-
   info files *.as
-
     Lista por orden alfabético todos los archivos cuyos nombres acaban en ".as".
-
   info files *foo*
-
     Lista por orden alfabético todos los archivos cuyos nombres contienen "foo".
-
 Los archivos se muestran con el formato nombre#N, donde N es el número de 
-
 archivo.
-
 En muchos comandos se puede usar #N en lugar de un nombre de archivo.
 
-
-
 [info functions]
 
-
-
 Mostrar nombres de función.
-
 Ejemplos:
-
   info functions .
-
     Mostrar todas las funciones en el archivo actual.
-
   info functions myapp.mxml
-
     Mostrar todas las funciones en myapp.mxml.
-
   info functions #3
-
     Mostrar todas las funciones en el archivo 3.
-
   info functions
-
     Mostrar todas las funciones en todos los archivos.
-
 Para ver números y nombres de archivo, escriba 'info sources' o 'info files'.
-
 Se aceptan nombres de archivo abreviados siempre que no sean ambiguos.
 
-
-
 [info handle]
 
-
-
 Mostrar qué hace fdb cuando se produce una falla en Flash Player.
-
 Ejemplos:
-
   info handle
-
     Mostrar qué hace fdb para gestionar fallas.
-
   info handle recursion_limit
-
     Mostrar qué hace fdb para gestionar una falla recursion_limit.
 
-
-
 [info locals]
 
-
-
 Mostrar variables locales de marco de pila actual.
 
-
-
 [info scopechain]
 
-
-
 Mostrar la cadena de ámbito del marco de pila actual.  La cadena de ámbito es 
-
 la lista de objetos en que se realiza una búsqueda cuando Flash Player intenta 
-
 resolver un nombre de símbolo.
 
-
-
 [info sources]
 
-
-
 Mostrar nombres y números de archivos de origen para la aplicación que se está 
-
 depurando. No se incluyen archivos framework ni generados automáticamente.
-
 Los archivos se muestran con el formato nombre#N, donde N es el número de 
-
 archivo.
-
 En muchos comandos se puede usar #N en lugar de un nombre de archivo.
 
-
-
 [info stack]
 
-
-
 Seguimiento regresivo de pila.
 
-
-
 [info swfs]
 
-
-
 Mostrar swf conocidos para la sesión de depuración.  Consulte lo referente al 
-
 comando 'viewswf' para averiguar cómo filtrar la lista de archivos por nombre 
-
 swf. 
 
-
-
 [info targets]
 
-
-
 Mostrar la URL (http: o archivo:) de la aplicación que se está depurando.
 
-
-
 [info variables]
 
-
-
 Todos los valores y nombres de variables estáticas y globales
 
-
-
 [info ?]
 
-
-
 Comando info no definido. Escriba 'help info'.
 
-
-
 [kill]
 
-
-
 Cerrar el programa que se está depurando.
-
 Este comando no admite argumentos.
 
-
-
 [list]
 
-
-
 Listar líneas de código en un archivo de origen.
-
 Ejemplos:
-
   list
-
     Lista diez o más líneas en el archivo actual, después o alrededor de 
-
     listado previo.
-
   list -
-
     Lista las diez líneas del archivo actual anteriores a un listado previo.
-
   list 87
-
     Lista las diez líneas del archivo actual alrededor de la línea 87.
-
   list 87 102
-
     Lista las líneas de la 87 a la 102 en el archivo actual.
-
 Además de usar simplemente números de línea como arriba, puede especificar 
-
 líneas de otros siete modos:
-
   doThis
-
       La primera línea de la función doThis() del archivo actual.
-
    myapp.mxml
-
       Línea 1 en myapp.mxml.
-
    myapp.mxml:doThat
-
       La primera línea de la función doThat() en myapp.mxml.
-
    myapp.mxml:56
-
       Línea 56 en myapp.mxml.
-
    #3
-
       Línea 1 en el archivo 3.
-
    #3:doOther
-
       La línea del archivo 3 en que comienza la función doOther().
-
    #3:29
-
       Línea 29 en el archivo 3.
-
 Para ver números y nombres de archivo, escriba 'info sources' o 'info files'.
-
 Para ver nombres de función, escriba 'info functions'.
-
 Se aceptan nombres de archivo y función abreviados siempre que no sean ambiguos.
-
 Si un archivo se incluye en una lista, el archivo se convierte en actual. 
-
 Consulte el comando 'cf'.
 
-
-
 [next]
 
-
-
 Avanzar programa, a través de llamadas de subrutina.
-
   next
-
     Avanzar una vez.
-
   next 3
-
     Avanzar 3 veces o hasta que el programa se detenga por otra razón.
-
 Al igual que el comando 'step', mientras no se produzcan llamadas de subrutina. 
-
 Al producirse, la llamada se interpreta como instrucción.
 
-
-
 [print]
 
-
-
 Imprimir valor de expresión variable.
-
 Ejemplos:
-
   print i
-
     Imprimir el valor de 'i'.
-
   print employee.name
-
     Imprimir el valor de 'employee.name'.
-
   print employee
-
     Imprimir el valor del objeto 'employee'.
-
     Esto puede mostrar simplemente algo como [Object 10378].
-
   print employee.
-
     Imprimir los valores de todas las propiedades del objeto 'employee'.
-
   print *employee
-
     Imprimir los valores de todas las propiedades del objeto 'employee'.
-
     El operador de prefijo * es el prefijo alternativo a . (operador sufijo).
-
   print #10378.
-
     Imprimir los valores de todas las propiedades del objeto 10378.
-
 Son accesibles las variables del entorno léxico del marco de pila seleccionado, 
-
 y también las de ámbito global o de un archivo entero.
 
-
-
 [pwd]
 
-
-
 Imprimir el directorio de trabajo actual.
-
 Éste es el directorio desde el que se ha iniciado fdb; no se puede cambiar 
-
 dentro de fdb. El argumento para 'run' y 'source' se puede especificar con 
-
 relación a este directorio.
-
 Este comando no admite argumentos.
 
-
-
 [quit]
 
-
-
 Cerrar fdb.
-
 Este comando no admite argumentos.
 
-
-
 [run]
 
-
-
 Iniciar una sesión de depuración.
-
 Ejemplos:
-
   run http://www.mysite.com/myapp.mxml
-
     Ejecuta la aplicación MXML especificada.
-
   run myapp.swf
-
   run mydir\myapp.swf
-
   run c:\mydir\myapp.swf
-
     Ejecuta el archivo SWF local myapp.swf, que se puede especificar con 
-
     relación al directorio actual (consulte el comando 'pwd') o usando una ruta 
-
     absoluta. En estos casos, myapp.swd (el archivo que contiene la información 
-
     de depuración) también debe existir en el mismo directorio que myapp.swf.
-
   run
-
     Ejecutar la aplicación previamente especificada por el comando 'file'.
-
     Si no se ha especificado ninguna aplicación, fdb esperará hasta que se 
-
     conecte una; de no haber ninguna conexión, agotará el tiempo de espera.
-
 'run' iniciará la aplicación en una ventana de explorador o un reproductor 
-
 Flash Player autónomo.
-
 En cuanto empiece, la aplicación entrará en fdb para permitir establecer puntos 
-
 de corte, etc.
 
-
-
 En sistemas Macintosh, el comando 'run' sólo se puede usar sin argumentos.  
-
 A continuación, Flash Player se debe iniciar manualmente.
 
-
-
 [set]
 
-
-
 Establecer el valor de una variable o una variable de conveniencia.
-
 Las variables de conveniencia existen únicamente dentro de fdb; no son parte de 
-
 su programa.
-
 Dichas variables tienen el prefijo '$' y un nombre cualquiera, siempre y cuando 
-
 no coincida con un variable existente.  Por ejemplo, $myVar.  Las variables de 
-
 conveniencia también se usan para controlar varios aspectos de fdb.  
 
-
-
 A continuación se citan las variables de conveniencia usadas por fdb.
-
 $listsize          - número de líneas de origen que mostrar para 'list'
-
 $columnwrap        - número de columna en que se ajustará la salida
-
 $infostackshowthis - si 0, no muestra 'this' en seguimiento regresivo de pila
-
 $invokegetters     - si 0, fdb no podrá activar funciones de captador
-
 $bpnum             - el último número de punto de corte definido
-
 $displayattributes - si 1, 'print var.' muestra todos los atributos de miembros 
-
                      de 'var' (p. ej. private, static)
 
-
-
 Ejemplos:
-
   set i = 3
-
     Establece la variable 'i' como 3.
-
   set employee.name = "Susan"
-
     Establece la variable 'employee.name' como cadena "Susan".
-
   set $myVar = 20
-
     Establece la variable de conveniencia $myVar' como 20.
 
-
-
 [show]
 
-
-
 Comando genérico para mostrar datos sobre el estado de fdb.
-
 Lista de subcomandos show:
-
 show break (sh b)       Ubicación y razón de ejecución suspendida
-
 show directories (sh d) Directorios en que buscar archivos de origen
-
 show files (sh f)       Archivos y rutas de destino
-
 show functions (sh fu)  Información de asignación de líneas de función 
-
 show locations (sh l)   Ubicaciones de punto de corte
-
 show memory (sh m)      Uso de memoria actual
-
 show net (sh n)         Estadísticas de mensaje del reproductor 
-
 show properties (sh p)  Valores de propiedades
-
 show uri (sh u)         URI de reproductor para esta sesión 
-
 show variable (sh v)    Recuperación de variable sin formato
-
 Escriba 'help show' seguido de un nombre de subcomando show para acceder a 
-
 información exhaustiva.
 
-
-
 [show break]
 
-
-
 Mostrar el desfase dentro del archivo SWF en que se ha detenido el programa
 
-
-
 [show directories]
 
-
-
 Mostrar la ruta de búsqueda actual para encontrar archivos de origen.
 
-
-
 [show files]
 
-
-
 Mostrar la ruta y el nombre de archivo de todos los archivos de destino
 
-
-
 [show functions]
 
-
-
 Mostrar información de asignación de función a número de línea.
-
 Ejemplos:
-
   show functions .
-
     Muestra información de asignación para todas las funciones en el archivo 
-
     actual.
-
   show functions myapp.mxml
-
     Muestra información de asignación para todas las funciones en el myapp.mxml.
-
   show functions #3
-
     Muestra información de asignación para todas las funciones en el archivo 3.
-
   show functions
-
     Muestra información de asignación para todas las funciones en todos los 
-
     archivos.
-
 Para ver números y nombres de archivo, escriba 'info sources' o 'info files'.
-
 Se aceptan nombres de archivo abreviados siempre que no sean ambiguos.
 
-
-
 [show locations]
 
-
-
 Muestra la lista de ubicaciones definidas para cada punto de corte
 
-
-
 [show memory]
 
-
-
 Muestra estadísticas de memoria de Java VM.
 
-
-
 [show net]
 
-
-
 Muestra información de mensajes enviados a o procedentes de Flash Player.
 
-
-
 [show properties]
 
-
-
 Muestra una lista variables de conveniencia usadas dentro del depurador 
 
-
-
 [show uri]
 
-
-
 Muestra el URI enviado por el reproductor para esta sesión.
 
-
-
 [show variable]
 
-
-
 Muestra el valor de un miembro de una variable.  Se requieren dos parámetros; 
-
 el primero es el identificador de variable numérico, el segundo es el nombre de 
-
 propiedad en la variable.  La variable de conveniencia $invokegetters se usa 
-
 para determinar si se activará o no el captador de propiedad (en caso de 
-
 existir).
-
 Ejemplo:
-
     show variable 1 __proto__
 
-
-
 [show ?]
 
-
-
 Comando show no definido. Escriba 'help show'.
 
-
-
 [source]
 
-
-
 Leer comandos fdb de un archivo y ejecutarlos.
-
   source mycommands.txt
-
   source mydir\mycommands.txt
-
   source c:\mydir\mycommands.txt
-
     Lee mycommands.txt y ejecuta los comandos fdb en él.
-
     El archivo que contiene los comandos se puede especificar
-
 	con relación al directorio actual (consulte el comando 'pwd')
-
 	o usando una ruta absoluta.
-
 El archivo .fdbinit se lee automáticamente de este modo cuando se inicia fdb.
-
 La búsqueda de .fdbinit sólo se realiza en el directorio actual. Esto significa 
-
 que puede tener varios archivos .fdbinit para distintos proyectos.
 
-
-
 [step]
 
-
-
 Avanzar programa hasta llegar a una línea de origen diferente.
-
 Ejemplos:
-
   step
-
     Avanzar una vez.
-
   step 3
-
     Avanzar 3 veces o hasta que el programa se detenga por otra razón.
 
-
-
 [tutorial]
 
-
-
 Mostrar tutorial de uso de fdb.
-
 Este comando no admite argumentos.
 
-
-
 [Tutorial]
 
-
-
 Una sesión fdb estándar:
-
 Iniciar una aplicación con 'run'.
-
 Ver nombres de archivo con 'info sources'.
-
 Listar un archivo con 'list'.
-
 Establecer puntos de corte con 'break'.
-
 Ejecutar programa con 'continue' hasta llegar a un punto de corte.
-
 Examinar el estado del programa con 'where', 'print', 'info locals'.
-
 Ejecutar una instrucción individual con 'next', 'step' y 'finish'.
-
 Reanudar la ejecución con 'continue'.
-
 Cerrar fdb con 'quit'.
 
-
-
 [undisplay]
 
-
-
 Quitar una o más expresiones de visualización automática.
-
 Ejemplos:
-
   undisplay
-
     Quitar todas las expresiones de visualización automática.
-
   undisplay 2 7
-
     Quitar las expresiones de visualización automática 2 y 7.
-
 Para ver la lista de expresiones de visualización automática y sus números, 
-
 escriba 'info display'.
 
-
-
 [up]
 
-
-
 Seleccionar e imprimir marco de pila que ha llamado a este.
-
 Los comandos 'info arguments' e 'info locals' posteriores mostrarán
-
 las variables locales y los argumentos del marco seleccionado.
-
 Consulte 'down' y 'frame'
 
-
-
 [viewswf]
 
-
-
 Establece o borra filtro para listado de archivos (es decir, 'info files' e 
-
 'info sources'), por nombre de swf. 
-
 Si no hay parámetros, se mostrarán todos los archivos.  Si hay un mismo archivo 
-
 en uno o varios swfs, el listado sólo mostrará el primer caso de dicho archivo. 
-
 Para acceder a otros casos del archivo, use el número de éste (p.ej. 'list 
-
 #192') o use este comando con un parámetro (véase más abajo) para mostrar 
-
 archivos de un swf específico.  Con un solo parámetro, el nombre swf tal y como 
-
 se muestra en el comando 'info swfs', sólo se mostrarán en el listado de 
-
 archivos los archivos del swf especificado.  
-
 No se mostrarán archivos de otros swf.  Este comando también afecta a comandos 
-
 que aceptan un archivo como parámetro (p. ej. 'break')
-
 Ejemplo:
-
   viewswf myApp.mxml.swf
-
     Sólo se mostrarán archivos de myApp.mxml.swf.
-
   viewswf 
-
     Se mostrarán todos los archivos de todos los swf.
-
  
-
 [watch]
 
-
-
 Agregar punto de observación a una variable. El depurador detendrá la ejecución 
-
 cuando cambie el valor de la variable.
-
 Ejemplo:
-
   watch foo
 
-
-
 [what]
 
-
-
 Muestra el contexto en que se resuelve una variable. 
 
-
-
 [where]
 
-
-
 Seguimiento regresivo de pila.
 
-
-
 [zzz]
 
-
-
 ((( Keep this unused topic at the end of the file    )))
-
 ((( so that the next-to-last one is parsed properly. )))
-


[11/15] FLEX-34291: Merge the donated FDB with the current one.

Posted by ft...@apache.org.
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/concrete/PlayerSession.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/concrete/PlayerSession.java b/modules/debugger/src/java/flash/tools/debugger/concrete/PlayerSession.java
index e2b0b62..5d25b83 100644
--- a/modules/debugger/src/java/flash/tools/debugger/concrete/PlayerSession.java
+++ b/modules/debugger/src/java/flash/tools/debugger/concrete/PlayerSession.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger.concrete;
@@ -42,7 +40,11 @@ import java.util.regex.Pattern;
 import flash.tools.debugger.AIRLaunchInfo;
 import flash.tools.debugger.Frame;
 import flash.tools.debugger.IDebuggerCallbacks;
+import flash.tools.debugger.ILauncher;
 import flash.tools.debugger.InProgressException;
+import flash.tools.debugger.Isolate;
+import flash.tools.debugger.IsolateController;
+import flash.tools.debugger.IsolateSession;
 import flash.tools.debugger.Location;
 import flash.tools.debugger.NoResponseException;
 import flash.tools.debugger.NotConnectedException;
@@ -71,7 +73,7 @@ import flash.tools.debugger.expression.PlayerFaultException;
 import flash.util.Trace;
 
 
-public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
+public class PlayerSession implements Session, DProtocolNotifierIF, Runnable, IsolateController
 {
 	public static final int MAX_STACK_DEPTH = 256;
 	public static final long MAX_TERMINATE_WAIT_MILLIS = 10000;
@@ -88,10 +90,16 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	private volatile boolean m_isHalted; // WARNING -- accessed from multiple threads
 	private volatile boolean m_incoming; // WARNING -- accessed from multiple threads
 	private volatile boolean m_lastResponse;  // whether there was a reponse from the last message to the Player
+	private volatile HashMap<Integer, PlayerSessionIsolateStatus> m_isolateStatus = new HashMap<Integer, PlayerSessionIsolateStatus>();
+	
 	private int				m_watchTransactionTag;
 	private Boolean			m_playerCanCallFunctions;
 	private Boolean			m_playerSupportsWatchpoints;
 	private Boolean			m_playerCanBreakOnAllExceptions;
+	private Boolean			m_playerSupportsConcurrency;
+	private Boolean			m_playerSupportsWideLine;
+	
+	private ILauncher launcher;
 
 	/**
 	 * The URL that was launched, or <code>null</code> if not known.  Note:
@@ -109,11 +117,16 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	static volatile boolean	m_debugMsgFileOn;	// debug ONLY for file dump; turned on with "set $debug_message_file = 1"
 	volatile int			m_debugMsgFileSize;	// debug ONLY for file dump; controlled with "set $debug_message_file_size = NNN"
 
+	//FIXME: Make this concurrency aware
 	/**
 	 * A simple cache of previous "is" and "instanceof" queries, in order to
 	 * avoid having to send redundant messages to the player.
 	 */
 	private Map<String, Boolean> m_evalIsAndInstanceofCache = new HashMap<String, Boolean>();
+	
+	private volatile int m_lastPreIsolate = Isolate.DEFAULT_ID;
+	
+	private final Map<Integer, IsolateSession> m_isolateSessions;
 
 	private static final String DEBUG_MESSAGES = "$debug_messages"; //$NON-NLS-1$
 	private static final String DEBUG_MESSAGE_SIZE = "$debug_message_size"; //$NON-NLS-1$
@@ -123,7 +136,7 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	private static final String CONSOLE_ERRORS = "$console_errors"; //$NON-NLS-1$
 
 	private static final String FLASH_PREFIX = "$flash_"; //$NON-NLS-1$
-
+	
 	PlayerSession(Socket s, DProtocol proto, DManager manager, IDebuggerCallbacks debuggerCallbacks)
 	{
 		m_isConnected = false;
@@ -140,6 +153,7 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 		m_watchTransactionTag = 1;  // number that is sent for each watch transaction that occurs
 		m_playerCanCallFunctions = null;
 		m_debuggerCallbacks = debuggerCallbacks;
+		m_isolateSessions = Collections.synchronizedMap(new HashMap<Integer, IsolateSession>());
 	}
 	
 	private static PlayerSession createFromSocketHelper(Socket s, IDebuggerCallbacks debuggerCallbacks, DProtocol proto) throws IOException
@@ -156,7 +170,7 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	 * @param s
 	 * @param debuggerCallbacks
 	 * @return
-	 * @throws IOException
+	 * @throws java.io.IOException
 	 */
 	public static PlayerSession createFromSocket(Socket s, IDebuggerCallbacks debuggerCallbacks) throws IOException
 	{
@@ -172,7 +186,7 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	 * @param debuggerCallbacks
 	 * @param sessionManager
 	 * @return
-	 * @throws IOException
+	 * @throws java.io.IOException
 	 */
 	public static PlayerSession createFromSocketWithOptions(Socket s, IDebuggerCallbacks debuggerCallbacks, SessionManager sessionManager) throws IOException
 	{
@@ -298,6 +312,24 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 
 		return m_isHalted;
 	}
+	
+	/*
+	 * @see flash.tools.debugger.Session#isIsolateSuspended()
+	 */
+	public boolean isWorkerSuspended(int isolateId) throws NotConnectedException
+	{
+		if (isolateId == Isolate.DEFAULT_ID)
+			return isSuspended();
+		
+		if (!isConnected())
+			throw new NotConnectedException();
+		
+		if (m_isolateStatus.containsKey(isolateId)) {
+			return m_isolateStatus.get(isolateId).m_isHalted;
+		}
+		
+		return false;
+	}
 
 	/**
 	 * Start up the session listening for incoming messages on the socket
@@ -328,10 +360,17 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 		sendSwfloadNotify();
 		sendGetterTimeout();
 		sendSetterTimeout();
-		boolean responded = sendSquelch(true);
+		boolean responded = sendSquelch(true, Isolate.DEFAULT_ID);
 
 		// now note in our preferences whether get is working or not.
 		setPreference(SessionManager.PLAYER_SUPPORTS_GET, playerSupportsGet() ? 1 : 0);
+		if (supportsConcurrency()) {
+			sendConcurrentDebugger();
+		}
+		
+		if (supportsWideLineNumbers()) {
+			sendWideLineDebugger();
+		}
 
 		// Spawn a background thread which fetches the SWF and SWD
 		// from the Player and uses them to build function name tables
@@ -444,7 +483,7 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	 *            AppleScript via "item 1 or argv", "item 2 of argv", etc.
 	 * @return any text which was sent to stdout by /usr/bin/osascript, with the
 	 *         trailing \n already removed
-	 * @throws IOException
+	 * @throws java.io.IOException
 	 */
 	private String executeAppleScript(String appleScriptFilename, String[] argv) throws IOException
 	{
@@ -591,7 +630,15 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 			{
 				try
 				{
-					m_debuggerCallbacks.terminateDebugTarget(m_process);
+					//if a launcher is set for handling the launcher operations then use it.
+					if(null != launcher)
+					{
+						m_debuggerCallbacks.terminateDebugTarget(m_process,launcher);
+					}
+					else
+					{
+						m_debuggerCallbacks.terminateDebugTarget(m_process);
+					}
 				}
 				catch (IOException e)
 				{
@@ -655,12 +702,7 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	 */
 	public void resume() throws NotSuspendedException, NotConnectedException, NoResponseException
 	{
-		// send a continue message then return
-		if (!isSuspended())
-			throw new NotSuspendedException();
-
-		if (!simpleRequestResponseMessage(DMessage.OutContinue, DMessage.InContinue))
-			throw new NoResponseException(getPreference(SessionManager.PREF_RESPONSE_TIMEOUT));
+		resumeWorker(Isolate.DEFAULT_ID);
 	}
 
 	/*
@@ -668,21 +710,7 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	 */
 	public void suspend() throws SuspendedException, NotConnectedException, NoResponseException
 	{
-		// send a halt message
-		int wait = getPreference(SessionManager.PREF_SUSPEND_WAIT);
- 		int every = 50; // wait this long for a response.  The lower the number the more aggressive we are!
-
-		if (isSuspended())
-			throw new SuspendedException();
-
-		while (!isSuspended() && wait > 0)
-		{
-			simpleRequestResponseMessage(DMessage.OutStopDebug, DMessage.InBreakAtExt, every);
-			wait -= every;
-		}
-
-		if (!isSuspended())
-			throw new NoResponseException(wait);
+		suspendWorker(Isolate.DEFAULT_ID);
 	}
 
 	/**
@@ -690,18 +718,7 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	 */
 	public DSuspendInfo getSuspendInfo()
 	{
-		DSuspendInfo info = m_manager.getSuspendInfo();
-		if (info == null)
-		{
-			// request break information
-			if (simpleRequestResponseMessage(DMessage.OutGetBreakReason, DMessage.InBreakReason))
-				info = m_manager.getSuspendInfo();
-
-			// if we still can't get any info from the manager...
-			if (info == null)
-				info = new DSuspendInfo();  // empty unknown break information
-		}
-		return info;
+		return getSuspendInfoIsolate(Isolate.DEFAULT_ID);
 	}
 
 	/**
@@ -745,25 +762,19 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	 */
 	public SwfInfo[] getSwfs() throws NoResponseException
 	{
-		if (m_manager.getSwfInfoCount() == 0)
-		{
-			// need to help out on the first one since the player
-			// doesn't send it
-			requestSwfInfo(0);
-		}
-		SwfInfo[] swfs = m_manager.getSwfInfos();
-		return swfs;
+		return getSwfsWorker(Isolate.DEFAULT_ID);
 	}
 
 	/**
 	 * Request information on a particular swf, used by DSwfInfo
 	 * to fill itself correctly
 	 */
-	public void requestSwfInfo(int at) throws NoResponseException
+	public void requestSwfInfo(int at, int isolateId) throws NoResponseException
 	{
 		// nope don't have it...might as well go out and ask for all of them.
 		DMessage dm = DMessageCache.alloc(4);
 		dm.setType( DMessage.OutSwfInfo );
+		dm.setTargetIsolate(isolateId);
 		dm.putWord(at);
 		dm.putWord(0);  // rserved
 
@@ -803,15 +814,7 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	 */
 	public void stepInto() throws NotSuspendedException, NoResponseException, NotConnectedException
 	{
-		if (isSuspended())
-		{
-			// send a step-into message and then wait for the Flash player to tell us that is has
-			// resumed execution
-			if (!simpleRequestResponseMessage(DMessage.OutStepInto, DMessage.InContinue))
-				throw new NoResponseException(getPreference(SessionManager.PREF_RESPONSE_TIMEOUT));
-		}
-		else
-			throw new NotSuspendedException();
+		stepIntoWorker(Isolate.DEFAULT_ID);
 	}
 
 	/*
@@ -819,15 +822,7 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	 */
 	public void stepOut() throws NotSuspendedException, NoResponseException, NotConnectedException
 	{
-		if (isSuspended())
-		{
-			// send a step-out message and then wait for the Flash player to tell us that is has
-			// resumed execution
-			if (!simpleRequestResponseMessage(DMessage.OutStepOut, DMessage.InContinue))
-				throw new NoResponseException(getPreference(SessionManager.PREF_RESPONSE_TIMEOUT));
-		}
-		else
-			throw new NotSuspendedException();
+		stepOutWorker(Isolate.DEFAULT_ID);
 	}
 
 	/*
@@ -835,15 +830,7 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	 */
 	public void stepOver() throws NotSuspendedException, NoResponseException, NotConnectedException
 	{
-		if (isSuspended())
-		{
-			// send a step-over message and then wait for the Flash player to tell us that is has
-			// resumed execution
-			if (!simpleRequestResponseMessage(DMessage.OutStepOver, DMessage.InContinue))
-				throw new NoResponseException(getPreference(SessionManager.PREF_RESPONSE_TIMEOUT));
-		}
-		else
-			throw new NotSuspendedException();
+		stepOverWorker(Isolate.DEFAULT_ID);
 	}
 
 	/*
@@ -869,13 +856,14 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
      * @param lineNbr
      * @return
      */
-    public void requestFunctionNames(int moduleId, int lineNbr) throws VersionException, NoResponseException
+    public void requestFunctionNames(int moduleId, int lineNbr, int isolateId) throws VersionException, NoResponseException
     {
         // only player 9 supports this message
         if (m_manager.getVersion() >= 9)
         {
             DMessage dm = DMessageCache.alloc(8);
             dm.setType(DMessage.OutGetFncNames);
+            dm.setTargetIsolate(isolateId);
             dm.putDWord(moduleId);
             dm.putDWord(lineNbr);
 
@@ -891,9 +879,9 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	/**
 	 * From a given file identifier return a source file object
 	 */
-	public SourceFile getFile(int fileId)
+	public SourceFile getFile(int fileId, int isolateId)
 	{
-		return m_manager.getSource(fileId);
+		return m_manager.getSource(fileId, isolateId);
 	}
 
 	/**
@@ -901,7 +889,7 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	 */
 	public Location[] getBreakpointList()
 	{
-		return m_manager.getBreakpoints();
+		return m_manager.getBreakpoints(Isolate.DEFAULT_ID);
 	}
 
 	/*
@@ -909,25 +897,7 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	 */
 	public Location setBreakpoint(int fileId, int lineNum) throws NoResponseException, NotConnectedException
 	{
-		/* send the message to the player and await a response */
-		Location l = null;
-		int bp = DLocation.encodeId(fileId, lineNum);
-
-		DMessage dm = DMessageCache.alloc(8);
-		dm.setType(DMessage.OutSetBreakpoints);
-		dm.putDWord(1);
-		dm.putDWord(bp);
-
-		boolean gotResponse = simpleRequestResponseMessage(dm, DMessage.InSetBreakpoint);
-		if(gotResponse)
-		{
-			/* even though we think we got an answer check that the breakpoint was added */
-			l = m_manager.getBreakpoint(bp);
-		}
-		else
-			throw new NoResponseException(getPreference(SessionManager.PREF_RESPONSE_TIMEOUT));
-
-		return l;
+		return setBreakpointWorker(fileId, lineNum, Isolate.DEFAULT_ID);
 	}
 
 	/*
@@ -940,18 +910,30 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 		int fileId = source.getId();
 		int lineNum = local.getLine();
 		int bp = DLocation.encodeId(fileId, lineNum);
-		Location l = m_manager.getBreakpoint(bp);
+		int isolateId = local.getIsolateId();
+		Location l = null;
+		l = m_manager.getBreakpoint(bp, isolateId);
+		
 		if (l != null)
 		{
 			/* send the message */
-			DMessage dm = DMessageCache.alloc(8);
+			int wideLineSize = 0;
+			if (supportsWideLineNumbers())
+				wideLineSize = 4;
+			DMessage dm = DMessageCache.alloc(8 + wideLineSize);
 			dm.setType(DMessage.OutRemoveBreakpoints);
+			dm.setTargetIsolate(isolateId);
 			dm.putDWord(1);
-			dm.putDWord(bp);
+			if (!supportsWideLineNumbers())
+				dm.putDWord(bp);
+			else {
+				dm.putDWord(fileId);
+				dm.putDWord(lineNum);
+			}
 			sendMessage(dm);
 
 			/* no callback from the player so we remove it ourselves */
-			m_manager.removeBreakpoint(bp);
+			m_manager.removeBreakpoint(bp, isolateId);
 		}
 		return l;
 	}
@@ -961,10 +943,18 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	 */
 	public Watch[] getWatchList() throws NoResponseException, NotConnectedException
 	{
-		return m_manager.getWatchpoints();
+		return getWatchListWorker(Isolate.DEFAULT_ID);
+	}
+	
+	/*
+	 * @see flash.tools.debugger.Session#getWatchList()
+	 */
+	public Watch[] getWatchListWorker(int isolateId) throws NoResponseException, NotConnectedException
+	{
+			return m_manager.getWatchpoints(isolateId);
 	}
 
-	private Watch setWatch(long varId, String memberName, int kind) throws NoResponseException, NotConnectedException, NotSupportedException
+	private Watch setWatch(long varId, String memberName, int kind, int isolateId) throws NoResponseException, NotConnectedException, NotSupportedException
 	{
 		// we really have two cases here, one where we add a completely new
 		// watchpoint and the other where we modify an existing one.
@@ -973,32 +963,32 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 		Watch w = null;
 		int tag = m_watchTransactionTag++;
 
-		if (addWatch(varId, memberName, kind, tag))
+		if (addWatch(varId, memberName, kind, tag, isolateId))
 		{
 			// good that we got a response now let's check that
 			// it actually worked.
-			int count = m_manager.getWatchpointCount();
+			int count = m_manager.getWatchpointCount(isolateId);
 			if (count > 0)
 			{
-				DWatch lastWatch = m_manager.getWatchpoint(count-1);
+				DWatch lastWatch = m_manager.getWatchpoint(count-1, isolateId);
 				if (lastWatch.getTag() == tag)
 					w = lastWatch;
 			}
 		}
 		return w;
 	}
-
+	
 	/*
 	 * @see flash.tools.debugger.Session#setWatch(flash.tools.debugger.Variable, java.lang.String, int)
 	 */
 	public Watch setWatch(Value v, String memberName, int kind) throws NoResponseException, NotConnectedException, NotSupportedException
 	{
-		return setWatch(v.getId(), memberName, kind);
+		return setWatch(v.getId(), memberName, kind, v.getIsolateId());
 	}
 
 	public Watch setWatch(Watch watch) throws NoResponseException, NotConnectedException, NotSupportedException
 	{
-		return setWatch(watch.getValueId(), watch.getMemberName(), watch.getKind());
+		return setWatch(watch.getValueId(), watch.getMemberName(), watch.getKind(), watch.getIsolateId());
 	}
 
 	/*
@@ -1006,17 +996,17 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	 */
 	public Watch clearWatch(Watch watch) throws NoResponseException, NotConnectedException
 	{
-		Watch[] list = getWatchList();
+		Watch[] list = getWatchListWorker(watch.getIsolateId());
 		Watch w = null;
-		if ( removeWatch(watch.getValueId(), watch.getMemberName()) )
+		if ( removeWatch(watch.getValueId(), watch.getMemberName(), watch.getIsolateId()) )
 		{
 			// now let's first check the size of the list, it
 			// should now be one less
-			if (m_manager.getWatchpointCount() < list.length)
+			if (m_manager.getWatchpointCount(watch.getIsolateId()) < list.length)
 			{
 				// ok we made a change. So let's compare list and see which
 				// one went away
-				Watch[] newList = getWatchList();
+				Watch[] newList = getWatchListWorker(watch.getIsolateId());
 				for(int i=0; i<newList.length; i++)
 				{
 					// where they differ is the missing one
@@ -1040,29 +1030,34 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	 */
 	public Variable[] getVariableList() throws NotSuspendedException, NoResponseException, NotConnectedException, VersionException
 	{
+		return getVariableListWorker(Isolate.DEFAULT_ID);
+	}
+	
+	public Variable[] getVariableListWorker(int isolateId) throws NotSuspendedException, NoResponseException, NotConnectedException, VersionException
+	{
 		// make sure the player has stopped and send our message awaiting a response
-		if (!isSuspended())
+		if (!isWorkerSuspended(isolateId))
 			throw new NotSuspendedException();
 
-		requestFrame(0);  // our 0th frame gets our local context
+		requestFrame(0, isolateId);  // our 0th frame gets our local context
 
 		// now let's request all of the special variables too
-		getValue(Value.GLOBAL_ID);
-		getValue(Value.THIS_ID);
-		getValue(Value.ROOT_ID);
+		getValueWorker(Value.GLOBAL_ID, isolateId);
+		getValueWorker(Value.THIS_ID, isolateId);
+		getValueWorker(Value.ROOT_ID, isolateId);
 
 		// request as many levels as we can get
 		int i = 0;
 		Value v = null;
 		do
 		{
-			v = getValue(Value.LEVEL_ID-i);
+			v = getValueWorker(Value.LEVEL_ID-i, isolateId);
 		}
 		while( i++ < 128 && v != null);
 
 		// now that we've primed the DManager we can request the base variable whose
 		// children are the variables that are available
-		v = m_manager.getValue(Value.BASE_ID);
+		v = m_manager.getValue(Value.BASE_ID, isolateId);
 		if (v == null)
 			throw new VersionException();
 		return v.getMembers(this);
@@ -1073,33 +1068,34 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	 */
 	public Frame[] getFrames() throws NotConnectedException
 	{
-		return m_manager.getFrames();
+		return m_manager.getFrames(Isolate.DEFAULT_ID);
 	}
 
 	/**
 	 * Asks the player to return information regarding our current context which includes
 	 * this pointer, arguments for current frame, locals, etc.
 	 */
-	public void requestFrame(int depth) throws NotSuspendedException, NoResponseException, NotConnectedException
+	public void requestFrame(int depth, int isolateId) throws NotSuspendedException, NoResponseException, NotConnectedException
 	{
 		if (playerSupportsGet())
 		{
-			if (!isSuspended())
+			if (!isWorkerSuspended(isolateId))
 				throw new NotSuspendedException();
 
 			int timeout = getPreference(SessionManager.PREF_CONTEXT_RESPONSE_TIMEOUT);
 
 			DMessage dm = DMessageCache.alloc(4);
 			dm.setType(DMessage.OutGetFrame);
+			dm.setTargetIsolate(isolateId);
 			dm.putDWord(depth);  // depth of zero
 			if (!simpleRequestResponseMessage(dm,  DMessage.InFrame, timeout)) {
 				throw new NoResponseException(timeout);
 			}
 
-			pullUpActivationObjectVariables(depth);
+			pullUpActivationObjectVariables(depth, isolateId);
 		}
 	}
-
+	
 	/**
 	 * The compiler sometimes creates special local variables called
 	 * "activation objects."  When it decides to do this (e.g. if the
@@ -1115,10 +1111,12 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	 *
 	 * @param depth the depth of the stackframe we are fixing; 0 is topmost
 	 */
-	private void pullUpActivationObjectVariables(int depth) throws NotSuspendedException, NoResponseException, NotConnectedException
+	private void pullUpActivationObjectVariables(int depth, int isolateId) throws NotSuspendedException, NoResponseException, NotConnectedException
 	{
-		DValue frame = m_manager.getValue(Value.BASE_ID-depth);
-		DStackContext context = m_manager.getFrame(depth);		
+		DValue frame = m_manager.getValue(Value.BASE_ID-depth, isolateId);
+		if (frame == null)
+			return;
+		DStackContext context = m_manager.getFrame(depth, isolateId);		
 		DVariable[] frameVars = (DVariable[]) frame.getMembers(this);
 		Map<String, DVariable> varmap = new LinkedHashMap<String, DVariable>(frameVars.length); // preserves order
 		List<DVariable> activationObjects = new ArrayList<DVariable>();
@@ -1198,28 +1196,33 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	 */
 	public Value getValue(long valueId) throws NotSuspendedException, NoResponseException, NotConnectedException
 	{
+		return getValueWorker(valueId, Isolate.DEFAULT_ID);
+	}
+	
+	public Value getValueWorker(long valueId, int isolateId) throws NotSuspendedException, NoResponseException, NotConnectedException
+	{
 		DValue val = null;
 
-		if (!isSuspended())
+		if (!isWorkerSuspended(isolateId))
 			throw new NotSuspendedException();
 
 		// get it from cache if we can
-		val = m_manager.getValue(valueId);
+		val = m_manager.getValue(valueId, isolateId);
 
 		if (val == null)
 		{
 			// if a special variable, then we need to trigger a local frame call, otherwise just use id to get it
 			if (valueId < Value.UNKNOWN_ID)
 			{
-				requestFrame(0); // force our current frame to get populated, BASE_ID will be available
+				requestFrame(0, isolateId); // force our current frame to get populated, BASE_ID will be available
 			}
 			else if (valueId > Value.UNKNOWN_ID)
 			{
-				requestVariable(valueId, null);
+				requestVariable(valueId, null, isolateId);
 			}
 
 			// after all this we should have our variable cache'd so try again if it wasn't there the first time
-			val = m_manager.getValue(valueId);
+			val = m_manager.getValue(valueId, isolateId);
 		}
 
 		return val;
@@ -1228,9 +1231,9 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	/**
 	 * Returns the current value object for the given id; never requests it from the player.
 	 */
-	public Value getRawValue(long valueId)
+	public Value getRawValue(long valueId, int isolateId)
 	{
-		return m_manager.getValue(valueId);
+		return m_manager.getValue(valueId, isolateId);
 	}
 
 	/**
@@ -1239,26 +1242,26 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	 * player (because it can't, of course).  Returns <code>null</code> if we don't have
 	 * a value for that id.
 	 */
-	public Value getPreviousValue(long valueId)
+	public Value getPreviousValue(long valueId, int isolateId)
 	{
-		return m_manager.getPreviousValue(valueId);
+		return m_manager.getPreviousValue(valueId, isolateId);
 	}
 
 	/**
 	 * Launches a request to obtain all the members of the specified variable, and
 	 * store them in the variable which would be returned by
-	 * {@link DManager#getVariable(long)}.
+	 * {@link flash.tools.debugger.concrete.DManager#getVariable(long)}.
 	 *
 	 * @param valueId id of variable whose members we want; underlying Variable must
 	 * already be known by the PlayerSessionManager.
 	 *
-	 * @throws NoResponseException
-	 * @throws NotConnectedException
-	 * @throws NotSuspendedException
+	 * @throws flash.tools.debugger.NoResponseException
+	 * @throws flash.tools.debugger.NotConnectedException
+	 * @throws flash.tools.debugger.NotSuspendedException
 	 */
-	void obtainMembers(long valueId) throws NoResponseException, NotConnectedException, NotSuspendedException
+	void obtainMembers(long valueId, int isolateId) throws NoResponseException, NotConnectedException, NotSuspendedException
 	{
-		if (!isSuspended())
+		if (!isWorkerSuspended(isolateId))
 			throw new NotSuspendedException();
 
 		// Get it from cache.  Normally, this should never fail; however, in
@@ -1266,17 +1269,22 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 		// that a thread has called this even after a different thread has
 		// single-stepped, so that the original variable is no longer valid.
 		// So, we'll check for a null return value.
-		DValue v = m_manager.getValue(valueId);
+		DValue v = m_manager.getValue(valueId, isolateId);
 
 		if (v != null && !v.membersObtained())
 		{
-			requestVariable(valueId, null, false, true);
+			requestVariable(valueId, null, false, true, isolateId);
 		}
 	}
 
 	public Value getGlobal(String name) throws NotSuspendedException, NoResponseException, NotConnectedException
 	{
-		Value v = getValue(0, name);
+		return getGlobalWorker(name, Isolate.DEFAULT_ID);
+	}
+	
+	public Value getGlobalWorker(String name, int isolateId) throws NotSuspendedException, NoResponseException, NotConnectedException
+	{
+		Value v = getValue(0, name, isolateId);
 
 		if (v==null || v.getType() == VariableType.UNDEFINED)
 			return null;
@@ -1297,27 +1305,27 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	 * paragraph was written for AS2; __proto__ doesn't exist
 	 * in AS3.  TODO: revise this paragraph]
 	 */
-	public Value getValue(long varId, String name) throws NotSuspendedException, NoResponseException, NotConnectedException
+	public Value getValue(long varId, String name, int isolateId) throws NotSuspendedException, NoResponseException, NotConnectedException
 	{
 		Value v = null;
-		if (isSuspended())
+		if (isWorkerSuspended(isolateId))
 		{
 			int fireGetter = getPreference(SessionManager.PREF_INVOKE_GETTERS);
 
 			// disable children attaching to parent variables and clear our
 			// most recently seen variable
-			m_manager.clearLastVariable();
-			m_manager.enableChildAttach(false);
+			m_manager.clearLastVariable(isolateId);
+			m_manager.enableChildAttach(false, isolateId);
 
 			try
 			{
-				requestVariable(varId, name, (fireGetter != 0), false);
+				requestVariable(varId, name, (fireGetter != 0), false, isolateId);
 
-				DVariable lastVariable = m_manager.lastVariable();
+				DVariable lastVariable = m_manager.lastVariable(isolateId);
 				if (lastVariable != null)
 					v = lastVariable.getValue();
 				else
-					v = DValue.forPrimitive(Value.UNDEFINED);
+					v = DValue.forPrimitive(Value.UNDEFINED, isolateId);
 			}
 			catch (NoResponseException e)
 			{
@@ -1333,11 +1341,11 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 					// because in every other case, this function does not add members to
 					// existing objects.  Need to revisit this.
 					v = new DValue(VariableType.STRING, "String", "String", ValueAttribute.IS_EXCEPTION, //$NON-NLS-1$ //$NON-NLS-2$
-							e.getLocalizedMessage());
+							e.getLocalizedMessage(), isolateId);
 					if (varId != 0) {
-						DVariable var = new DVariable(name, (DValue)v);
-						m_manager.enableChildAttach(true);
-						m_manager.addVariableMember(varId, var);
+						DVariable var = new DVariable(name, (DValue)v, isolateId);
+						m_manager.enableChildAttach(true, isolateId);
+						m_manager.addVariableMember(varId, var, isolateId);
 					}
 				}
 				else
@@ -1348,7 +1356,7 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 			finally
 			{
 				// reset our attach flag, so that children attach to parent variables.
-				m_manager.enableChildAttach(true);
+				m_manager.enableChildAttach(true, isolateId);
 			}
 		}
 		else
@@ -1357,9 +1365,9 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 		return v;
 	}
 
-	private void requestVariable(long id, String name) throws NoResponseException, NotConnectedException, NotSuspendedException
+	private void requestVariable(long id, String name, int isolateId) throws NoResponseException, NotConnectedException, NotSuspendedException
 	{
-		requestVariable(id, name, false, false);
+		requestVariable(id, name, false, false, isolateId);
 	}
 
 	/**
@@ -1369,22 +1377,24 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	 * @param args the args to the function
 	 * @return the return value of the function
 	 */
-	private Value callFunction(Value thisValue, boolean isConstructor, String funcname, Value[] args) throws PlayerDebugException
+	private Value callFunction(Value thisValue, boolean isConstructor, String funcname, Value[] args, int isolateId) throws PlayerDebugException
 	{
-		if (!isSuspended())
+		if (!isWorkerSuspended(isolateId))
 			throw new NotSuspendedException();
 
-		if (!playerCanCallFunctions())
+		if (!playerCanCallFunctions(isolateId))
 			throw new NotSupportedException(PlayerSessionManager.getLocalizationManager().getLocalizedTextString("functionCallsNotSupported")); //$NON-NLS-1$
 
 		// name = getRawMemberName(id, name);
 
-		m_manager.clearLastFunctionCall();
+		m_manager.clearLastFunctionCall(isolateId);
 
 		DMessage dm = buildCallFunctionMessage(isConstructor, thisValue, funcname, args);
 
+		dm.setTargetIsolate(isolateId);
+		
 		// make sure any exception during the setter gets held onto
-		m_manager.beginPlayerCodeExecution();
+		m_manager.beginPlayerCodeExecution(isolateId);
 
 		// TODO wrong timeout
 		int timeout = getPreference(SessionManager.PREF_GETVAR_RESPONSE_TIMEOUT);
@@ -1393,16 +1403,16 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 		boolean result = simpleRequestResponseMessage(dm, DMessage.InCallFunction, timeout);
 
 		// tell manager we're done; ignore returned FaultEvent
-		m_manager.endPlayerCodeExecution();
+		m_manager.endPlayerCodeExecution(isolateId);
 
 		if (!result)
 			throw new NoResponseException(timeout);
 
-		DVariable lastFunctionCall = m_manager.lastFunctionCall();
+		DVariable lastFunctionCall = m_manager.lastFunctionCall(isolateId);
 		if (lastFunctionCall != null)
 			return lastFunctionCall.getValue();
 		else
-			return DValue.forPrimitive(Value.UNDEFINED);
+			return DValue.forPrimitive(Value.UNDEFINED, isolateId);
 	}
 
 	/*
@@ -1410,12 +1420,17 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	 */
 	public Value callFunction(Value thisValue, String funcname, Value[] args) throws PlayerDebugException
 	{
-		Value retval = callPseudoFunction(thisValue, funcname, args);
+		return callFunctionWorker(thisValue, funcname, args, Isolate.DEFAULT_ID);
+	}
+	
+	public Value callFunctionWorker(Value thisValue, String funcname, Value[] args, int isolateId) throws PlayerDebugException
+	{
+		Value retval = callPseudoFunction(thisValue, funcname, args, isolateId);
 		if (retval != null) {
 			return retval;
 		}
 
-		return callFunction(thisValue, false, funcname, args);
+		return callFunction(thisValue, false, funcname, args, isolateId);
 	}
 
 	/**
@@ -1423,10 +1438,10 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	 * $obj(), and if so, handles that directly rather than calling the player.  Returns
 	 * null if the function being called is not a pseudofunction.
 	 */
-	private Value callPseudoFunction(Value thisValue, String funcname, Value[] args) throws PlayerDebugException{
+	private Value callPseudoFunction(Value thisValue, String funcname, Value[] args, int isolateId) throws PlayerDebugException{
 		if (thisValue.getType() == VariableType.UNDEFINED || thisValue.getType() == VariableType.NULL) {
 			if ("$obj".equals(funcname)) { //$NON-NLS-1$
-				return callObjPseudoFunction(args);
+				return callObjPseudoFunction(args, isolateId);
 			}
 		}
 
@@ -1437,25 +1452,30 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	 * Handles a call to the debugger pseudofunction $obj() -- e.g. $obj(1234) returns
 	 * a pointer to the object with id 1234.
 	 */
-	private Value callObjPseudoFunction(Value[] args) throws PlayerDebugException {
+	private Value callObjPseudoFunction(Value[] args, int isolateId) throws PlayerDebugException {
 		if (args.length != 1) {
-			return DValue.forPrimitive(DValue.UNDEFINED);
+			return DValue.forPrimitive(DValue.UNDEFINED, isolateId);
 		}
 		double arg = ECMA.toNumber(this, args[0]);
 		long id = (long) arg;
 		if (id != arg) {
-			return DValue.forPrimitive(DValue.UNDEFINED);
+			return DValue.forPrimitive(DValue.UNDEFINED, isolateId);
 		}
-		DValue value = m_manager.getValue(id);
+		DValue value = m_manager.getValue(id, isolateId);
 		if (value == null) {
-			return DValue.forPrimitive(DValue.UNDEFINED);
+			return DValue.forPrimitive(DValue.UNDEFINED, isolateId);
 		}
 		return value;
 	}
 
 	public Value callConstructor(String funcname, Value[] args) throws PlayerDebugException
 	{
-		return callFunction(DValue.forPrimitive(null), true, funcname, args);
+		return callConstructorWorker(funcname, args, Isolate.DEFAULT_ID);
+	}
+	
+	public Value callConstructorWorker(String funcname, Value[] args, int isolateId) throws PlayerDebugException
+	{
+		return callFunction(DValue.forPrimitive(null, isolateId), true, funcname, args, isolateId);
 	}
 
 	private DMessage buildCallFunctionMessage(boolean isConstructor, Value thisValue, String funcname, Value[] args)
@@ -1504,17 +1524,19 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 		return dm;
 	}
 
-	private void requestVariable(long id, String name, boolean fireGetter, boolean alsoGetChildren) throws NoResponseException, NotConnectedException, NotSuspendedException
+	private void requestVariable(long id, String name, boolean fireGetter, boolean alsoGetChildren, int isolateId) throws NoResponseException, NotConnectedException, NotSuspendedException
 	{
-		if (!isSuspended())
+		if (!isWorkerSuspended(isolateId))
 			throw new NotSuspendedException();
 
-		name = getRawMemberName(id, name);
+		name = getRawMemberName(id, name, isolateId);
 
 		DMessage dm = buildOutGetMessage(id, name, fireGetter, alsoGetChildren);
 
+		dm.setTargetIsolate(isolateId);
+		
 		// make sure any exception during the setter gets held onto
-		m_manager.beginPlayerCodeExecution();
+		m_manager.beginPlayerCodeExecution(isolateId);
 
 		int timeout = getPreference(SessionManager.PREF_GETVAR_RESPONSE_TIMEOUT);
 		timeout += 500; // give the player enough time to raise its timeout exception
@@ -1522,7 +1544,7 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 		boolean result = simpleRequestResponseMessage(dm, DMessage.InGetVariable, timeout);
 
 		// tell manager we're done; ignore returned FaultEvent
-		m_manager.endPlayerCodeExecution();
+		m_manager.endPlayerCodeExecution(isolateId);
 
 		if (!result)
 			throw new NoResponseException(timeout);
@@ -1559,9 +1581,9 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 		return dm;
 	}
 
-	public FaultEvent setScalarMember(long varId, String memberName, int type, String value) throws NotSuspendedException, NoResponseException, NotConnectedException
+	public FaultEvent setScalarMember(long varId, String memberName, int type, String value, int isolateId) throws NotSuspendedException, NoResponseException, NotConnectedException
 	{
-		if (!isSuspended())
+		if (!isWorkerSuspended(isolateId))
 			throw new NotSuspendedException();
 
 		// If the varId is that of a stack frame, then we need to check whether that
@@ -1574,26 +1596,26 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 		if (varId <= Value.BASE_ID && varId > Value.LEVEL_ID)
 		{
 			int depth = (int) (Value.BASE_ID - varId);
-			DStackContext context = m_manager.getFrame(depth);
+			DStackContext context = m_manager.getFrame(depth,isolateId);
 			DVariable activationObject = context.getActivationObject();
 			if (activationObject != null)
 				varId = activationObject.getValue().getId();
 		}
 
-		memberName = getRawMemberName(varId, memberName);
+		memberName = getRawMemberName(varId, memberName, isolateId);
 
 		// see if it is our any of our special variables
-		FaultEvent faultEvent = requestSetVariable( isPseudoVarId(varId) ? 0 : varId, memberName, type, value);
+		FaultEvent faultEvent = requestSetVariable( isPseudoVarId(varId) ? 0 : varId, memberName, type, value, isolateId);
 
 		// now that we sent it out, we need to clear our variable cache
 		// if it is our special context then mark the frame as stale.
-		if (isPseudoVarId(varId) && m_manager.getFrameCount() > 0)
+		if (isPseudoVarId(varId) && m_manager.getFrameCount(isolateId) > 0)
 		{
-			m_manager.getFrame(0).markStale();
+			m_manager.getFrame(0, isolateId).markStale();
 		}
 		else
 		{
-			DValue parent = m_manager.getValue(varId);
+			DValue parent = m_manager.getValue(varId,isolateId);
 			if (parent != null)
 				parent.removeAllMembers();
 		}
@@ -1624,11 +1646,11 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	 * and second cases, we may need to fully resolve it so that the Player
 	 * will recognize it.
 	 */
-	private String getRawMemberName(long parentValueId, String memberName)
+	private String getRawMemberName(long parentValueId, String memberName, int isolateId)
 	{
 		if (memberName != null)
 		{
-			DValue parent = m_manager.getValue(parentValueId);
+			DValue parent = m_manager.getValue(parentValueId, isolateId);
 			if (parent != null)
 			{
 				int doubleColon = memberName.indexOf("::"); //$NON-NLS-1$
@@ -1644,19 +1666,20 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	/**
 	 * @return null for success, or fault event if a setter in the player threw an exception
 	 */
-	private FaultEvent requestSetVariable(long id, String name, int t, String value) throws NoResponseException
+	private FaultEvent requestSetVariable(long id, String name, int t, String value, int isolateId) throws NoResponseException
 	{
 		// convert type to typeName
 		String type = DVariable.typeNameFor(t);
 		DMessage dm = buildOutSetMessage(id, name, type, value);
+		dm.setTargetIsolate(isolateId);
 		FaultEvent faultEvent = null;
 //		System.out.println("setmsg id="+id+",name="+name+",t="+type+",value="+value);
 
 		// make sure any exception during the setter gets held onto
-		m_manager.beginPlayerCodeExecution();
+		m_manager.beginPlayerCodeExecution(isolateId);
 
 		// turn off squelch so we can hear the response
-		sendSquelch(false);
+		sendSquelch(false, isolateId);
 
 		int timeout = getPreference(SessionManager.PREF_GETVAR_RESPONSE_TIMEOUT);
 
@@ -1664,13 +1687,13 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 			throw new NoResponseException(getPreference(SessionManager.PREF_RESPONSE_TIMEOUT));
 
 		// turn it back on
-		sendSquelch(true);
+		sendSquelch(true, isolateId);
 
 		// tell manager we're done, and get exception if any
-		faultEvent = m_manager.endPlayerCodeExecution();
+		faultEvent = m_manager.endPlayerCodeExecution(isolateId);
 
 		// hammer the variable cache and context array
-		m_manager.freeValueCache();
+		m_manager.freeValueCache(isolateId);
 		return faultEvent;
 	}
 
@@ -1729,21 +1752,22 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 
 	/**
 	 * Adds a watchpoint on the given expression
-	 * @throws NotConnectedException
-	 * @throws NoResponseException
-	 * @throws NotSupportedException
-	 * @throws NotSuspendedException
+	 * @throws flash.tools.debugger.NotConnectedException
+	 * @throws flash.tools.debugger.NoResponseException
+	 * @throws flash.tools.debugger.NotSupportedException
+	 * @throws flash.tools.debugger.NotSuspendedException
 	 */
-	public boolean addWatch(long varId, String varName, int type, int tag) throws NoResponseException, NotConnectedException, NotSupportedException
+	public boolean addWatch(long varId, String varName, int type, int tag, int isolateId) throws NoResponseException, NotConnectedException, NotSupportedException
 	{
 		// TODO check for NoResponse, NotConnected
 
-		if (!supportsWatchpoints())
+		if (!supportsWatchpoints(isolateId))
 			throw new NotSupportedException(PlayerSessionManager.getLocalizationManager().getLocalizedTextString("watchpointsNotSupported")); //$NON-NLS-1$
 
-		varName = getRawMemberName(varId, varName);
+		varName = getRawMemberName(varId, varName, isolateId);
 		DMessage dm = DMessageCache.alloc(4+DMessage.getSizeofPtr()+DMessage.getStringLength(varName)+1);
 		dm.setType(DMessage.OutAddWatch2);
+		dm.setTargetIsolate(isolateId);
 		dm.putPtr(varId);
 		try { dm.putString(varName); } catch(UnsupportedEncodingException uee) { dm.putByte((byte)'\0'); }
 		dm.putWord(type);
@@ -1756,13 +1780,13 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 
 	/**
 	 * Removes a watchpoint on the given expression
-	 * @throws NotConnectedException
-	 * @throws NoResponseException
-	 * @throws NotSuspendedException
+	 * @throws flash.tools.debugger.NotConnectedException
+	 * @throws flash.tools.debugger.NoResponseException
+	 * @throws flash.tools.debugger.NotSuspendedException
 	 */
-	public boolean removeWatch(long varId, String memberName) throws NoResponseException, NotConnectedException
+	public boolean removeWatch(long varId, String memberName, int isolateId) throws NoResponseException, NotConnectedException
 	{
-		memberName = getRawMemberName(varId, memberName);
+		memberName = getRawMemberName(varId, memberName, isolateId);
 		DMessage dm = DMessageCache.alloc(DMessage.getSizeofPtr()+DMessage.getStringLength(memberName)+1);
 		dm.setType(DMessage.OutRemoveWatch2);
 		dm.putPtr(varId);
@@ -1782,6 +1806,17 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 		dm.setType(message);
 		sendMessage(dm);
 	}
+	
+	/**
+	 * Send a message that contains no data
+	 */
+	void sendMessageIsolate(int message, int isolateId)
+	{
+		DMessage dm = DMessageCache.alloc(0);
+		dm.setTargetIsolate(isolateId);
+		dm.setType(message);
+		sendMessage(dm);
+	}
 
 	/**
 	 * Send a fully formed message and release it when done
@@ -1790,6 +1825,26 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	{
 		try
 		{
+			if (dm.getType() != DMessage.OutSetActiveIsolate) {
+				int isolate = dm.getTargetIsolate();
+				if (isolate != getActiveIsolate().getId()) {
+					DMessage dm1 = DMessageCache.alloc(4);
+					dm1.setTargetIsolate(isolate);
+					dm1.setType(DMessage.OutSetActiveIsolate);
+					dm1.putDWord(isolate);
+
+					/* Use sendMessage here to avoid waiting for a response. 
+					 * The assumption is that once the message is sent, subsequent
+					 * messages are for that isolate regardless of the player confirming
+					 * it. With this change, performance has improved considerably; player
+					 * debugger has not gone out of sync since the ProcessTag messages
+					 * flood issue was resolved. */
+					sendMessage(dm1);
+
+					m_manager.setActiveIsolate(m_manager.getIsolate(isolate));
+
+				}
+			}
 			m_protocol.txMessage(dm);
 
 			if (m_debugMsgOn || m_debugMsgFileOn)
@@ -1806,15 +1861,15 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 		DMessageCache.free(dm);
 	}
 
-
 	/**
 	 * Tell the player to shut-up
 	 */
-	boolean sendSquelch(boolean on)
+	boolean sendSquelch(boolean on, int isolateId)
 	{
 		boolean responded;
 		DMessage dm = DMessageCache.alloc(4);
 		dm.setType(DMessage.OutSetSquelch);
+		dm.setTargetIsolate(isolateId);
 		dm.putDWord( on ? 1 : 0);
 		responded = simpleRequestResponseMessage(dm, DMessage.InSquelch);
 		return responded;
@@ -1899,6 +1954,23 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 
 		sendOptionMessage(option, value);
 	}
+	
+	void sendConcurrentDebugger()
+	{
+		String option = "concurrent_debugger"; //$NON-NLS-1$
+		String value = "on"; //$NON-NLS-1$
+
+		sendOptionMessage(option, value);
+	}
+	
+	void sendWideLineDebugger()
+	{
+		String option = "wide_line_debugger"; //$NON-NLS-1$
+		String value = "on"; //$NON-NLS-1$
+
+		sendOptionMessage(option, value);
+		m_manager.setWideLines(true);
+	}
 
 	void sendOptionMessage(String option, String value)
 	{
@@ -1913,27 +1985,66 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 
 	public boolean supportsWatchpoints()
 	{
+		return supportsWatchpoints(Isolate.DEFAULT_ID);
+	}
+	
+	public boolean supportsWatchpoints(int isolateId)
+	{
 		if (m_playerSupportsWatchpoints == null)
-			m_playerSupportsWatchpoints = new Boolean(getOption("can_set_watchpoints", false)); //$NON-NLS-1$
+			m_playerSupportsWatchpoints = new Boolean(getOption("can_set_watchpoints", false, isolateId)); //$NON-NLS-1$
 		return m_playerSupportsWatchpoints.booleanValue();
 	}
 
 	public boolean playerCanBreakOnAllExceptions()
 	{
+		return playerCanBreakOnAllExceptions(Isolate.DEFAULT_ID);
+	}
+	
+	public boolean playerCanBreakOnAllExceptions(int isolateId)
+	{
 		if (m_playerCanBreakOnAllExceptions == null)
-			m_playerCanBreakOnAllExceptions = new Boolean(getOption("can_break_on_all_exceptions", false)); //$NON-NLS-1$
+			m_playerCanBreakOnAllExceptions = new Boolean(getOption("can_break_on_all_exceptions", false, isolateId)); //$NON-NLS-1$
 		return m_playerCanBreakOnAllExceptions.booleanValue();
 	}
+	
+	public boolean supportsConcurrency(int isolateId)
+	{
+		if (m_playerSupportsConcurrency == null)
+			m_playerSupportsConcurrency = new Boolean(getOption("concurrent_player", false, isolateId)); //$NON-NLS-1$
+		return m_playerSupportsConcurrency.booleanValue();
+	}
+	
+	public boolean supportsConcurrency()
+	{
+		return supportsConcurrency(Isolate.DEFAULT_ID);
+	}
+	
+	public boolean supportsWideLineNumbers()
+	{
+		return supportsWideLineNumbers(Isolate.DEFAULT_ID);
+	}
+	
+	public boolean supportsWideLineNumbers(int isolateId)
+	{
+		if (m_playerSupportsWideLine == null)
+			m_playerSupportsWideLine = new Boolean(getOption("wide_line_player", false, isolateId)); //$NON-NLS-1$
+		return m_playerSupportsWideLine.booleanValue();
+	}
 
 	public boolean playerCanTerminate()
 	{
-		return getOption("can_terminate", false); //$NON-NLS-1$
+		return getOption("can_terminate", false, Isolate.DEFAULT_ID); //$NON-NLS-1$
 	}
 
 	public boolean playerCanCallFunctions()
 	{
+		return playerCanCallFunctions(Isolate.DEFAULT_ID);
+	}
+	
+	public boolean playerCanCallFunctions(int isolateId)
+	{
 		if (m_playerCanCallFunctions == null)
-			m_playerCanCallFunctions = new Boolean(getOption("can_call_functions", false)); //$NON-NLS-1$
+			m_playerCanCallFunctions = new Boolean(getOption("can_call_functions", false, isolateId)); //$NON-NLS-1$
 		return m_playerCanCallFunctions.booleanValue();
 	}
 
@@ -1945,10 +2056,10 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	 *            the name of the option
 	 * @return its value, or null
 	 */
-	public boolean getOption(String optionName, boolean defaultValue)
+	public boolean getOption(String optionName, boolean defaultValue, int isolateId)
 	{
 		boolean retval = defaultValue;
-		String optionValue = getOption(optionName, null);
+		String optionValue = getOption(optionName, null, isolateId);
 
 		if (optionValue != null)
 			retval = Boolean.valueOf(optionValue).booleanValue();
@@ -1964,19 +2075,38 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	 *            the name of the option
 	 * @return its value, or null
 	 */
-	public String getOption(String optionName, String defaultValue)
+	public String getOption(String optionName, String defaultValue, int isolateId)
 	{
 		String optionValue = defaultValue;
 
 		int msgSize = DMessage.getStringLength(optionName)+1;  // add 1 for trailing null of string
 
 		DMessage dm = DMessageCache.alloc(msgSize);
+		dm.setTargetIsolate(isolateId);
 		dm.setType(DMessage.OutGetOption);
 		try { dm.putString(optionName); } catch(UnsupportedEncodingException uee) { dm.putByte((byte)'\0'); }
 		if (simpleRequestResponseMessage(dm, DMessage.InOption))
 			optionValue = m_manager.getOption(optionName);
 		return optionValue;
 	}
+	
+	long getMessageInCount(DMessageCounter counter, long isolate, int msgType) {
+		if (isolate == Isolate.DEFAULT_ID) {
+			return counter.getInCount(msgType);
+		}
+		else {
+			return counter.getIsolateInCount(isolate, msgType);
+		}
+	}
+	
+	Object getMessageInLock(DMessageCounter counter, long isolate) {
+		if (isolate == Isolate.DEFAULT_ID) {
+			return counter.getInLock();
+		}
+		else {
+			return counter.getIsolateInLock(isolate);
+		}
+	}
 
 	/**
 	 * Send our message and assume that the next response that is received is
@@ -1989,12 +2119,15 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	{
 		boolean response = false;
 
+		//FIXME: Check if timeout needs to adjust to the isolate switching
+		// delay
 		// use default or user supplied timeout
 		timeout = (timeout > 0) ? timeout : getPreference(SessionManager.PREF_RESPONSE_TIMEOUT);
 
 		// note the number of messages of this type before our send
 		DMessageCounter msgCounter = getMessageCounter();
-		long num = msgCounter.getInCount(msgType);
+		int isolate = msg.getTargetIsolate();
+		long num = getMessageInCount(msgCounter, isolate, msgType);
 		long expect = num+1;
 
 		// send the message
@@ -2005,21 +2138,24 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 
 		// now wait till we see a message come in
 		m_incoming = false;
-		synchronized (msgCounter.getInLock())
+		synchronized (getMessageInLock(msgCounter, isolate))
 		{
-			while( (expect > msgCounter.getInCount(msgType)) &&
+			while( (expect > getMessageInCount(msgCounter, isolate, msgType)) &&
 					System.currentTimeMillis() < startTime + timeout &&
 					isConnected())
 			{
 				// block until the message counter tells us that some message has been received
 				try
 				{
-					msgCounter.getInLock().wait(timeout);
+					getMessageInLock(msgCounter, isolate).wait(timeout);
 				}
 				catch (InterruptedException e)
 				{
 					// this should never happen
 					e.printStackTrace();
+					//FIXME: Will resetting the interrupted status here
+					//cause any problems?
+//		            Thread.currentThread().interrupt();
 				}
 
 				// if we see incoming messages, then we should reset our timeout
@@ -2034,7 +2170,7 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 			}
 		}
 
-		if (msgCounter.getInCount(msgType) >= expect)
+		if (getMessageInCount(msgCounter, isolate, msgType) >= expect)
 			response = true;
 		else if (timeout <= 0 && Trace.error)
 			Trace.trace("Timed-out waiting for "+DMessage.inTypeName(msgType)+" response to message "+msg.outToString()); //$NON-NLS-1$ //$NON-NLS-2$
@@ -2047,8 +2183,31 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 
 	// use default timeout
 	boolean simpleRequestResponseMessage(DMessage msg, int msgType) 	{ return simpleRequestResponseMessage(msg, msgType, -1); 	}
+	
+	boolean simpleRequestResponseMessageIsolate(DMessage msg, int msgType, int isolateId) 	{ 
+		return simpleRequestResponseMessageIsolate(msg, msgType, -1, isolateId); 			
+	}
+	
+	boolean simpleRequestResponseMessageIsolate(DMessage msg, int msgType, int timeout, int isolateId)
+	{
+		msg.setTargetIsolate(isolateId);
+		return simpleRequestResponseMessage(msg, msgType, timeout);
+	}
+	
 	boolean simpleRequestResponseMessage(int msg, int msgType)			{ return simpleRequestResponseMessage(msg, msgType, -1); 	}
+	
+	boolean simpleRequestResponseMessageIsolate(int msg, int msgType, int isolateId) { 
+		return simpleRequestResponseMessageIsolate(msg, msgType, -1, isolateId);
+	}
 
+	boolean simpleRequestResponseMessageIsolate(int msg, int msgType, int timeout, int isolateId)
+	{
+		DMessage dm = DMessageCache.alloc(0);
+		dm.setType(msg);
+		dm.setTargetIsolate(isolateId);
+		return simpleRequestResponseMessage(dm, msgType, timeout);
+	}
+	
 	// Convenience function
 	boolean simpleRequestResponseMessage(int msg, int msgType, int timeout)
 	{
@@ -2096,6 +2255,12 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	{
 		switch (msg.getType())
 		{
+		case DMessage.InIsolate:
+
+				m_lastPreIsolate = (int)msg.getDWord();
+			
+			break;
+		
 			case DMessage.InAskBreakpoints:
 			case DMessage.InBreakAt:
 			case DMessage.InBreakAtExt:
@@ -2105,7 +2270,10 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 				// event queue, which the host debugger may immediately process;
 				// if the debugger calls back to the Session, the Session must be
 				// correctly marked as halted.
-				m_isHalted = true;
+				if (m_lastPreIsolate == Isolate.DEFAULT_ID)
+					m_isHalted = true;
+				else
+					updateHaltIsolateStatus(m_lastPreIsolate, true);
 				break;
 			}
 		}
@@ -2132,23 +2300,31 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 			case DMessage.InProcessTag:
 			{
 				// need to send a response to this message to keep the player going
-				sendMessage(DMessage.OutProcessedTag);
+				sendMessageIsolate(DMessage.OutProcessedTag, msg.getTargetIsolate());
 				break;
 			}
 
 			case DMessage.InContinue:
 			{
-				m_isHalted = false;
+				if (msg.getTargetIsolate() == Isolate.DEFAULT_ID)
+					m_isHalted = false;
+				else {
+					updateHaltIsolateStatus(msg.getTargetIsolate(), false);
+				}
 				break;
 			}
 
 			case DMessage.InOption:
 			{
-				String s = msg.getString();
-				String v = msg.getString();
-
-				// add it to our properties, for DEBUG purposes only
-				m_prefs.put(s, v);
+				//workers inherit options, so only store options
+				//from main thread.
+				if (msg.getTargetIsolate() == Isolate.DEFAULT_ID) {
+					String s = msg.getString();
+					String v = msg.getString();
+
+					// add it to our properties, for DEBUG purposes only
+					m_prefs.put(s, v);
+				}
 				break;
 			}
 
@@ -2156,7 +2332,12 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 			case DMessage.InScript:
 			case DMessage.InRemoveScript:
 			{
+				//FIXME: Clear this cache only for affected
+				//workers. Right now, the key contains worker
+				//id, so we are safe. But we unnecessarily flush
+				//the queue.
 				m_evalIsAndInstanceofCache.clear();
+				
 				m_incoming = true;
 				break;
 			}
@@ -2179,7 +2360,18 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 		m_lastResponse = true;
 	}
 
-    /**
+    private void updateHaltIsolateStatus(int targetIsolate, boolean value) {
+    	if (!m_isolateStatus.containsKey(targetIsolate)) {
+    		PlayerSessionIsolateStatus status = new PlayerSessionIsolateStatus();
+    		status.m_isHalted = value;
+    		m_isolateStatus.put(targetIsolate, status);    		
+    	}
+    	else {
+    		m_isolateStatus.get(targetIsolate).m_isHalted = value;
+    	}
+	}
+
+	/**
      * A background thread which wakes up periodically and fetches the SWF and SWD
      * from the Player for new movies that have loaded.  It then uses these to create
 	 * an instance of MovieMetaData (a class shared with the Profiler) from which
@@ -2191,108 +2383,114 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
     public void run()
     {
     	long last = 0;
-		while(isConnected())
-		{
-			// try every 250ms
-			try { Thread.sleep(250); } catch(InterruptedException ie) {}
-
-			try
-			{
-				// let's make sure that the traffic level is low before
-				// we do our requests.
-				long current = m_protocol.messagesReceived();
-				long delta = last - current;
-				last = current;
-
-				// if the last message that went out was not responded to
-				// or we are not suspended and have high traffic
-				// then wait for later.
-				if (!m_lastResponse || (!isSuspended() && delta > 5))
-					throw new NotSuspendedException();
-
-				// we are either suspended or low enough traffic
-
-				// get the list of swfs we have
-				int count = m_manager.getSwfInfoCount();
-				for(int i=0; i<count; i++)
-				{
-					DSwfInfo info = m_manager.getSwfInfo(i);
-
-					// no need to process if it's been removed
-					if (info == null || info.isUnloaded() || info.isPopulated() || (info.getVmVersion() > 0) )
-						continue;
-
-					// see if the swd has been loaded, throws exception if unable to load it.
-					// Also triggers a callback into the info object to freshen its contents
-					// if successful
-					info.getSwdSize(this);
-
-                    // check since our vm version info could get updated in between.
-                    if (info.getVmVersion() > 0)
-                    {
-                        // mark it populated if we haven't already done so
-                        info.setPopulated();
-                        continue;
-                    }
-
-					// so by this point we know that we've got good swd data,
-					// or we've made too many attempts and gave up.
-					if (!info.isSwdLoading() && !info.isUnloaded())
-					{
-						// now load the swf, if we haven't already got it
-						if (info.getSwf() == null && !info.isUnloaded())
-							info.setSwf(requestSwf(i));
-
-						// only get the swd if we haven't got it
-						if (info.getSwd() == null && !info.isUnloaded())
-							info.setSwd(requestSwd(i));
-
-						try
-						{
-							// now go populate the functions tables...
-							if (!info.isUnloaded())
-								info.parseSwfSwd(m_manager);
-						}
-						catch(Throwable e)
-						{
-							// oh this is not good and means that we should probably
-							// give up.
-							if (Trace.error)
-							{
-								Trace.trace("Error while parsing swf/swd '"+info.getUrl()+"'. Giving up and marking it processed"); //$NON-NLS-1$ //$NON-NLS-2$
-								e.printStackTrace();
-							}
-
-							info.setPopulated();
-						}
-					}
-				}
-			}
-			catch(InProgressException ipe)
-			{
-				// swd is still loading so give us a bit of
-				// time and then come back and try again
-			}
-			catch(NoResponseException nre)
-			{
-				// timed out on one of our requests so don't bother
-				// continuing right now,  try again later
-			}
-			catch(NotSuspendedException nse)
-			{
-				// probably want to wait until we are halted before
-				// doing this heavy action
-			}
-			catch(Exception e)
-			{
-				// maybe not good
-				if (Trace.error)
-				{
-					Trace.trace("Exception in background swf/swd processing thread"); //$NON-NLS-1$
-					e.printStackTrace();
-				}
-			}
-		}
+    	while(isConnected())
+    	{
+    		// try every 250ms
+    		try { Thread.sleep(250); } catch(InterruptedException ie) {}
+
+    		try
+    		{
+    			// let's make sure that the traffic level is low before
+    			// we do our requests.
+    			long current = m_protocol.messagesReceived();
+    			long delta = last - current;
+    			last = current;
+
+    			// if the last message that went out was not responded to
+    			// or we are not suspended and have high traffic
+    			// then wait for later.
+    			if (!m_lastResponse || (!isSuspended() && delta > 5))
+    				throw new NotSuspendedException();
+
+    			// we are either suspended or low enough traffic
+
+    			// get the list of swfs we have
+    			for (Isolate isolate : m_manager.getIsolates()) {
+    				int isolateId = isolate.getId();
+    				if (isolateId != Isolate.DEFAULT_ID && !isWorkerSuspended(isolateId) && delta > 5) {
+    					throw new NotSuspendedException();
+    				}
+    				int count = m_manager.getSwfInfoCount(isolateId);
+    				for(int i=0; i<count; i++)
+    				{
+    					DSwfInfo info = m_manager.getSwfInfo(i, isolateId);
+
+    					// no need to process if it's been removed
+    					if (info == null || info.isUnloaded() || info.isPopulated() || (info.getVmVersion() > 0) )
+    						continue;
+
+    					// see if the swd has been loaded, throws exception if unable to load it.
+    					// Also triggers a callback into the info object to freshen its contents
+    					// if successful
+    					//FIXME: remove sysout
+    					info.getSwdSize(this);
+    					// check since our vm version info could get updated in between.
+    					if (info.getVmVersion() > 0)
+    					{
+    						// mark it populated if we haven't already done so
+    						info.setPopulated();
+    						continue;
+    					}
+
+    					// so by this point we know that we've got good swd data,
+    					// or we've made too many attempts and gave up.
+    					if (!info.isSwdLoading() && !info.isUnloaded())
+    					{
+    						// now load the swf, if we haven't already got it
+    						if (info.getSwf() == null && !info.isUnloaded())
+    							info.setSwf(requestSwf(i));
+
+    						// only get the swd if we haven't got it
+    						if (info.getSwd() == null && !info.isUnloaded())
+    							info.setSwd(requestSwd(i));
+
+    						try
+    						{
+    							// now go populate the functions tables...
+    							if (!info.isUnloaded())
+    								info.parseSwfSwd(m_manager);
+    						}
+    						catch(Throwable e)
+    						{
+    							// oh this is not good and means that we should probably
+    							// give up.
+    							if (Trace.error)
+    							{
+    								Trace.trace("Error while parsing swf/swd '"+info.getUrl()+"'. Giving up and marking it processed"); //$NON-NLS-1$ //$NON-NLS-2$
+    								e.printStackTrace();
+    							}
+
+    							info.setPopulated();
+    						}
+    					}
+    				}
+    			}
+    		}
+    		catch(InProgressException ipe)
+    		{
+    			// swd is still loading so give us a bit of
+    			// time and then come back and try again
+    		}
+    		catch(NoResponseException nre)
+    		{
+    			// timed out on one of our requests so don't bother
+    			// continuing right now,  try again later
+    		}
+    		catch(NotSuspendedException nse)
+    		{
+    			// probably want to wait until we are halted before
+    			// doing this heavy action
+    		}
+    		catch(Exception e)
+    		{
+    			// maybe not good
+    			if (Trace.error)
+    			{
+    				Trace.trace("Exception in background swf/swd processing thread"); //$NON-NLS-1$
+    				e.printStackTrace();
+    			}
+    		}
+    	}
     }
 
 	byte[] requestSwf(int index) throws NoResponseException
@@ -2341,8 +2539,9 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	{
 		try
 		{
-			if (m_debugMsgOn)
+			if (m_debugMsgOn) {
 				System.out.println( (in) ? dm.inToString(m_debugMsgSize) : dm.outToString(m_debugMsgSize) );
+			}
 
 			if (m_debugMsgFileOn)
 			{
@@ -2356,6 +2555,7 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 
 	// i/o for tracing
     java.io.Writer m_trace;
+	
 
 	java.io.Writer traceFile() throws IOException
 	{
@@ -2369,7 +2569,7 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 
 				// java properties dump
 				java.util.Properties props = System.getProperties();
-				props.list(new java.io.PrintWriter(m_trace));
+				props.list(new PrintWriter(m_trace));
 
 				m_trace.write(s_newline);
 
@@ -2403,61 +2603,90 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 	}
 
 	public void breakOnCaughtExceptions(boolean b) throws NotSupportedException, NoResponseException {
-		if (!playerCanBreakOnAllExceptions())
+		breakOnCaughtExceptions(b, Isolate.DEFAULT_ID);
+	}
+	
+	public void breakOnCaughtExceptions(boolean b, int isolateId) throws NotSupportedException, NoResponseException {
+		if (!playerCanBreakOnAllExceptions(isolateId))
 			throw new NotSupportedException(PlayerSessionManager.getLocalizationManager().getLocalizedTextString("exceptionBreakpointsNotSupported")); //$NON-NLS-1$
 
 		DMessage dm = DMessageCache.alloc(1);
 		dm.setType(DMessage.OutPassAllExceptionsToDebugger);
 		dm.putByte((byte)(b ? 1 : 0));
-		sendMessage(dm);
+		dm.setTargetIsolate(isolateId);
+		/* TODO: Verify that sendMessage below is a bug */
+//		sendMessage(dm);
 		if (!simpleRequestResponseMessage(dm, DMessage.InPassAllExceptionsToDebugger))
 			throw new NoResponseException(getPreference(SessionManager.PREF_RESPONSE_TIMEOUT));
 	}
 
+
 	public boolean evalIs(Value value, Value type) throws PlayerDebugException, PlayerFaultException
 	{
-		return evalIsOrInstanceof(BinaryOp.Is, value, type);
+		return evalIsOrInstanceof(BinaryOp.Is, value, type, Isolate.DEFAULT_ID);
 	}
 
 	public boolean evalIs(Value value, String type) throws PlayerDebugException, PlayerFaultException
 	{
-		return evalIsOrInstanceof(BinaryOp.Is, value, type);
+		return evalIsOrInstanceof(BinaryOp.Is, value, type, Isolate.DEFAULT_ID);
 	}
 
 	public boolean evalInstanceof(Value value, Value type) throws PlayerDebugException, PlayerFaultException
 	{
-		return evalIsOrInstanceof(BinaryOp.Instanceof, value, type);
+		return evalIsOrInstanceof(BinaryOp.Instanceof, value, type, Isolate.DEFAULT_ID);
 	}
 
 	public boolean evalInstanceof(Value value, String type) throws PlayerDebugException, PlayerFaultException
 	{
-		return evalIsOrInstanceof(BinaryOp.Instanceof, value, type);
+		return evalIsOrInstanceof(BinaryOp.Instanceof, value, type, Isolate.DEFAULT_ID);
+	}
+	
+	// isolate version
+	
+	public boolean evalIsWorker(Value value, Value type, int isolateId) throws PlayerDebugException, PlayerFaultException
+	{
+		return evalIsOrInstanceof(BinaryOp.Is, value, type, isolateId);
 	}
 
-	private boolean evalIsOrInstanceof(BinaryOp op, Value value, Value type) throws PlayerDebugException, PlayerFaultException
+	public boolean evalIsWorker(Value value, String type, int isolateId) throws PlayerDebugException, PlayerFaultException
 	{
-		String key = value.getTypeName() + " " + op + " " + type.getTypeName(); //$NON-NLS-1$ //$NON-NLS-2$
+		return evalIsOrInstanceof(BinaryOp.Is, value, type, isolateId);
+	}
+
+	public boolean evalInstanceofWorker(Value value, Value type, int isolateId) throws PlayerDebugException, PlayerFaultException
+	{
+		return evalIsOrInstanceof(BinaryOp.Instanceof, value, type, isolateId);
+	}
+
+	public boolean evalInstanceofWorker(Value value, String type, int isolateId) throws PlayerDebugException, PlayerFaultException
+	{
+		return evalIsOrInstanceof(BinaryOp.Instanceof, value, type, isolateId);
+	}
+
+	private boolean evalIsOrInstanceof(BinaryOp op, Value value, Value type, int isolateId) throws PlayerDebugException, PlayerFaultException
+	{
+		String key = value.getTypeName() + " " + op + " " + type.getTypeName() + " " + String.valueOf(isolateId); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 		Boolean retval = m_evalIsAndInstanceofCache.get(key);
 		if (retval == null)
 		{
-			retval = new Boolean(ECMA.toBoolean(evalBinaryOp(op, value, type)));
+			retval = new Boolean(ECMA.toBoolean(evalBinaryOp(op, value, type, isolateId)));
 			m_evalIsAndInstanceofCache.put(key, retval);
 		}
 
 		return retval.booleanValue();
 	}
 
-	private boolean evalIsOrInstanceof(BinaryOp op, Value value, String type) throws PlayerDebugException, PlayerFaultException
+	private boolean evalIsOrInstanceof(BinaryOp op, Value value, String type, int isolateId) throws PlayerDebugException, PlayerFaultException
 	{
-		String key = value.getTypeName() + " " + op + " " + type; //$NON-NLS-1$ //$NON-NLS-2$
+		String key = value.getTypeName() + " " + op + " " + type + " " + String.valueOf(isolateId); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 		Boolean retval = m_evalIsAndInstanceofCache.get(key);
 		if (retval == null)
 		{
-			Value typeval = getGlobal(type);
+			Value typeval = getGlobalWorker(type, isolateId);
 			if (typeval == null)
 				retval = Boolean.FALSE;
 			else
-				retval = new Boolean(ECMA.toBoolean(evalBinaryOp(op, value, typeval)));
+				retval = new Boolean(ECMA.toBoolean(evalBinaryOp(op, value, typeval, isolateId)));
 			m_evalIsAndInstanceofCache.put(key, retval);
 		}
 
@@ -2466,19 +2695,19 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 
 	public boolean evalIn(Value property, Value object) throws PlayerDebugException, PlayerFaultException
 	{
-		return ECMA.toBoolean(evalBinaryOp(BinaryOp.In, property, object));
+		return ECMA.toBoolean(evalBinaryOp(BinaryOp.In, property, object, Isolate.DEFAULT_ID));
 	}
 
 	public Value evalAs(Value value, Value type) throws PlayerDebugException, PlayerFaultException {
-		return evalBinaryOp(BinaryOp.As, value, type);
+		return evalBinaryOp(BinaryOp.As, value, type, Isolate.DEFAULT_ID);
 	}
 
-	private Value evalBinaryOp(BinaryOp op, Value lhs, Value rhs) throws PlayerDebugException, PlayerFaultException
+	private Value evalBinaryOp(BinaryOp op, Value lhs, Value rhs, int isolateId) throws PlayerDebugException, PlayerFaultException
 	{
-		if (!isSuspended())
+		if (!isWorkerSuspended(isolateId))
 			throw new NotSuspendedException();
 
-		if (!playerCanCallFunctions())
+		if (!playerCanCallFunctions(isolateId))
 		{
 			Map<String,String> parameters = new HashMap<String,String>();
 			parameters.put("operator", op.getName()); //$NON-NLS-1$
@@ -2489,10 +2718,11 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 		int id = (int) (Math.random() * 65536); // good 'nuff
 		DMessage dm = buildBinaryOpMessage(id, op, lhs, rhs);
 
-		m_manager.clearLastBinaryOp();
+		dm.setTargetIsolate(isolateId);
+		m_manager.clearLastBinaryOp(isolateId);
 
 		// make sure any exception gets held onto
-		m_manager.beginPlayerCodeExecution();
+		m_manager.beginPlayerCodeExecution(isolateId);
 
 		// TODO wrong timeout
 		int timeout = getPreference(SessionManager.PREF_GETVAR_RESPONSE_TIMEOUT);
@@ -2501,20 +2731,20 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 		boolean result = simpleRequestResponseMessage(dm, DMessage.InBinaryOp, timeout);
 
 		// tell manager we're done; ignore returned FaultEvent
-		m_manager.endPlayerCodeExecution();
+		m_manager.endPlayerCodeExecution(isolateId);
 
 		if (!result)
 			throw new NoResponseException(timeout);
 
-		DVariable lastBinaryOp = m_manager.lastBinaryOp();
+		DVariable lastBinaryOp = m_manager.lastBinaryOp(isolateId);
 		Value v;
 		if (lastBinaryOp != null)
 			v = lastBinaryOp.getValue();
 		else
-			v = DValue.forPrimitive(Value.UNDEFINED);
+			v = DValue.forPrimitive(Value.UNDEFINED, isolateId);
 
 		if (v.isAttributeSet(ValueAttribute.IS_EXCEPTION))
-			throw new PlayerFaultException(new ExceptionFault(v.getValueAsString(), false, v));
+			throw new PlayerFaultException(new ExceptionFault(v.getValueAsString(), false, v, isolateId));
 
 		return v;
 	}
@@ -2560,4 +2790,280 @@ public class PlayerSession implements Session, DProtocolNotifierIF, Runnable
 		return null;
 	}
 
+	/* (non-Javadoc)
+	 * @see flash.tools.debugger.Session#refreshIsolates()
+	 */
+	public Isolate[] refreshWorkers() throws NotSupportedException,
+			NotSuspendedException, NoResponseException, NotConnectedException {
+		if (!supportsConcurrency()) {
+			throw new NotSupportedException(PlayerSessionManager.getLocalizationManager().getLocalizedTextString("concurrencyNotSupported")); //$NON-NLS-1$
+		}
+		if (!isSuspended())
+			throw new NotSuspendedException();
+		
+		boolean response = simpleRequestResponseMessage(DMessage.OutIsolateEnumerate, DMessage.InIsolateEnumerate);
+		
+		if (response) {
+			return m_manager.getIsolates();
+		}
+		return null;
+	}
+
+	private Isolate getActiveIsolate() {
+		return m_manager.getActiveIsolate();
+	}
+
+	@Override
+	public Isolate[] getWorkers() {
+		return m_manager.getIsolates();
+	}
+
+	@Override
+	public void resumeWorker(int isolateId) throws NotSuspendedException,
+			NotConnectedException, NoResponseException {
+		if (!isWorkerSuspended(isolateId))
+			throw new NotSuspendedException();
+
+		if (!simpleRequestResponseMessageIsolate(DMessage.OutContinue, DMessage.InContinue, isolateId))
+			throw new NoResponseException(getPreference(SessionManager.PREF_RESPONSE_TIMEOUT));
+	}
+
+	@Override
+	public int suspendReasonWorker(int isolateId) throws NotConnectedException {
+		DSuspendInfo info = getSuspendInfoIsolate(isolateId);
+		return info.getReason();
+	}
+	
+	public DSuspendInfo getSuspendInfoIsolate(int isolateId)
+	{
+		DSuspendInfo info = m_manager.getSuspendInfo(isolateId);
+		if (info == null)
+		{
+			if (simpleRequestResponseMessageIsolate(DMessage.OutGetBreakReason, DMessage.InBreakReason, isolateId))
+				info = m_manager.getSuspendInfo(isolateId);
+
+			// if we still can't get any info from the manager...
+			if (info == null)
+				info = new DSuspendInfo();  // empty unknown break information
+		}
+		return info;
+	}
+
+	@Override
+	public void stepContinueWorker(int isolateId)
+			throws NotSuspendedException, NoResponseException,
+			NotConnectedException {
+		if (!isWorkerSuspended(isolateId))
+			throw new NotSuspendedException();
+
+		// send a step-continue message and then wait for the Flash player to tell us that is has
+		// resumed execution
+		if (!simpleRequestResponseMessageIsolate(DMessage.OutStepContinue, DMessage.InContinue, isolateId))
+			throw new NoResponseException(getPreference(SessionManager.PREF_RESPONSE_TIMEOUT));
+	}
+
+	@Override
+	public Location setBreakpointWorker(int fileId, int lineNum, int isolateId)
+			throws NoResponseException, NotConnectedException {
+		/* send the message to the player and await a response */
+		Location l = null;
+		int bp = DLocation.encodeId(fileId, lineNum);
+		int wideLineSize = 0;
+		if (supportsWideLineNumbers())
+			wideLineSize = 4;
+		DMessage dm = DMessageCache.alloc(8 + wideLineSize);
+		dm.setType(DMessage.OutSetBreakpoints);
+		dm.putDWord(1);
+		if (!supportsWideLineNumbers())
+			dm.putDWord(bp);
+		else {
+			dm.putDWord(fileId);
+			dm.putDWord(lineNum);
+		}
+
+		boolean gotResponse = simpleRequestResponseMessageIsolate(dm, DMessage.InSetBreakpoint, isolateId);
+		if(gotResponse)
+		{
+			/* even though we think we got an answer check that the breakpoint was added */
+			l = m_manager.getBreakpoint(bp, isolateId);
+		}
+		else
+			throw new NoResponseException(getPreference(SessionManager.PREF_RESPONSE_TIMEOUT));
+
+		return l;
+	}
+
+	@Override
+	public Frame[] getFramesWorker(int isolateId) throws NotConnectedException {
+		return m_manager.getFrames(isolateId);		
+	}
+
+	@Override
+	public SwfInfo[] getSwfsWorker(int isolateId) throws NoResponseException {
+		int swfCount = 0;
+		swfCount = m_manager.getSwfInfoCount(isolateId);
+		if (swfCount == 0)
+		{
+			// need to help out on the first one since the player
+			// doesn't send it
+			requestSwfInfo(0, isolateId);
+		}
+		//SwfInfo[] swfs = m_manager.getSwfInfos();
+		
+		ArrayList<SwfInfo> swfList = new ArrayList<SwfInfo>(); 
+
+		for ( SwfInfo info : m_manager.getSwfInfos(isolateId) ) {
+			swfList.add(info);
+		}
+
+		return swfList.toArray(new SwfInfo[0]);
+	}
+
+	@Override
+	public void stepIntoWorker(int isolateId) throws NotSuspendedException,
+			NoResponseException, NotConnectedException {
+		if (isWorkerSuspended(isolateId))
+		{
+			// send a step-into message and then wait for the Flash player to tell us that is has
+			// resumed execution
+			if (!simpleRequestResponseMessageIsolate(DMessage.OutStepInto, DMessage.InContinue, isolateId))
+				throw new NoResponseException(getPreference(SessionManager.PREF_RESPONSE_TIMEOUT));
+		}
+		else
+			throw new NotSuspendedException();
+		
+	}
+
+	@Override
+	public void stepOutWorker(int isolateId) throws NotSuspendedException,
+			NoResponseException, NotConnectedException {
+		if (isWorkerSuspended(isolateId))
+		{
+			// send a step-out message and then wait for the Flash player to tell us that is has
+			// resumed execution
+			if (!simpleRequestResponseMessageIsolate(DMessage.OutStepOut, DMessage.InContinue, isolateId))
+				throw new NoResponseException(getPreference(SessionManager.PREF_RESPONSE_TIMEOUT));
+		}
+		else
+			throw new NotSuspendedException();
+		
+	}
+
+	@Override
+	public void stepOverWorker(int isolateId) throws NotSuspendedException,
+			NoResponseException, NotConnectedException {
+		if (isWorkerSuspended(isolateId))
+		{
+			// send a step-over message and then wait for the Flash player to tell us that is has
+			// resumed execution
+			if (!simpleRequestResponseMessageIsolate(DMessage.OutStepOver, DMessage.InContinue, isolateId))
+				throw new NoResponseException(getPreference(SessionManager.PREF_RESPONSE_TIMEOUT));
+		}
+		else
+			throw new NotSuspendedException();
+		
+	}
+
+	public boolean evalInWorker(Value property, Value object, int isolateId) throws PlayerDebugException, PlayerFaultException
+	{
+		return ECMA.toBoolean(evalBinaryOp(BinaryOp.In, property, object, isolateId));
+	}
+
+	public Value evalAsWorker(Value value, Value type, int isolateId) throws PlayerDebugException, PlayerFaultException {
+		return evalBinaryOp(BinaryOp.As, value, type, isolateId);
+	}
+
+	@Override
+	public void suspendWorker(int isolateId) throws SuspendedException,
+			NotConnectedException, NoResponseException {
+		// send a halt message
+		int wait = getPreference(SessionManager.PREF_SUSPEND_WAIT);
+ 		int every = 50; // wait this long for a response.  The lower the number the more aggressive we are!
+
+		if (isWorkerSuspended(isolateId))
+			throw new SuspendedException();
+
+		while (!isWorkerSuspended(isolateId) && wait > 0)
+		{
+			simpleRequestResponseMessageIsolate(DMessage.OutStopDebug, DMessage.InBreakAtExt, every, isolateId);
+			wait -= every;
+		}
+
+		if (!isWorkerSuspended(isolateId))
+			throw new NoResponseException(wait);	
+	}
+
+	@Override
+	public IsolateSession getWorkerSession(int isolateId) {
+		if (m_isolateSessions.containsKey(isolateId)) {
+			return m_isolateSessions.get(isolateId);
+		}
+		else {
+			IsolateSession workerSession = new IsolatePlayerSession(isolateId, this);
+			m_isolateSessions.put(isolateId, workerSession);
+			return workerSession;
+		}
+		
+	}
+	
+	public boolean setExceptionBreakpoint(String exceptionClass) throws NoResponseException, NotConnectedException {
+		return setExceptionBreakpointWorker(exceptionClass, Isolate.DEFAULT_ID);
+	}
+	
+	public boolean setExceptionBreakpointWorker(String exceptionClass, int isolateId) throws NoResponseException, NotConnectedException {
+		int messageSize = DMessage.getStringLength(exceptionClass) + 1;
+		
+		DMessage dm = DMessageCache.alloc(messageSize);
+		dm.setType(DMessage.OutSetExceptionBreakpoint);
+		dm.setTargetIsolate(isolateId);
+		try {
+			dm.putString(exceptionClass);
+		} catch (UnsupportedEncodingException e) {
+			// couldn't write out the string, so just terminate it and complete anyway
+			dm.putByte((byte)'\0');
+		}
+
+		boolean gotResponse = simpleRequestResponseMessageIsolate(dm, DMessage.InSetExceptionBreakpoint, isolateId);
+		if(gotResponse)
+		{
+			return true;
+		}
+		else
+			throw new NoResponseException(getPreference(SessionManager.PREF_RESPONSE_TIMEOUT));
+
+	}
+	
+	@Override
+	public boolean clearExceptionBreakpoint(String exceptionClass) throws NoResponseException, NotConnectedException {
+		return clearExceptionBreakpointWorker(exceptionClass, Isolate.DEFAULT_ID);
+	}
+
+	@Override
+	public boolean clearExceptionBreakpointWorker(String exceptionClass, int isolateId) throws NoResponseException, NotConnectedException {
+		int messageSize = DMessage.getStringLength(exceptionClass) + 1;
+		DMessage dm = DMessageCache.alloc(messageSize);
+		dm.setType(DMessage.OutRemoveExceptionBreakpoint);
+		dm.setTargetIsolate(isolateId);
+		try {
+			dm.putString(exceptionClass);
+		} catch (UnsupportedEncodingException e) {
+			// couldn't write out the string, so just terminate it and complete anyway
+			dm.putByte((byte)'\0');
+		}
+
+		boolean gotResponse = simpleRequestResponseMessageIsolate(dm, DMessage.InRemoveExceptionBreakpoint, isolateId);
+		if(gotResponse)
+		{
+			return true;
+		}
+		else
+			throw new NoResponseException(getPreference(SessionManager.PREF_RESPONSE_TIMEOUT));
+
+	}
+
+	@Override
+	public void setLauncher(ILauncher launcher) {
+		this.launcher = launcher;
+	}
+
 }

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/concrete/PlayerSessionIsolateStatus.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/concrete/PlayerSessionIsolateStatus.java b/modules/debugger/src/java/flash/tools/debugger/concrete/PlayerSessionIsolateStatus.java
new file mode 100644
index 0000000..96700cb
--- /dev/null
+++ b/modules/debugger/src/java/flash/tools/debugger/concrete/PlayerSessionIsolateStatus.java
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package flash.tools.debugger.concrete;
+
+public class PlayerSessionIsolateStatus {
+
+	/**
+	 * Corresponding to playersession::m_isHalted, but for isolate.
+	 */
+	public boolean m_isHalted;
+}

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/events/BreakEvent.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/events/BreakEvent.java b/modules/debugger/src/java/flash/tools/debugger/events/BreakEvent.java
index 7436434..7a88fc0 100644
--- a/modules/debugger/src/java/flash/tools/debugger/events/BreakEvent.java
+++ b/modules/debugger/src/java/flash/tools/debugger/events/BreakEvent.java
@@ -1,24 +1,24 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger.events;
 
+import flash.tools.debugger.Isolate;
+
 /**
  * Break event is received when the player halts execution
  */
@@ -29,10 +29,19 @@ public class BreakEvent extends DebugEvent
 
 	/** line number in the source file where the Player has suspended. */
 	public int line;
+	
+	public int isolateId;
 
 	public BreakEvent(int fId, int l)
 	{
 		fileId = fId;
 		line = l;
+		isolateId = Isolate.DEFAULT_ID;
+	}
+	
+	public BreakEvent(int fId, int l, int isolate)
+	{
+		this(fId, l);
+		isolateId = isolate;
 	}
 }


[10/15] FLEX-34291: Merge the donated FDB with the current one.

Posted by ft...@apache.org.
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/events/ConsoleErrorFault.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/events/ConsoleErrorFault.java b/modules/debugger/src/java/flash/tools/debugger/events/ConsoleErrorFault.java
index ef23021..bc86d76 100644
--- a/modules/debugger/src/java/flash/tools/debugger/events/ConsoleErrorFault.java
+++ b/modules/debugger/src/java/flash/tools/debugger/events/ConsoleErrorFault.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger.events;
@@ -26,7 +24,8 @@ public class ConsoleErrorFault extends FaultEvent
 {
 	public final static String name = "console_error";  //$NON-NLS-1$
 
-	public ConsoleErrorFault(String s) { super(s); }
+	public ConsoleErrorFault(String s, int isolateId) { super(s, isolateId); }
 
+	@Override
 	public String name() { return name; }
 }

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/events/DivideByZeroFault.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/events/DivideByZeroFault.java b/modules/debugger/src/java/flash/tools/debugger/events/DivideByZeroFault.java
index 898f122..3b1830a 100644
--- a/modules/debugger/src/java/flash/tools/debugger/events/DivideByZeroFault.java
+++ b/modules/debugger/src/java/flash/tools/debugger/events/DivideByZeroFault.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger.events;
@@ -24,7 +22,12 @@ package flash.tools.debugger.events;
  */
 public class DivideByZeroFault extends FaultEvent
 {
+	public DivideByZeroFault(int isolateId) {
+		super(isolateId);
+	}
+
 	public final static String name = "zero_divide";  //$NON-NLS-1$
 
+	@Override
 	public String name() { return name; }	
 }

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/events/ExceptionFault.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/events/ExceptionFault.java b/modules/debugger/src/java/flash/tools/debugger/events/ExceptionFault.java
index 78a8c5e..2ac3457 100644
--- a/modules/debugger/src/java/flash/tools/debugger/events/ExceptionFault.java
+++ b/modules/debugger/src/java/flash/tools/debugger/events/ExceptionFault.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger.events;
@@ -30,13 +28,14 @@ public class ExceptionFault extends FaultEvent
 	private final boolean m_willExceptionBeCaught;
 	private final Value m_thrownValue;
 
-	public ExceptionFault(String message, boolean willExceptionBeCaught, Value thrownValue)
+	public ExceptionFault(String message, boolean willExceptionBeCaught, Value thrownValue, int isolateId)
 	{
-		super(message);
+		super(message, isolateId);
 		m_willExceptionBeCaught = willExceptionBeCaught;
 		m_thrownValue = thrownValue;
 	}
 
+	@Override
 	public String name()
 	{
 		return name;

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/events/FaultEvent.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/events/FaultEvent.java b/modules/debugger/src/java/flash/tools/debugger/events/FaultEvent.java
index 9c2d5ae..0996618 100644
--- a/modules/debugger/src/java/flash/tools/debugger/events/FaultEvent.java
+++ b/modules/debugger/src/java/flash/tools/debugger/events/FaultEvent.java
@@ -1,24 +1,24 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger.events;
 
+import flash.tools.debugger.Isolate;
+
 /**
  * An event type that signals a problem situation within the Player.
  * Under normal conditions the Player will suspend execution, resulting
@@ -29,18 +29,27 @@ package flash.tools.debugger.events;
 public abstract class FaultEvent extends DebugEvent
 {
 	private String stackTrace = ""; //$NON-NLS-1$
-
-	public FaultEvent(String info)
+	public int isolateId = Isolate.DEFAULT_ID; 
+	
+	
+	public FaultEvent(String info, int isolateId)
 	{
 		super(getFirstLine(info));
+		this.isolateId = isolateId;
 		int newline = info.indexOf('\n');
 		if (newline != -1)
 			stackTrace = info.substring(newline+1);
 	}
 
-	public FaultEvent()
+//	public FaultEvent()
+//	{
+//		super();
+//	}
+	
+	public FaultEvent(int isolateId)
 	{
 		super();
+		this.isolateId = isolateId;
 	}
 
 	public abstract String name();

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/events/InvalidTargetFault.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/events/InvalidTargetFault.java b/modules/debugger/src/java/flash/tools/debugger/events/InvalidTargetFault.java
index 439115c..5159e22 100644
--- a/modules/debugger/src/java/flash/tools/debugger/events/InvalidTargetFault.java
+++ b/modules/debugger/src/java/flash/tools/debugger/events/InvalidTargetFault.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger.events;
@@ -27,7 +25,8 @@ public class InvalidTargetFault extends FaultEvent
 {
 	public final static String name = "invalid_target";  //$NON-NLS-1$
 
-	public InvalidTargetFault(String target) { super(target); }
+	public InvalidTargetFault(String target, int isolateId) { super(target, isolateId); }
 
+	@Override
 	public String name() { return name; }	
 }

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/events/InvalidURLFault.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/events/InvalidURLFault.java b/modules/debugger/src/java/flash/tools/debugger/events/InvalidURLFault.java
index 4f992b8..56f09f1 100644
--- a/modules/debugger/src/java/flash/tools/debugger/events/InvalidURLFault.java
+++ b/modules/debugger/src/java/flash/tools/debugger/events/InvalidURLFault.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger.events;
@@ -26,7 +24,8 @@ public class InvalidURLFault extends FaultEvent
 {
 	public final static String name = "invalid_url";  //$NON-NLS-1$
 
-	public InvalidURLFault(String url) { super(url); }
+	public InvalidURLFault(String url, int isolateId) { super(url, isolateId); }
 
+	@Override
 	public String name() { return name; }	
 }

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/events/InvalidWithFault.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/events/InvalidWithFault.java b/modules/debugger/src/java/flash/tools/debugger/events/InvalidWithFault.java
index f0e5c19..64474de 100644
--- a/modules/debugger/src/java/flash/tools/debugger/events/InvalidWithFault.java
+++ b/modules/debugger/src/java/flash/tools/debugger/events/InvalidWithFault.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger.events;
@@ -25,7 +23,12 @@ package flash.tools.debugger.events;
  */
 public class InvalidWithFault extends FaultEvent
 {
+	public InvalidWithFault(int isolateId) {
+		super(isolateId);
+	}
+
 	public final static String name = "invalid_with";  //$NON-NLS-1$
 
+	@Override
 	public String name() { return name; }	
 }

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/events/IsolateCreateEvent.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/events/IsolateCreateEvent.java b/modules/debugger/src/java/flash/tools/debugger/events/IsolateCreateEvent.java
new file mode 100644
index 0000000..bd9e328
--- /dev/null
+++ b/modules/debugger/src/java/flash/tools/debugger/events/IsolateCreateEvent.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package flash.tools.debugger.events;
+
+import flash.tools.debugger.Isolate;
+
+/**
+ * IsolateCreateEvent is received when the player
+ * creates a worker.
+ * @author anirudhs
+ */
+public class IsolateCreateEvent extends DebugEvent {
+	
+	/* The isolate that was created */
+	public Isolate isolate;
+	
+	public IsolateCreateEvent() {
+		isolate = null;
+	}
+	
+	public IsolateCreateEvent(Isolate t) {
+		isolate = t;
+	}
+}

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/events/IsolateExitEvent.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/events/IsolateExitEvent.java b/modules/debugger/src/java/flash/tools/debugger/events/IsolateExitEvent.java
new file mode 100644
index 0000000..dd910ff
--- /dev/null
+++ b/modules/debugger/src/java/flash/tools/debugger/events/IsolateExitEvent.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package flash.tools.debugger.events;
+
+import flash.tools.debugger.Isolate;
+
+/**
+ * IsolateExitEvent is received when the player stops
+ * a worker.
+ * @author anirudhs
+ */
+public class IsolateExitEvent extends DebugEvent {
+	
+	/* The isolate that exited */
+	public Isolate isolate;
+	
+	public IsolateExitEvent() {
+		isolate = null;
+	}
+	
+	public IsolateExitEvent(Isolate t) {
+		isolate = t;
+	}
+}

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/events/ProtoLimitFault.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/events/ProtoLimitFault.java b/modules/debugger/src/java/flash/tools/debugger/events/ProtoLimitFault.java
index f09d948..4e26547 100644
--- a/modules/debugger/src/java/flash/tools/debugger/events/ProtoLimitFault.java
+++ b/modules/debugger/src/java/flash/tools/debugger/events/ProtoLimitFault.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger.events;
@@ -25,7 +23,12 @@ package flash.tools.debugger.events;
  */
 public class ProtoLimitFault extends FaultEvent
 {
+	public ProtoLimitFault(int isolateId) {
+		super(isolateId);
+	}
+
 	public final static String name = "proto_limit";  //$NON-NLS-1$
 
+	@Override
 	public String name() { return name; }	
 }

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/events/RecursionLimitFault.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/events/RecursionLimitFault.java b/modules/debugger/src/java/flash/tools/debugger/events/RecursionLimitFault.java
index 1449272..683e13d 100644
--- a/modules/debugger/src/java/flash/tools/debugger/events/RecursionLimitFault.java
+++ b/modules/debugger/src/java/flash/tools/debugger/events/RecursionLimitFault.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger.events;
@@ -24,7 +22,12 @@ package flash.tools.debugger.events;
  */
 public class RecursionLimitFault extends FaultEvent
 {
+	public RecursionLimitFault(int isolateId) {
+		super(isolateId);
+	}
+
 	public final static String name = "recursion_limit";  //$NON-NLS-1$
 
+	@Override
 	public String name() { return name; }	
 }

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/events/ScriptTimeoutFault.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/events/ScriptTimeoutFault.java b/modules/debugger/src/java/flash/tools/debugger/events/ScriptTimeoutFault.java
index b903794..0ed2fb7 100644
--- a/modules/debugger/src/java/flash/tools/debugger/events/ScriptTimeoutFault.java
+++ b/modules/debugger/src/java/flash/tools/debugger/events/ScriptTimeoutFault.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger.events;
@@ -24,7 +22,12 @@ package flash.tools.debugger.events;
  */
 public class ScriptTimeoutFault extends FaultEvent
 {
+	public ScriptTimeoutFault(int isolateId) {
+		super(isolateId);
+	}
+
 	public final static String name = "script_timeout";  //$NON-NLS-1$
 
+	@Override
 	public String name() { return name; }	
 }

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/events/StackUnderFlowFault.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/events/StackUnderFlowFault.java b/modules/debugger/src/java/flash/tools/debugger/events/StackUnderFlowFault.java
index 73ec0a1..ce83e12 100644
--- a/modules/debugger/src/java/flash/tools/debugger/events/StackUnderFlowFault.java
+++ b/modules/debugger/src/java/flash/tools/debugger/events/StackUnderFlowFault.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger.events;
@@ -24,7 +22,12 @@ package flash.tools.debugger.events;
  */
 public class StackUnderFlowFault extends FaultEvent
 {
+	public StackUnderFlowFault(int isolateId) {
+		super(isolateId);
+	}
+
 	public final static String name = "stack_underflow";  //$NON-NLS-1$
 
+	@Override
 	public String name() { return name; }	
 }

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/expression/Context.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/expression/Context.java b/modules/debugger/src/java/flash/tools/debugger/expression/Context.java
index d1f84e3..5f3b346 100644
--- a/modules/debugger/src/java/flash/tools/debugger/expression/Context.java
+++ b/modules/debugger/src/java/flash/tools/debugger/expression/Context.java
@@ -120,4 +120,9 @@ public interface Context
 	 * beginning a debugging session.
 	 */
 	public Session getSession();
+
+    /**
+     * The worker id to which this context object belongs.
+     */
+    public int getIsolateId();
 }

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/expression/DebuggerEvaluator.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/expression/DebuggerEvaluator.java b/modules/debugger/src/java/flash/tools/debugger/expression/DebuggerEvaluator.java
index 97302ba..cfeb66a 100644
--- a/modules/debugger/src/java/flash/tools/debugger/expression/DebuggerEvaluator.java
+++ b/modules/debugger/src/java/flash/tools/debugger/expression/DebuggerEvaluator.java
@@ -420,7 +420,7 @@ class DebuggerEvaluator implements Evaluator
 
 		flash.tools.debugger.Value thisObject = cx.toValue();
 		if (thisObject == null)
-			thisObject = DValue.forPrimitive(null);
+			thisObject = DValue.forPrimitive(null, 0);
 
 		flash.tools.debugger.Value[] valueArgs = new flash.tools.debugger.Value[args.length];
 		for (int i = 0; i < args.length; ++i) {
@@ -432,7 +432,7 @@ class DebuggerEvaluator implements Evaluator
 			 */
 			flash.tools.debugger.Value tempValue = cx.toValue(args[i]);
 			if ( tempValue == null ) {
-				tempValue = DValue.forPrimitive(null);
+				tempValue = DValue.forPrimitive(null, 0);
 			}
 			valueArgs[i] = tempValue;	
 		}			
@@ -774,7 +774,7 @@ class DebuggerEvaluator implements Evaluator
 					flash.tools.debugger.Value xml1 = session.callFunction(v1, "toXMLString", new flash.tools.debugger.Value[0]); //$NON-NLS-1$
 					flash.tools.debugger.Value xml2 = session.callFunction(v2, "toXMLString", new flash.tools.debugger.Value[0]); //$NON-NLS-1$
 					String allXML = xml1.getValueAsString() + xml2.getValueAsString();
-					flash.tools.debugger.Value allXMLValue = DValue.forPrimitive(allXML);
+					flash.tools.debugger.Value allXMLValue = DValue.forPrimitive(allXML, 0);
 					flash.tools.debugger.Value retval = session.callConstructor("XMLList", new flash.tools.debugger.Value[] { allXMLValue }); //$NON-NLS-1$
 					return new DebuggerValue(retval);
 				}
@@ -785,8 +785,8 @@ class DebuggerEvaluator implements Evaluator
 			}
 			else
 			{
-				v1 = ECMA.toPrimitive(session, v1, null);
-				v2 = ECMA.toPrimitive(session, v2, null);
+				v1 = ECMA.toPrimitive(session, v1, null, 0);
+				v2 = ECMA.toPrimitive(session, v2, null, 0);
 				if (v1.getType() == VariableType.STRING || v2.getType() == VariableType.STRING)
 				{
 					return new DebuggerValue(ECMA.toString(session, v1) + ECMA.toString(session, v2));

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/expression/ECMA.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/expression/ECMA.java b/modules/debugger/src/java/flash/tools/debugger/expression/ECMA.java
index 536aea4..39c3308 100644
--- a/modules/debugger/src/java/flash/tools/debugger/expression/ECMA.java
+++ b/modules/debugger/src/java/flash/tools/debugger/expression/ECMA.java
@@ -1,23 +1,22 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 package flash.tools.debugger.expression;
 
+import flash.tools.debugger.Isolate;
 import flash.tools.debugger.PlayerDebugException;
 import flash.tools.debugger.Session;
 import flash.tools.debugger.Value;
@@ -45,19 +44,19 @@ public class ECMA
 	 */
 	public static boolean isPrimitive(Value v)
 	{
-		v = safeValue(v);
+		v = safeValue(v, Isolate.DEFAULT_ID);
 		Object o = v.getValueAsObject();
 		return (o == Value.UNDEFINED || o == null || o instanceof Boolean
 				|| o instanceof Double || o instanceof String);
 	}
 
-	private static Value callFunction(Session session, Value v, String functionName, Value[] args)
+	private static Value callFunction(Session session, Value v, String functionName, Value[] args, int isolateId)
 	{
-		v = safeValue(v);
+		v = safeValue(v, isolateId);
 
 		try
 		{
-			return session.callFunction(v, functionName, args);
+			return session.getWorkerSession(isolateId).callFunction(v, functionName, args);
 		}
 		catch (PlayerDebugException e)
 		{
@@ -68,10 +67,10 @@ public class ECMA
 	/**
 	 * Calls the valueOf() function of an object.
 	 */
-	private static Value callValueOf(Session session, Value v)
+	private static Value callValueOf(Session session, Value v, int isolateId)
 	{
-		v = safeValue(v);
-		return callFunction(session, v, "valueOf", new Value[0]); //$NON-NLS-1$
+		v = safeValue(v, isolateId);
+		return callFunction(session, v, "valueOf", new Value[0], isolateId); //$NON-NLS-1$
 	}
 
 	/**
@@ -80,10 +79,10 @@ public class ECMA
 	 * function, on the other hand, represents calling the toString() function
 	 * of an object.
 	 */
-	private static Value callToString(Session session, Value v)
+	private static Value callToString(Session session, Value v, int isolateId)
 	{
-		v = safeValue(v);
-		return callFunction(session, v, "toString", new Value[0]); //$NON-NLS-1$
+		v = safeValue(v, isolateId);
+		return callFunction(session, v, "toString", new Value[0], isolateId); //$NON-NLS-1$
 	}
 
 	/**
@@ -93,9 +92,11 @@ public class ECMA
 	 * @param optionalPreferredType
 	 *            either NUMBER, STRING, or null.
 	 */
-	public static Value defaultValue(Session session, Value v, PreferredType optionalPreferredType)
+	public static Value defaultValue(Session session, Value v, 
+			PreferredType optionalPreferredType,
+			int isolateId)
 	{
-		v = safeValue(v);
+		v = safeValue(v, isolateId);
 		String typename = v.getTypeName();
 		int at = typename.indexOf('@');
 		if (at != -1)
@@ -111,23 +112,23 @@ public class ECMA
 
 		if (optionalPreferredType == PreferredType.NUMBER)
 		{
-			Value result = callValueOf(session, v);
+			Value result = callValueOf(session, v, isolateId);
 			if (isPrimitive(result))
 				return result;
-			result = callToString(session, v);
+			result = callToString(session, v, isolateId);
 			if (isPrimitive(result))
 				return result;
-			throw new RuntimeException(new PlayerFaultException(new ExceptionFault(ASTBuilder.getLocalizationManager().getLocalizedTextString("typeError"), false, null))); //$NON-NLS-1$
+			throw new RuntimeException(new PlayerFaultException(new ExceptionFault(ASTBuilder.getLocalizationManager().getLocalizedTextString("typeError"), false, null, isolateId))); //$NON-NLS-1$
 		}
 		else
 		{
-			Value result = callToString(session, v);
+			Value result = callToString(session, v, isolateId);
 			if (isPrimitive(result))
 				return result;
-			result = callValueOf(session, v);
+			result = callValueOf(session, v, isolateId);
 			if (isPrimitive(result))
 				return result;
-			throw new RuntimeException(new PlayerFaultException(new ExceptionFault(ASTBuilder.getLocalizationManager().getLocalizedTextString("typeError"), false, null))); //$NON-NLS-1$
+			throw new RuntimeException(new PlayerFaultException(new ExceptionFault(ASTBuilder.getLocalizationManager().getLocalizedTextString("typeError"), false, null, isolateId))); //$NON-NLS-1$
 		}
 	}
 
@@ -140,9 +141,9 @@ public class ECMA
 	 * @return
 	 */
 	public static Value toPrimitive(Session session, Value v,
-			PreferredType optionalPreferredType)
+			PreferredType optionalPreferredType, int isolateId)
 	{
-		v = safeValue(v);
+		v = safeValue(v, isolateId);
 		switch (v.getType())
 		{
 		case VariableType.UNDEFINED:
@@ -153,14 +154,14 @@ public class ECMA
 			return v;
 
 		default:
-			return defaultValue(session, v, optionalPreferredType);
+			return defaultValue(session, v, optionalPreferredType, isolateId);
 		}
 	}
 
 	/** ECMA 9.2 */
 	public static boolean toBoolean(Value v)
 	{
-		v = safeValue(v);
+		v = safeValue(v, Isolate.DEFAULT_ID);
 		switch (v.getType())
 		{
 		case VariableType.UNDEFINED:
@@ -190,7 +191,7 @@ public class ECMA
 	/** ECMA 9.3 */
 	public static double toNumber(Session session, Value v)
 	{
-		v = safeValue(v);
+		v = safeValue(v, Isolate.DEFAULT_ID);
 		switch (v.getType())
 		{
 		case VariableType.UNDEFINED:
@@ -221,7 +222,7 @@ public class ECMA
 			}
 		}
 		default:
-			return toNumber(session, toPrimitive(session, v, PreferredType.NUMBER));
+			return toNumber(session, toPrimitive(session, v, PreferredType.NUMBER, v.getIsolateId()));
 		}
 	}
 
@@ -231,7 +232,7 @@ public class ECMA
 	/** ECMA 9.5 */
 	public static int toInt32(Session session, Value v)
 	{
-		v = safeValue(v);
+		v = safeValue(v, Isolate.DEFAULT_ID);
 		double d = toNumber(session, v);
 		if (d == Double.POSITIVE_INFINITY || d == Double.NEGATIVE_INFINITY)
 		{
@@ -251,7 +252,7 @@ public class ECMA
 	/** ECMA 9.6 */
 	public static long toUint32(Session session, Value v)
 	{
-		v = safeValue(v);
+		v = safeValue(v, Isolate.DEFAULT_ID);
 		long n = toInt32(session, v);
 		if (n < 0)
 			n = n + (long) 0x10000 * (long) 0x10000;
@@ -261,7 +262,7 @@ public class ECMA
 	/** ECMA 9.8 */
 	public static String toString(Session session, Value v)
 	{
-		v = safeValue(v);
+		v = safeValue(v, Isolate.DEFAULT_ID);
 		switch (v.getType())
 		{
 		case VariableType.UNDEFINED:
@@ -282,39 +283,39 @@ public class ECMA
 			}
 		}
 		default:
-			return toString(session, toPrimitive(session, v, PreferredType.STRING));
+			return toString(session, toPrimitive(session, v, PreferredType.STRING, v.getIsolateId()));
 		}
 	}
 
 	/** ECMA 11.8.5.  Returns true, false, or undefined. */
 	public static Value lessThan(Session session, Value x, Value y)
 	{
-		x = safeValue(x);
-		y = safeValue(y);
-		Value px = toPrimitive(session, x, PreferredType.NUMBER);
-		Value py = toPrimitive(session, y, PreferredType.NUMBER);
+		x = safeValue(x, Isolate.DEFAULT_ID);
+		y = safeValue(y, Isolate.DEFAULT_ID);
+		Value px = toPrimitive(session, x, PreferredType.NUMBER, x.getIsolateId());
+		Value py = toPrimitive(session, y, PreferredType.NUMBER, y.getIsolateId());
 		if (px.getType() == VariableType.STRING
 				&& py.getType() == VariableType.STRING)
 		{
 			String sx = px.getValueAsString();
 			String sy = py.getValueAsString();
-			return DValue.forPrimitive(new Boolean(sx.compareTo(sy) < 0));
+			return DValue.forPrimitive(new Boolean(sx.compareTo(sy) < 0), x.getIsolateId());
 		}
 		else
 		{
 			double dx = toNumber(session, px);
 			double dy = toNumber(session, py);
 			if (Double.isNaN(dx) || Double.isNaN(dy))
-				return DValue.forPrimitive(Value.UNDEFINED);
-			return DValue.forPrimitive(new Boolean(dx < dy));
+				return DValue.forPrimitive(Value.UNDEFINED, x.getIsolateId());
+			return DValue.forPrimitive(new Boolean(dx < dy), x.getIsolateId());
 		}
 	}
 
 	/** ECMA 11.9.3 */
 	public static boolean equals(Session session, Value xv, Value yv)
 	{
-		xv = safeValue(xv);
-		yv = safeValue(yv);
+		xv = safeValue(xv, Isolate.DEFAULT_ID);
+		yv = safeValue(yv, Isolate.DEFAULT_ID);
 
 		Object x = xv.getValueAsObject();
 		Object y = yv.getValueAsObject();
@@ -358,16 +359,16 @@ public class ECMA
 				return dx == dy;
 			}
 			if (x instanceof Boolean)
-				return equals(session, DValue.forPrimitive(new Double(toNumber(session, xv))), yv);
+				return equals(session, DValue.forPrimitive(new Double(toNumber(session, xv)), xv.getIsolateId()), yv);
 			if (y instanceof Boolean)
-				return equals(session, xv, DValue.forPrimitive(new Double(toNumber(session, yv))));
+				return equals(session, xv, DValue.forPrimitive(new Double(toNumber(session, yv)), xv.getIsolateId()));
 			if ((x instanceof String || x instanceof Double) && yv.getType() == VariableType.OBJECT)
 			{
-				return equals(session, xv, toPrimitive(session, yv, null));
+				return equals(session, xv, toPrimitive(session, yv, null, yv.getIsolateId()));
 			}
 			if (xv.getType() == VariableType.OBJECT && (y instanceof String || y instanceof Double))
 			{
-				return equals(session, toPrimitive(session, xv, null), yv);
+				return equals(session, toPrimitive(session, xv, null, xv.getIsolateId()), yv);
 			}
 			return false;
 		}
@@ -376,8 +377,8 @@ public class ECMA
 	/** ECMA 11.9.6 */
 	public static boolean strictEquals(Value xv, Value yv)
 	{
-		xv = safeValue(xv);
-		yv = safeValue(yv);
+		xv = safeValue(xv, Isolate.DEFAULT_ID);
+		yv = safeValue(yv, Isolate.DEFAULT_ID);
 
 		Object x = xv.getValueAsObject();
 		Object y = yv.getValueAsObject();
@@ -417,11 +418,11 @@ public class ECMA
 	 *            any Value, possibly null
 	 * @return a non-null Value
 	 */
-	public static Value safeValue(Value v)
+	public static Value safeValue(Value v, int isolateId)
 	{
 		if (v == null)
 		{
-			v = DValue.forPrimitive(null);
+			v = DValue.forPrimitive(null, isolateId);
 			assert v != null;
 		}
 		return v;

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeFrame.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeFrame.java b/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeFrame.java
index fd75802..c39b2df 100644
--- a/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeFrame.java
+++ b/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeFrame.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger.threadsafe;
@@ -66,12 +64,14 @@ public class ThreadSafeFrame extends ThreadSafeDebuggerObject implements Frame {
 		return ((ThreadSafeFrame)f).getSyncObject();
 	}
 	
+	@Override
 	public int hashCode() {
 		synchronized (getSyncObject()) {
 			return fFrame.hashCode();
 		}
 	}
 
+	@Override
 	public boolean equals(Object other) {
 		synchronized (getSyncObject()) {
 			if (other == null)
@@ -86,6 +86,7 @@ public class ThreadSafeFrame extends ThreadSafeDebuggerObject implements Frame {
 		}
 	}
 
+	@Override
 	public String toString() {
 		synchronized (getSyncObject()) {
 			return fFrame.toString();
@@ -129,4 +130,11 @@ public class ThreadSafeFrame extends ThreadSafeDebuggerObject implements Frame {
 			return ThreadSafeVariable.wrapArray(getSyncObject(), fFrame.getScopeChain(ThreadSafeSession.getRaw(s)));
 		}
 	}
+
+	@Override
+	public int getIsolateId() {
+		synchronized (getSyncObject()) {
+			return fFrame.getIsolateId();
+		}
+	}
 }

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeIsolate.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeIsolate.java b/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeIsolate.java
new file mode 100644
index 0000000..0cc5619
--- /dev/null
+++ b/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeIsolate.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package flash.tools.debugger.threadsafe;
+
+import flash.tools.debugger.Isolate;
+
+/**
+ * Thread-safe wrapper for flash.tools.debugger.Isolate
+ * @author Anirudh Sasikumar
+ */
+public class ThreadSafeIsolate extends ThreadSafeDebuggerObject implements Isolate {
+
+	private Isolate fIsolate;
+	
+	private ThreadSafeIsolate(Object syncObj, Isolate isolate) {
+		super(syncObj);
+		fIsolate = isolate;
+	}
+
+	/**
+	 * Wraps a Watch inside a ThreadSafeWatch.  If the passed-in Watch
+	 * is null, then this function returns null.
+	 */
+	public static ThreadSafeIsolate wrap(Object syncObj, Isolate isolate) {
+		if (isolate != null)
+			return new ThreadSafeIsolate(syncObj, isolate);
+		else
+			return null;
+	}
+	
+	/**
+	 * Wraps an array of Locations inside an array of ThreadSafeLocations.
+	 */
+	public static ThreadSafeIsolate[] wrapArray(Object syncObj, Isolate[] isolates) {
+		ThreadSafeIsolate[] threadSafeIsolates = new ThreadSafeIsolate[isolates.length];
+		for (int i=0; i<isolates.length; ++i) {
+			threadSafeIsolates[i] = wrap(syncObj, isolates[i]);
+		}
+		return threadSafeIsolates;
+	}
+
+	public int getId() {
+		synchronized (getSyncObject()) {
+			return fIsolate.getId();
+		}
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeIsolateSession.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeIsolateSession.java b/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeIsolateSession.java
new file mode 100644
index 0000000..57f0820
--- /dev/null
+++ b/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeIsolateSession.java
@@ -0,0 +1,285 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package flash.tools.debugger.threadsafe;
+
+import flash.tools.debugger.Frame;
+import flash.tools.debugger.IsolateSession;
+import flash.tools.debugger.Location;
+import flash.tools.debugger.NoResponseException;
+import flash.tools.debugger.NotConnectedException;
+import flash.tools.debugger.NotSupportedException;
+import flash.tools.debugger.NotSuspendedException;
+import flash.tools.debugger.PlayerDebugException;
+import flash.tools.debugger.SuspendedException;
+import flash.tools.debugger.SwfInfo;
+import flash.tools.debugger.Value;
+import flash.tools.debugger.Variable;
+import flash.tools.debugger.VersionException;
+import flash.tools.debugger.Watch;
+import flash.tools.debugger.expression.PlayerFaultException;
+
+/**
+ * Thread-safe wrapper for flash.tools.debugger.IsolateSession
+ * @author Anirudh Sasikumar
+ */
+public class ThreadSafeIsolateSession extends ThreadSafeDebuggerObject
+		implements IsolateSession {
+
+	private IsolateSession fSession;
+	
+	private ThreadSafeIsolateSession(Object syncObj, IsolateSession session) {
+		super(syncObj);
+		fSession = session;
+	}
+	
+	/**
+	 * Wraps a Value inside a ThreadSafeValue.  If the passed-in Value
+	 * is null, then this function returns null.
+	 */
+	public static ThreadSafeIsolateSession wrap(Object syncObj, IsolateSession session) {
+		if (session != null)
+			return new ThreadSafeIsolateSession(syncObj, session);
+		else
+			return null;
+	}
+
+	@Override
+	public void resume() throws NotSuspendedException, NotConnectedException,
+			NoResponseException {
+		synchronized (getSyncObject()) {
+			fSession.resume();
+		}		
+	}
+
+	@Override
+	public void suspend() throws SuspendedException, NotConnectedException,
+			NoResponseException {
+		synchronized (getSyncObject()) {
+			fSession.suspend();
+		}
+		
+	}
+
+	@Override
+	public boolean isSuspended() throws NotConnectedException {
+		synchronized (getSyncObject()) {
+			return fSession.isSuspended();
+		}
+	}
+
+	@Override
+	public int suspendReason() throws NotConnectedException {
+		synchronized (getSyncObject()) {
+			return fSession.suspendReason();
+		}
+	}
+
+	public void stepOver() throws NotSuspendedException, NoResponseException,
+	NotConnectedException {
+		synchronized (getSyncObject()) {
+			fSession.stepOver();
+		}
+	}
+
+	public void stepContinue() throws NotSuspendedException,
+	NoResponseException, NotConnectedException {
+		synchronized (getSyncObject()) {
+			fSession.stepContinue();
+		}
+	}
+
+	public void stepInto() throws NotSuspendedException, NoResponseException,
+	NotConnectedException {
+		synchronized (getSyncObject()) {
+			fSession.stepInto();
+		}
+	}
+
+	public void stepOut() throws NotSuspendedException, NoResponseException,
+	NotConnectedException {
+		synchronized (getSyncObject()) {
+			fSession.stepOut();
+		}
+	}
+
+	@Override
+	public Frame[] getFrames() throws NotConnectedException {
+		synchronized (getSyncObject()) {
+			return ThreadSafeFrame.wrapArray(getSyncObject(), fSession.getFrames());
+		}
+	}
+	
+	@Override
+	public boolean evalIs(Value value, Value type)
+			throws PlayerDebugException, PlayerFaultException {
+		synchronized (getSyncObject()) {
+			return fSession.evalIs(value, type);
+		}
+	}
+
+	@Override
+	public boolean evalIs(Value value, String type)
+			throws PlayerDebugException, PlayerFaultException {
+		synchronized (getSyncObject()) {
+			return fSession.evalIs(value, type);
+		}
+	}
+
+	@Override
+	public boolean evalInstanceof(Value value, Value type)
+			throws PlayerDebugException, PlayerFaultException {
+		synchronized (getSyncObject()) {
+			return fSession.evalInstanceof(value, type);
+		}
+	}
+
+	@Override
+	public boolean evalInstanceof(Value value, String type)
+			throws PlayerDebugException, PlayerFaultException {
+		synchronized (getSyncObject()) {
+			return fSession.evalInstanceof(value, type);
+		}
+	}
+
+	@Override
+	public boolean evalIn(Value property, Value object)
+			throws PlayerDebugException, PlayerFaultException {
+		synchronized (getSyncObject()) {
+			return fSession.evalIn(property, object);
+		}
+	}
+
+	@Override
+	public Value evalAs(Value value, Value type)
+			throws PlayerDebugException, PlayerFaultException {
+		synchronized (getSyncObject()) {
+			return ThreadSafeValue.wrap(getSyncObject(), fSession.evalAs(value, type));
+		}
+	}
+
+	@Override
+	public Value callConstructor(String classname, Value[] args) 
+				throws PlayerDebugException {
+		synchronized (getSyncObject()) {
+			return ThreadSafeValue.wrap(getSyncObject(), fSession.callConstructor(classname, args));
+		}
+	}
+
+	@Override
+	public Watch[] getWatchList()
+			throws NoResponseException, NotConnectedException {
+		synchronized (getSyncObject()) {
+			return ThreadSafeWatch.wrapArray(getSyncObject(), fSession.getWatchList());
+		}
+	}
+	
+	/** @deprecated */
+	public Variable[] getVariableList() throws NotSuspendedException,
+			NoResponseException, NotConnectedException, VersionException {
+		synchronized (getSyncObject()) {
+			return ThreadSafeVariable.wrapArray(getSyncObject(), fSession.getVariableList());
+		}
+	}
+
+	public Value callFunction(Value thisObject, String functionName, Value[] args)
+	throws PlayerDebugException {
+		synchronized (getSyncObject()) {
+			return ThreadSafeValue.wrap(getSyncObject(), fSession.callFunction(thisObject, functionName, args));
+		}
+	}
+	
+	public Value getGlobal(String name) throws NotSuspendedException, NoResponseException, NotConnectedException
+	{
+		synchronized (getSyncObject())
+		{
+			return ThreadSafeValue.wrap(getSyncObject(), fSession.getGlobal(name));
+		}
+	}
+	
+	public SwfInfo[] getSwfs() throws NoResponseException {
+		synchronized (getSyncObject()) {
+			return ThreadSafeSwfInfo.wrapArray(getSyncObject(), fSession.getSwfs());
+		}
+	}
+
+	public Value getValue(long valueId) throws NotSuspendedException,
+	NoResponseException, NotConnectedException
+	{
+		synchronized (getSyncObject()) {
+			return ThreadSafeValue.wrap(getSyncObject(), fSession.getValue(valueId));
+		}
+	}
+
+	public Location setBreakpoint(int fileId, int lineNum)
+	throws NoResponseException, NotConnectedException {
+		synchronized (getSyncObject()) {
+			return ThreadSafeLocation.wrap(getSyncObject(), fSession.setBreakpoint(fileId, lineNum));
+		}
+	}
+
+	@Override
+	public boolean setExceptionBreakpoint(String exceptionClass)
+			throws NoResponseException, NotConnectedException {
+		synchronized (getSyncObject()) {
+			return fSession.setExceptionBreakpoint(exceptionClass); 
+		}
+	}
+
+	@Override
+	public boolean clearExceptionBreakpoint(String exceptionClass)
+			throws NoResponseException, NotConnectedException {
+		synchronized (getSyncObject()) {
+			return fSession.clearExceptionBreakpoint(exceptionClass); 
+		}
+	}
+
+	@Override
+	public void breakOnCaughtExceptions(boolean b)
+			throws NotSupportedException, NoResponseException {
+		synchronized (getSyncObject()) {
+			fSession.breakOnCaughtExceptions(b); 
+		}
+	}
+
+	@Override
+	public boolean supportsWatchpoints() {
+		synchronized (getSyncObject()) {
+			return fSession.supportsWatchpoints(); 
+		}
+	}
+
+	@Override
+	public boolean playerCanBreakOnAllExceptions() {
+		synchronized (getSyncObject()) {
+			return fSession.playerCanBreakOnAllExceptions(); 
+		}
+	}
+
+	@Override
+	public boolean supportsWideLineNumbers() {
+		synchronized (getSyncObject()) {
+			return fSession.supportsWideLineNumbers();
+		}
+	}
+
+	@Override
+	public boolean playerCanCallFunctions() {
+		synchronized (getSyncObject()) {
+			return fSession.playerCanCallFunctions();
+		}
+	}
+}

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeLocation.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeLocation.java b/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeLocation.java
index 9c396cb..26d7824 100644
--- a/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeLocation.java
+++ b/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeLocation.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger.threadsafe;
@@ -82,4 +80,11 @@ public class ThreadSafeLocation extends ThreadSafeDebuggerObject implements Loca
 			return fLocation.getLine();
 		}
 	}
+
+	@Override
+	public int getIsolateId() {
+		synchronized (getSyncObject()) {
+			return fLocation.getIsolateId();
+		}
+	}
 }

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeSession.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeSession.java b/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeSession.java
index b802deb..4d25e5d 100644
--- a/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeSession.java
+++ b/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeSession.java
@@ -1,25 +1,26 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger.threadsafe;
 
 import flash.tools.debugger.Frame;
+import flash.tools.debugger.ILauncher;
+import flash.tools.debugger.Isolate;
+import flash.tools.debugger.IsolateSession;
 import flash.tools.debugger.Location;
 import flash.tools.debugger.NoResponseException;
 import flash.tools.debugger.NotConnectedException;
@@ -355,6 +356,12 @@ public class ThreadSafeSession extends ThreadSafeDebuggerObject implements Sessi
 			return fSession.supportsWatchpoints();
 		}
 	}
+	
+	public boolean supportsConcurrency() {
+		synchronized (getSyncObject()) {
+			return fSession.supportsConcurrency();
+		}
+	}
 
 	/* (non-Javadoc)
 	 * @see flash.tools.debugger.Session#getDisconnectCause()
@@ -364,4 +371,65 @@ public class ThreadSafeSession extends ThreadSafeDebuggerObject implements Sessi
 			return fSession.getDisconnectCause();
 		}
 	}
+
+	/* (non-Javadoc)
+	 * @see flash.tools.debugger.Session#refreshWorkers()
+	 */
+	@Override
+	public Isolate[] refreshWorkers() throws NotSupportedException,
+			NotSuspendedException, NoResponseException, NotConnectedException {
+		synchronized (getSyncObject()) {
+			return ThreadSafeIsolate.wrapArray(getSyncObject(), fSession.getWorkers());
+		}
+	}
+
+	/* (non-Javadoc)
+	 * @see flash.tools.debugger.Session#getWorkers()
+	 */
+	@Override
+	public Isolate[] getWorkers() {
+		synchronized (getSyncObject()) {
+			return fSession.getWorkers();
+		}
+	}
+
+	/* (non-Javadoc)
+	 * @see flash.tools.debugger.Session#getWorkerSession(int)
+	 */
+	@Override
+	public IsolateSession getWorkerSession(int isolateId) {
+		synchronized (getSyncObject()) {
+			return ThreadSafeIsolateSession.wrap(getSyncObject(), fSession.getWorkerSession(isolateId));
+		}
+	}
+
+	/* (non-Javadoc)
+	 * @see flash.tools.debugger.Session#setExceptionBreakpoint(String)
+	 */
+	@Override
+	public boolean setExceptionBreakpoint(String exceptionClass)
+			throws NoResponseException, NotConnectedException {
+		synchronized (getSyncObject()) {
+			return fSession.setExceptionBreakpoint(exceptionClass);
+		}
+	}
+
+	/* (non-Javadoc)
+	 * @see flash.tools.debugger.Session#clearExceptionBreakpoint(String)
+	 */
+	@Override
+	public boolean clearExceptionBreakpoint(String exceptionClass)
+			throws NoResponseException, NotConnectedException {
+		synchronized (getSyncObject()) {
+			return fSession.clearExceptionBreakpoint(exceptionClass);
+		}
+	}
+
+	@Override
+	public void setLauncher(ILauncher launcher) {
+		synchronized (getSyncObject()) {
+			fSession.setLauncher(launcher);
+		}
+	}
+
 }

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeSwfInfo.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeSwfInfo.java b/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeSwfInfo.java
index 40fa457..a3d698c 100644
--- a/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeSwfInfo.java
+++ b/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeSwfInfo.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger.threadsafe;
@@ -116,4 +114,11 @@ public class ThreadSafeSwfInfo extends ThreadSafeDebuggerObject implements SwfIn
 			return fSwfInfo.isUnloaded();
 		}
 	}
+
+	@Override
+	public int getIsolateId() {
+		synchronized (getSyncObject()) {
+			return fSwfInfo.getIsolateId();
+		}
+	}
 }

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeValue.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeValue.java b/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeValue.java
index cf489ed..f78414d 100644
--- a/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeValue.java
+++ b/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeValue.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger.threadsafe;
@@ -75,6 +73,7 @@ public class ThreadSafeValue extends ThreadSafeDebuggerObject implements Value {
 		return ((ThreadSafeValue)v).getSyncObject();
 	}
 	
+	@Override
 	public boolean equals(Object other) {
 		if (other instanceof Value)
 			return fVal.equals(getRaw((Value)other));
@@ -134,6 +133,7 @@ public class ThreadSafeValue extends ThreadSafeDebuggerObject implements Value {
 		synchronized (getSyncObject()) { return fVal.getClassHierarchy(allLevels); }
 	}
 
+	@Override
 	public String toString() {
 		synchronized (getSyncObject()) { return fVal.toString(); }
 	}
@@ -149,4 +149,11 @@ public class ThreadSafeValue extends ThreadSafeDebuggerObject implements Value {
 			return ThreadSafeVariable.wrapArray(getSyncObject(), fVal.getPrivateInheritedMemberNamed(name));
 		}
 	}
+
+	@Override
+	public int getIsolateId() {
+		synchronized (getSyncObject()) {
+			return fVal.getIsolateId();
+		}
+	}
 }

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeVariable.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeVariable.java b/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeVariable.java
index 8e6a50f..126a224 100644
--- a/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeVariable.java
+++ b/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeVariable.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger.threadsafe;
@@ -132,7 +130,13 @@ public class ThreadSafeVariable extends ThreadSafeDebuggerObject implements Vari
 		synchronized (getSyncObject()) { return fVar.getLevel(); }
 	}
 
+	@Override
 	public String toString() {
 		synchronized (getSyncObject()) { return fVar.toString(); }
 	}
+
+	@Override
+	public int getIsolateId() {
+		synchronized (getSyncObject()) { return fVar.getIsolateId(); }
+	}
 }

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/379cb609/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeWatch.java
----------------------------------------------------------------------
diff --git a/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeWatch.java b/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeWatch.java
index b88c41e..276a0c5 100644
--- a/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeWatch.java
+++ b/modules/debugger/src/java/flash/tools/debugger/threadsafe/ThreadSafeWatch.java
@@ -1,20 +1,18 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package flash.tools.debugger.threadsafe;
@@ -87,4 +85,11 @@ public class ThreadSafeWatch extends ThreadSafeDebuggerObject implements Watch {
 			return fWatch.getValueId();
 		}
 	}
+
+	@Override
+	public int getIsolateId() {
+		synchronized (getSyncObject()) {
+			return fWatch.getIsolateId();
+		}
+	}
 }