    
      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.


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. )))
