# Fejlsøgergrænsefladen

&tdevelop; indeholder en intern fejlsøger for C og C++, som er direkte integreret med editoren. Teknisk set er den implementeret som en grænseflade som bruger den flytbare &GNU;-fejlsøger gdb via en pipe. Fejlsøgeren kan startes på flere måder:

- Hovedprogrammet i projektet indlæses i fejlsøgeren med Fejlsøg Start.

- Ved at bruge Fejlsøg Start (andet) Undersøg hukommelsesdump, indlæser du et hukommelsesdump til hukommelsen, som blev lavet af operativsystemets kerne da programmet brød sammen. (At lave hukommelsesdump kan være slået fra på systemet, se ulimit(1)). Dette er nyttigt for en post-mortem analyse af et program.

- Du starter fejlsøgeren for et program som allerede kører med Fejlsøg Start (andet) Forbind til proces. En procesliste vises hvor du kan vælge processen som fejlsøgeren skal overtage.

- Bemærk at fejlsøgning kun er mulig hvis projektet er kompileret med fejlsøgningsinformation aktiveret. Den kan aktiveres i dialogen Oversætterindstillinger. Når dette er aktiveret, laver oversætteren yderligere informationer som lader fejlsøgeren associere filnavne og linjenumre med adresser i det kørbare program.

Grænsefladen til fejlsøgeren tilbyder flere visninger ind i processen:

Hvis du forsøger at fejlsøge et projekt uden fejlsøgningsinformation, får du meddelelsen `Ingen kildekode...` i statuslinjen. Hvis du forsøger at sætte stoppunkter, vises de som `Hvilende (tilføj)` i stoppunktsvinduet (se nedenfor).

Variabler

- Dette vindue viser værdier for alle lokale variabler på det nuværende sted i programmet. Det dækker variablerne i oversætterens kaldstak, &ie; funktionen hvor processen blev afbrudt, funktionen som kaldte denne funktionen, og så videre hele vejen til funktionen `main()`.

  En anden gren i variabelvinduet indeholder overvågningsvariabler. Du kan selv indstille hvilke variabler som ses her. Både lokale og globale variabler kan overvåges. Du kan enten tilføje en variabel ved at klikke på knappen Tilføj eller trykke på returtasten når punktet Overvåg er markeret. Variablerne kan fjernes igen med den sammenhængsafhængige menuen.

Rammestak

- (... endnu ikke skrevet ...)

Stoppunkter

- Vinduet lader dig se og behandle stoppunkterne. Husk at &tdevelop; bruger GDB, så for at forstå &tdevelop;s fejlsøgningsfunktioner fuldstændigt, skal du vide en lille smule om GDB.

  Hvis du vil kigge på kildekoden, defineres stoppunkter i `tdevelop/languages/cpp/debugger/breakpoint.h`.

  I venstre kant har vinduet knapper for at:

  - Tilføj et tomt breakpoint

  - Redigér det markerede stoppunkt

  - Sletter det valgte breakpoint

  - Fjern alle breakpoints

  Hoveddelen af vinduet er en tabel med syv søjler. Hver linje i tabellen er et stoppunkt. Søjlerne er:

  1. Markeringsafkrydsningsfelt

  2. Type: en af: Ugyldig, Fil:Linje, Overvågningspunkt, Adresse, Funktion

  3. Status. Værdierne er:

     - Aktiv

     - Deaktiveret: Hvert stoppunkt kan aktiveres eller deaktiveres. Hvis det er deaktiveret har det ingen effekt på programmet indtil det aktiveres igen.

     - Hvilende (tilføj): En stoppunkt er markeret sådan her hvis ingen fejlsøgningsinformation er tilgængelig. Fra GDB's informationsside:

       > Hvis et specificeret stoppunktssted ikke kan findes, kan det skyldes det faktum at stedet er i et delt bibliotek som endnu ikke er indlæst. I et sådant tilfælde, kan du ville at GDB laver et specielt stoppunkt (kendt som et hvilende stoppunkt) som forsøger at løse sig selv op i fremtiden når et passende delt bibliotek indlæses.

  4. Hvilende (rydning)

  5. Hvilende (ændring)

  6. Sted på formatet filnavn:linjenummer

  7. Betingelse

  8. Ignorér antal: Hvis det er et tal `ANTAL` større end nul, stoppes programmets kørsel ikke før følgende `ANTAL` gange som stoppunktet nås. Udover at mindske antallet at ignorere, udfører gdb ingen handling.

  9. Træffere: Regner ud hvor mange gange et stoppunkt er truffet.

Vis assemblerkode

- (... endnu ikke skrevet ...)

## Sæt stoppunkter

(... endnu ikke skrevet ...)

## Tilvalg

Vis behandlede navne

- Funktionsnavne i det kørbare program er behandlede for C++, &ie; funktionsnavnet indeholder information om argumenternes typer. Dette er nødvendigt for at støtte overbelastede funktioner. Behandlingsalgoritmen er ikke standardiseret, og adskiller sig til og med mellem forskellige udgaver af &GNU;'s C++ oversætter.

  I assemblerkodevinduet vises normalt ubehandlede navne, så funktionssignaturer ligner udseendet i kildekoden, og er let læsbare. Alternativt, kan du vælge at se behandlede navne.

Forsøg at sætte stoppunkter når biblioteker indlæses

- Fejlsøgerens baggrundsprogram gdb tillader ikke at stoppunkter sættes i kode som ikke for øjeblikket er indlæst. I et rigtigt modulært program, hvor kode ofte kun indlæses efter behov såsom plugin (med brug af C-bibliotekets funktion `dlopen(3)`), kan dette være besværligt. Derfor håndterer &tdevelop; selv støtte for stoppunkter i delte biblioteker. Hvis du aktiverer dette, kan du sætte stoppunkter i biblioteker som ikke er indlæst. Derefter, så snart gdb fortæller at et bibliotek er indlæst, forsøger &tdevelop; at sætte de hvilende stoppunkter.

Aktivér flydende værktøjslinje

- (... endnu ikke skrevet ...)