# &kdevelop;'s brugermanual

## Indeholdet af denne manuals

Denne brugermanual er beregnet til at beskrive indholdet og brugen af det integrerede udviklingsmiljø (IDE) &kdevelop; &kdevrelease; fra brugerens perspektiv. Det er ikke en programmeringsmanual, og beskriver heller ikke udviklingsprocessen i detalje. Det eneste formål er at hjælpe dig med håndteringen af det integrerede udviklingsmiljø.

Her finder du information om følgende emner:

- I korthed — Vink of tricks—En hurtigreference til de oftest brugte kommandoer og handlinger. Desuden en kort guide til at løse almindelige problemer når der arbejdes med &kdevelop;.

- Udvikling på &UNIX; — en historisk oversigt over &UNIX; programudvikling, de vigtigste værktøjer som behøves og hvorfor man behøver et integreret udviklingsmiljø.

- Installering af &kdevelop; — fortæller hvor man får fat på &kdevelop;, og hvordan man får den til at køre.

- At komme i gang med &kdevelop; — en guidet tur — giver dig en hurtig indføring i at bruge dette integrerede udviklingsmiljø og introducerer dig for de grundlæggende trin der skal til for at starte og arbejde på et projekt.

- Oversigt over funktionerne i &kdevelop; — udvider den guidede tur fra forrige kapitel og giver et overblik over hvad der er indbygget i &kdevelop; og giver dig kendskab til programmets udseende og opførsel.

- Oversigt over menuer og værktøjslinjer — Sørger for en kort oversigt over tilgængelige menu- og værktøjslinjespunkter (i appendiks).

- Genvejstaster—(i appendikset) en liste over tastesekvenser du kan bruge til hurtig adgang til specifikke &kdevelop;-operationer.

- Indstil &kdevelop; — Viser hvordan du kan skræddersy det integrerede udviklingsmiljø for at passe til dine behov.

- At scripte &kdevelop; — beskriver hvordan man tilføjer scripter der kan automatisere &kdevelop;.

- Avanceret projekthåndtering — viser hvordan eksisterende projekter indlæses, konvertering af projekter fra ældre udgaver af &kdevelop; og import af andre eksisterende projekter. Yderligere dækkes indstillingen af et projekts tilvalg til at passe til dine behov.

- Redigeringsværktøj — alt du behøver for at skrive kildekoden. Fra hvordan editoren bruges, hvordan tekstsøgning gøres både lokalt og i hele projektet, til hvordan nye filer og klasser integreres i projektet.

- Filsøgerne — demonstrerer diverse værktøjer til at kigge på projektets struktur og hvordan du får adgang til filerne du vil arbejde med.

- Klassesøgeren — beskriver et af de mest kraftfulde værktøjer i &kdevelop;, som lader dig navigere i klasseafhængigheder og gør det muligt for dig nemt at oprette og få adgang til de klasser og metoder du behøver.

- Dokumentation — viser hvordan man får adgang til den omfattende indbyggede dokumentation som &kdevelop; sørger for, og fortæller hvordan du laver dokumentation for projektet, en koncis og kraftfuld dokumentation af programmeringsgrænsefladen, som giver dig en oversigt over al kildekode i projektet samt en docbook-baseret brugerdokumentation.

- Bygge- og projekthåndtering — handler om at oprette og håndtere projekter; beskriver det grundlæggende i brug af autoconf og automake, samt hvordan egne byggefiler laves og hvordan oversætter- og byggeindstillinger bruges til at skræddersy programmet til at passe til dine behov.

- Avanceret byggehåndtering — kigger på måder at holde flere byggeindstillinger, for at krydskompilere til forskellige platforme, eller oprette indbyggede systemer med biblioteket Qt/embedded.

- Fejlsøgergrænsefladen — beskriver hvordan den integrerede fejlsøgergrænseflade for fejlsøgeren gdb bruges, så du kan jage efter fejl uden at forlade &kdevelop; for altid at beholde muligheden for nem adgang til det nuværende programs kildekode.

- Brug af CVS — fortæller dig hvordan du kan vedligeholde projektet med CVS-versionshåndteringssystem; en nødvendighed især hvis mange udviklere arbejder på samme projekt.

- Drag nytte af eksterne programmer — viser hvordan man får adgang til eksterne programmer og værktøjer indefra &kdevelop;, og på den måde stærkt udvider dets muligheder.

- Indstiksværktøj — giver en oversigt over de dele som udgør &kdevelop;, og hvordan du kan indstille det for at passe til dine behov ved kun at indlæse nødvendige dele, både for det integrerede udviklingsmiljø og for hele projektet.

- Noget ofte brugt information er puttet ind i appendiks. Det er bl.a. :

  - Genvejstaster—(i appendikset) en liste over tastesekvenser du kan bruge til hurtig adgang til specifikke &kdevelop;-operationer.

  - Genvejstaster— de taster du kan bruge i kan i &kdevelop; uden at skulle bruge musen.

  - Konfigurationsfiler der bruges af &kdevelop; — viser filerne &kdevelop; bruger til at gemme intern information. Det er specielt nyttigt hvis noget går galt i din opsætning.

  - Plugin-værktøjer — viser de værktøjer du kan bruge til at skræddersy &kdevelop; så det passer til dine behov.

## I korthed — Vink og trick

Informationen i dette kapitel er beregnet som en hurtigreference for at komme hurtigt i gang hvis du (tilfældigt) glemte nogen grundlæggende begreber. Der er også en kort guide til at løse almindelige problemer når der arbejdes med &kdevelop;.

Hvis du ønsker at vide mere om et emne, så følg blot linket i titlen der starter et råd.

Information tilgængelig om disse emner:

- Udseende og fornemmelse
- Projekter
- Kompilering
- &automanag;
- Problemer med at kompilere og bygge
- Andre emner

## Udseende og fornemmelse

- ## Tving til mindre værktøjsvisningsfaneblade i IDEAl-tilstand

  Som standard starter &kdevelop; med tekstbaserede faneblade til værktøjsvink omkring arbejdsområdet. Du kan ændre dette udseende ⪚ for at spare plads i &kdevelop;'s indstillingsdialog (Opsætning Indstil KDevelop... Brugergrænseflade).

  Hvis du bruger en ældre udgave af &kdevelop; er denne indstillingsdialog måske ikke tilstede. Du kan ændre værktøjsvisningens faneblade manuelt ved at placere en `MDIStyle` indgang under `[UI]`-mærket i din `$KDEHOME/share/config/kdeveloprc`-indstillingsfil som følger:

  - `MDIStyle=0`: kun ikoner
  - `MDIStyle=1`: kun tekst (standard)
  - `MDIStyle=3`: ikoner og tekst

- ## Mærkelige farvede tegn og/eller visningsstil

  Hvis du bemærker tilfældigt farvede bogstaver overalt (&ie; på faneblade, på værktøjslinjer, osv.) og &kdevelop;-vinduet tilsyneladende bruger en forkert visningsstil, kan dette måske hjælpe:

  - I din `$KDEHOME/share/config/kdeveloprc`-indstillingsfil skal du finde linjen der indeholder `Style=Checked` og fjerne den. Start så &kdevelop; igen.

  (Denne opførsel opstår sommetider efter du venstreklikkede på en .ui-fil i en af filnavigatørerne og &kdevelop; indlæste KUIViewer for at vise den &GUI; som blev lavet ud fra denne fil.)

- ## Fuldskærmstilstand

  Vælg Vis Fuldskærmstilstand i menulinjen, eller tryk på Ctrl Shift F.

- ## Vis eller skjul menulinjen

  For at skjule menulinjen, vælges Indstillinger Vis menulinje i menulinjen, eller tryk på Ctrl M. For at vise menulinjen igen, skal du trykke på Ctrl M eller bruge ikonen Vis menulinje hvis den er tilgængelig.

## Projekter

- ## Opret nyt projekt

  Projekt Nyt projekt... starter programguiden.

- ## Opret et tilrettet projekt

  Der er ingen direkte måde at oprette et tilpasset projekt (&ie; et projekt som bruger sine egne makefiler). Brug Projekt Importér eksisterende projekt i stedet. Husk at sætte den passende Projekttype, med påskrift af en yderligere (Egne Makefiler), i dialogen.

- ## Brug projekttilvalg fra begyndelsen

  Så snart du har oprettet et nyt projekt, så glem ikke at indstille Projekt Projektindstillinger... efter dine behov.

## Kompilering

- ## Manglende detalje i kompileringsbeskeder

  Hvis du bemærker at der mangler vigtig information under kompileringerne i Besked uddatavisning-vinduet, har du måske valgt et for lavt niveau for beskeddetaljer. Højreklik i vinduet og vælg et andet detaljeniveau fra menuen der kommer frem.

## &automanag;

- ## Opret nye filer i et projekt

  Vælg delprojektet i den øvre del af &automanag;, og højreklik derefter i den nederste del på gruppetitlen hvor du vil tilføje filerne og vælg Opret ny fil...

- ## Tilføj eksisterende filer til et projekt

  Vælg delprojekt i den øverste del af &automanag;, og højreklik derefter i den nederst del på gruppetitlen hvor du vil tilføje filerne og vælg Tilføj eksisterende filer...

- ## Fjern en fil fra et projekt

  Vælg delprojektet i øverste del af &automanag;, og højreklik derefter i den nederste del på gruppetitlen hvor du vil fjerne filerne og vælg Fjern.

## Problemer med at kompilere og bygge

- ## Projektet bygger ikke igen efter at have skiftet til/fra standardmålet

  Der er et problem med &automake;/&autoconf; maskineriet. Hvis Projekt Byg Konfiguration sørger for at vælge fra tre bygge-mapper: standard, optimeret, og fejlret, så brug endelig enten standard eller fejlret/optimeret mål.

  - Så snart du har indstillet dit projekt med standard, bygges det ikke længere med fejlret eller optimeret.

  - Så snart du har indstillet dit projekt med fejlret eller optimeret, bygges det ikke længere med standard.

- ## Forkert`version af` autoconf, &etc;.

  Der er flere fejlmeddelelser som drejer sig om gamle versioner af autoconf, &etc; som forhindrer at `configure` virker som den skal. Kør `autoreconf` i mappetræet hvor filerne `configure.in` det drejer sig om findes. Kommandoen forsøger at opdatere informationen i &GNU; byggesystemfilerne. Se `man autoreconf` for mere information.

## Andre emner

- ## Konfigurationsfiler brugt af &kdevelop;

  Normalt kan du være ligeglad, men det er ret nyttigt at vide hvis noget i din opsætning går galt.

&unixdev; &kdevelop-install; &getting-started; &kdevelop-survey; &setup; &kdevelop-scripting; &applicationwizard; &project-advanced;

## Redigeringsværktøj

### Kodestumper

### Funktioner (foreløbigt overblik)

- SnippetPart tilføjer en værktøjsvisning der som standard dokker til højre

- Tilføjelse, redigering og fjernelse af stumper er tilgængelig via en popop-menu

- Dobbeltklik på en kodestump fra listen indsætter den i den aktive visning ved markørens nuværende position

- Værktøjsvink viser indholdet af en kodestump

- Kodestumper opbevares i brugerens hjemmemappe, så hver bruger kan have sine egne kodestumper

- Kodestumper kan indeholde variabler i stilen $VARNAME$. Ved brug af kodestumpen, bliver brugeren bedt om at indtaste erstatningsværdier for variablerne

### Tastebrug

I det følgende giver vi en liste af normale tastebindninger for standardeditoren. Du kan indstille dem som du vil (hvordan det?).

Venstre | Flytter et tegn til venstre
Højre | Flytter et tegn til højre
Ctrl Venstre | Flytter et ord til venstre
Ctrl Højre | Flytter et ord til højre
Op | Flytter en linje op
Ned | Flytter en linje ned
Page Up | Flytter en side op
Page Down | Flytter en side ned
Ctrl Page Up | Går til begyndelsen af filen
Ctrl Page Down | Går til slutningen af filen
Hjem | Går til begyndelsen af linjen
End | Går til slutningen af linjen

For alle taster ovenfor, kan Shift-tasten desuden trykkes ned, for at markere tekst fra markørens nuværende position til den nye.

Backspace | Sletter et tegn til venstre
Delete | Sletter tegnet under markøren
Ctrl C | Kopierer den markerede tekst til klippebordet
Ctrl V | Indsætter den markerede tekst fra klippebordet
Ctrl X | Sletter den markerede tekst og lægger den på klippebordet
Ctrl Z | Fortryd
Shift Ctrl Z | Annullér fortryd

### Problemrapporter

(... endnu ikke skrevet ...)

### Søgning og flerfilssøgning

#### Søg efter tekst

Ctrl F- Find, Ctrl R- Erstat

#### I-søgning

Den almindelige søgning med Redigér Søg kræver at du angiver hele søgebegrebet inden du starter. Oftest er det meget hurtigere at søge inkrementelt. Hvis du klikker på søgefeltet som hedder I-søg i værktøjslinjen, sker søgningen mens du skriver. Du vil mærke at det ønskede resultat allerede er der når du har skrevet 3 eller 4 tegn.

#### Grep

Begge søgemekanismer som blev beskrevet ovenfor er begrænsede til søgning i én kildekodefil. Et yderligere værktøj som lader dig søge gennem et (muligvis stort) antal filer er tilgængeligt via punktet Søg i filer... i menuen Redigér. Det er blot en grænseflade til programmet &grep;(1).

I dialogen kan du angive hvilke filer der skal søges i. Der er et antal joker-mønstre tilgængelige i et kombinationsfelt. På denne måde kan du let begrænse søgemekanismen til inkluderingsfiler. Desuden angiver du en mappe hvor søgningen startes. Hvis du afkrydser feltet Rekursiv, går søgningen gennem alle mapper i hierarkiet under den angivne.

Søgebegrebet er generelt et regulært udtryk som følger POSIX-syntaksen. Du kan for eksempel bruge begrebet `"\<K.*"`, hvis du vil finde alle ord som begynder med bogstavet K. Følgende tegn tolkes på en særlig måde:

`.` | Matcher alle tegn
`^` | Matcher begyndelsen af en linje
`$` | Matcher slutningen af en linje
`\<` | Matcher begyndelsen af et ord
`\>` | Matcher slutningen af et ord
`?` | Matcher foregående punkt mindre end en gang
`*` | Matcher det foregående punkt nul eller eller flere gange
`+` | Matcher det foregående punkt en eller flere gange
`{n}` | Matcher det foregående punkt nøjagtigt n gange
`{n,}` | Matcher det foregående punkt n eller flere gange
`{,n}` | Matcher foregående punkt mindre end n gange
`{n,m}` | Matcher foregående punkt mindst `n` gange, men færre end `m` gange

Tilbagereferencer til deludtryk indeni parenteser er også tilgængelige med notationen `\n`.

Som en særlig bonus for C++ programmører, er der nogle søgeskabeloner tilgængelige for typiske mønstre. De tillader dig for eksempel at søge efter alle kald af medlemsfunktioner for et vist objekt.

Når du har startet søgningen ved at klikke på knappen Søg, udføres den af en ydre, asynkron proces. Alle punkter som findes, ses i visningen som hedder Grep. Derefter kan du gå til de fundne punkter ved at klikke på dem. Bemærk at grep gennemsøger filerne som de er opbevarede i filsystemet. Hvis du har ændrede versioner af dem i editoren, kan du få forkerte linjenumre, eller visse ugyldige fundne punkter. Du kan undgå dette ved at gemme alle filer inden søgningen.

### Kodekomplettering

(... endnu ikke skrevet ...)

### Opret nye filer og klasser

(... endnu ikke skrevet ...)

#### Redigér skabelonerne

(... endnu ikke skrevet ...)

## Filsøgerne

På venstre side i hovedvinduet, kan &kdevelop; vise forskellige slags lister og træer til at vælge filer:

- ## Filtræ

  Dette viser en trævisning af filhierarkiet under projektmappen. Hvis du klikker på en fil, indlæses den i editoren. For filer som ikke indeholder tekst, starter KDevelop et program som kan håndtere den tilsvarende MIME-type.

  Filtræet opdateres regelmæssigt så snart noget ændres i filsystemet. Hvis du for eksempel laver nye filer eller mapper (til og med udenfor &kdevelop;), ses det med det samme på fillisten. På Linux bruger denne funktion FAM-biblioteket. På andre operativsystemer, eller via NFS, kontrolleres mapperne som vises med korte intervaller.

  Filtræet skjuler filer som sædvanligvis ikke er interessante, såsom objektfiler. I Projekttilvalg under Filvisninger, kan du indstille hvilke mønstre som bruges til at bortfiltrere uinteressante filer (som en liste med jokertegn, adskilte med kommategn).

  Du kan desuden vælge at begrænse filtræet så det kun viser filer som hører til projektet som for øjeblikket er indlæst. Dette kan ændres ved at klikke med højre museknap på træets rod.

  ### Et skærmaftryk af filtræet

- ## Filgrupper

  Dette viser filerne som tilhører projektet, grupperede ifølge filendelsen. Som i filtræet, kan du redigere en fil ved at klikke på den med venstre museknap.

  Grupperne som vises her kan indstilles under Filvisninger i dialogen Projektindstillinger. For at tilrette visningen efter dine behov, er det vigtigt at forstå hvordan filer fordeles til grupperne. For hver fil, går &kdevelop; gennem grupperne oppefra og ned. I hver gruppe kontrolleres om filnavnet matcher et af mønstrene. Ved en træffer, vises filen i gruppen og gentagelser afbrydes. Dette klargør at mere generelle mønstre skal placeres nedenunder mere specifikke. For eksempel skal en stjerne for gruppen Øvrige være det sidste mønster.

## Klassesøgeren

Ved arbejde med et projekt i et objektorienteret sprog, lægges vægten ikke på kildekodefilerne og deres navne, men på klasserne og deres sammenhæng. For at hjælpe dig med at navigere blandt definerede klasser og symboler, indeholder &kdevelop; diverse klassesøgere som synliggør klassestrukturen på forskellige måder.

### Klassevisning

Denne visning er til venstre i hovedvinduet og indeholder en lineær liste af alle klasser, variabler og funktioner i projektet. Den er konstrueret som en trævisning. Hvis du åbner en klasseknude ved at klikke på den, vises en liste med alle metoder og egenskaber som de respektive klasse har.

#### Et skærmaftryk af klassesøgeren

Klassevisningen arbejder i to forskellige tilstande. Normalt grupperes alle symboler i Klasser, Strukturer, Funktioner, Variabler og Navnerum. I den sammenhængsafhængige menu, kan du vælge Liste ifølge navnerum. I denne tilstand, vises navnerumshierarkier og symboler grupperes i de respektive navnerum hvor de defineres. Dette kan være mere nyttigt i projekter som bruger mange (hierarkiske) navnerum. Det er mindre nyttigt i projekter uden navnerum.

Du kan også ændre måden som klassenavne vises på. Normalt vises klassernes navne, uden navnerummene hvor de er defineret. Det betyder at du ikke umiddelbart kan adskille klasser med samme navn i forskellige navnerum. Hvis du holder musen stille et øjeblik over et navn, vises dog det fuldstændige navnet som et værktøjsvink. Du kan vælge altid at vise det fuldstændige klassenavn ved at vælge Fuldstændig rækkevidde for identifikatorer i den sammenhængsafhængige menu.

Ved at klikke på en klasse eller metode i en klassevisning, kommer du til dets definition. Du kan også hoppe til en metodes deklaration ved at vælge Gå til deklaration i den sammenhængsafhængige menu. I den sammenhængsafhængige menu for klasser er der også valgmulighederne Tilføj metode... og Tilføj egenskab.... De åbner dialoger hvor du kan oprette nye metoder og variabeldeklarationer for den relevante klasse, sammen med en tom implementering.

### Klasseværktøjer

Klasseværktøjsdialogen aktiveres ved at højreklikke på en klasse i klassevisningen og vælge Klasseværktøj....

### Klassehierarki

(... endnu ikke skrevet ...)

## Dokumentation

Dokumentation hører desværre til de mere oversete ting i programmering. Alligevel så yder korrekt oprettet og vedligeholdt intern og ekstern dokumentation, yderst værdifuld hjælp.

Dokumentation har flere aspekter. Der er

- intern projektdokumentation, som hovedsageligt består af

  - kommentarer i deklarationsfiler og kildekodefiler

  - Intern dokumentation af programmeringsgrænsefladen for projektet, som er lavet ud fra programfilerne af særlige værktøjer, ⪚ &doxygen;

- ekstern projektdokumentation, som blandt andet består af

  - ekstern dokumentation af programmeringsgrænseflade, ⪚ for fælles systembiblioteker (KDE, Qt, &etc;)

  - al øvrig dokumentation (manualer for programmeringssprog, almen systeminformation, vejledninger og lignende)

Al denne dokumentation skal være enkel at vedligeholde og let tilgængelig så snart du behøver den. &kdevelop; har støtte for netop dette.

### Dokumentationssøgeren

#### Et skærmaftryk af dokumentationstræet

&project-management;

## Avanceret byggehåndtering

### Flere byggeindstillinger

(... endnu ikke skrevet ...)

### Krydskompilering

Hvis du har passende krydsoversættere tilgængelige, kan du kompilere dine programmer for processorer og operativsystemer som adskiller sig fra systemet hvor &kdevelop; og oversætteren kører. &GNU;-oversætteren, &gcc;, kan indstilles og kompileres som en krydsoversætter hvis du kompilerer den selv. Konsultér GCC infosiderne for mere information. Visse Linux-distributioner sørger også for binære pakker.

En automake-baseret pakke kan let krydskompileres ved at angive flaget `--host` til configure-scriptet og indstille miljøvariablerne `CC` og `CXX` til tilsvarende krydsoversættere. Ofte vil du skifte mellem en krydskompileret version af programmet og en som blev kompileret for udviklingssystemet. For at gøre dette, er det en fordel at bruge muligheden i &kdevelop; for at oprette flere byggekonfigurationer, som forklares under buildconfigurations. Når du har oprettet en ny byggekonfiguration for krydskompilering i dialogen Projekt Projektindstillinger... tilføj flaget

    --host=platform

til configure-flagene. Værdien `platform` er en kombination af formen

    cpu-forhandler-operativsystem

eller

    cpu-forhandler-kerne-operativsystem

For mange kombinationer kan du bruge en kortform, for eksempel i386-linux eller arm-elf.

### Qt/Embedded

&qte; er en version af &Qt;-biblioteket som ikke bruger X-window systemet, men tegner direkte i framebufferen på Linuxsystemer. Den er derfor interessant for indlejrede systemer som har hårde begrænsninger for hukommelsesforbruget i hele systemet. Dets programmeringsgrænseflade stemmer fuldstændig overens med X11-versionen.

At udvikle et program for &qte; med &kdevelop; adskiller sig ikke meget fra at udvikle et program for X11-versionen af &Qt;. I virkeligheden kan du bruge samme grundkode for begge versioner. Hvis du bruger projekthåndtering med autoprojekt, skifter du til den indlejrede version ved at sende flaget `--enable-embedded` til configure-scriptet. Du kan indstille det i dialogen Projekt Projektindstillinger... under Indstilling af configure. Med flaget `--with-qt-dir=KATALOG`, indstiller du mappen hvor &qte; er installeret.

Efter at have indstillet og kompileret programmet med disse flag, linkes det med biblioteket `libqpe.so`. Denne udgave af programmet kører ikke normalt når du bruger X11. For at prøve den, køres den ved hjælp af programmet qvfb (Qt's virtuelle framebuffer). Det gøres ved at starte qvfb og derefter starte programmet med

    program -qws -display QVFb:0

Når du har en version af programmet som virker, vil du naturligvis bruge den på målprocessoren. Det kan formodentlig være bekvemt at kunne oprette flere byggekonfigurationer, som forklaret ovenfor, så du hurtigt kan skifte mellem versionen som kører på udviklingssystemet og versionen som kører på målsystemet.

Programmer for &qte; kører normalt som enkelte programmer på enheden de er konstruerede for. Trolltech understøtter også Qtopi, som er en samling programmer for personlig informationshåndtering, netsøgning og diverse andre områder som virker sammen på en konsekvent måde. Det er for eksempel standardomgivelserne på Sharp Zaurus. Du kan skrive programmer som passer ind i disse omgivelser, ved at bruge Qtopias udviklingsmiljø (SDK). Det medfører at dit program skal være en underklasse af `QPEApplication` og at det skal linkes med biblioteket `libqpe.so`. Hvis du udvikler programmet med projekthåndteringen autoprojekt, skal du tilføje til `--enable-qtopia` til konfigurationsflagene.

## Fejlsøgergrænsefladen

&kdevelop; 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:

- ## 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 menu.

- ## Stoppunkter

  (... endnu ikke skrevet ...)

- ## Rammestak

  (... endnu ikke skrevet ...)

- ## 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 &kdevelop; 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 &kdevelop; at sætte de hvilende stoppunkter.

### Aktivér flydende værktøjslinje

(... endnu ikke skrevet ...)

## Brug af CVS

### &CVS; basalt

&CVS; er versionshåndteringssystemet som mange projekter med åben kildekode, inklusive &kde; — bruger. Det opbevarer al kildekode på et centralt sted, som kaldes arkivet. Udviklere henter en aktuel version af projektet eller versioner af det på vilkårlige tidspunkter, fra arkivet. I modsætning til visse andre versionshåndteringssystemer, er det ikke nødvendigt at låse filer som man skal arbejde med. Altså kan udvikling ske parallelt i stor udstrækning.

Så snart en udvikler er færdig med en opgave, arkiverer han sin kode (sammen med en logmeddelelse). &CVS; tager sig af arbejdet med at sammenflette ændringer som laves af flere udviklere. Det kan naturligvis ske at udviklere arbejder med samme kodeafsnit, hvilket giver anledning til ændringer med konflikter (i praksis indtræffer dette sjældent, og er ofte et tegn på bristende kommunikation). I dette tilfælde, forkaster &CVS; arkiveringen. En fil kan kun arkiveres efter alle konflikter er løst op.

Hidtil er de grundlæggende funktioner i &CVS;, som man oftest skal håndtere, beskrevet. Men &CVS; tilbyder meget mere: Man kan håndtere flere grene af et projekt (f.eks. var &kde; 1.1.2 og &kde; 2 grene i &kde;'s udviklingstræ), sammenflette ændringer fra en gren til en anden, spørge efter forskelle mellem versioner og filers versionshistorik, &etc;

&CVS; implementeres som et klient-serversystem. Som bruger, sker al kommunikation med arkivet via kommandolinjeprogrammet &cvs;. Grænseflader på højere niveau er tilgængelig via programmer som Cervisia ( ) eller TkCVS (). Kun en lille del af &cvs; funktioner, som er vigtige under det daglige arbejdet, kan bruges direkte i &kdevelop;.

Grundlæggende kundskab til brugen af &CVS; forudsættes. I særdeleshed bør du vide hvordan et givet projekt hentes fra arkivet. Vi anbefaler bogen Open Source Development With CVS af Karl Fogel, som kan distribueres frit (undtagen de ikke-tekniske kapitler). Se .

### &CVS;-kommandoer i &kdevelop;

Følgende er tilgængeligt i filvisningernes sammenhængsafhængige menuer:

- ### Tilføj til arkivet

  Forbereder en fil for at tilføjes til arkivet. Filen overføres til arkivet når du arkiverer den (eller mappen som den findes i) næste gang.

- ### Fjern fra arkivet

  Forbereder en fil for at fjernes fra arkivet. Dette tager også filen væk fra det lokale filsystem, så brug funktionen med forsigtighed!

- ### Opdatér

  Kører kommandoen `cvs update` for at sammenflette eventuelle ændringer fra andre brugere til din arbejdsmappe. Når du bruger menupunktet for en mappe, sker opdateringen normalt rekursivt, med mindre om du har lukket for det i indstillingsfilen `.cvsrc`.

- ### Arkivér

  Kører `cvs commit` for at arkivere alle lokale ændringer i arkivet. Bemærk at du bør opdatere inden du gør dette. Hvis en anden bruger tidligere har arkiveret sine ændringer, kan &CVS; ellers give en fejlmeddelelse.

Alle kommandoer startes som underprocesser af &kdevelop;, uden yderligere kommandolinjeflag eller miljøvariabler. Dette kan være et problem hvis forbindelsen til &CVS;-serveren går via en &ssh;-forbindelse, og kræver at du indskriver et kodeord hver gang du arkiverer eller opdaterer. Dette er for eksempel nødvendigt hvis projektets vært er `sourceforge.net`. En måde at komme rundt om problemet beskrives i almindelige spørgsmål om CVS/SSH, som du finder i SourceForge-dokumentationen.

### Bagved scenen

#### Hvad &CVS; gemmer i arbejdsmappen

(... endnu ikke skrevet ...)

## Drag nytte af eksterne programmer

Selv om &kdevelop; er et såkaldt integreret udviklingsmiljø, kommer det aldrig til at indeholde alle funktioner som du kan ville bruge, og mulighederne i dets editor kommer aldrig til at række til for at udføre ofte brugte tekstbehandlingshandlinger. Som et virkeligt &UNIX;-program indeholder &kdevelop; flere muligheder for at starte eksterne programmer, at indkoble eksterne programmer til at behandle filer, eller bruge eksterne filtre til at behandle editorens nuværende indhold.

Den mest generelle og enkle funktion af denne type er værktøjsmenuen, som du kan indstille frit. Det gøres i dialogen Indstillinger Indstil KDevelop... under Eksterne værktøjer.

Andre værktøjer beskrives i kapitlet plugin-tools.

## Medvirkende

### Bidrag

- Det oprindelige indhold af denne manual blev skrevet af Bernd Gehrmann bernd@kdevelop.org og Caleb Tennis caleb@aei-tech.com.

- Sammendraget af &automanag; og Automake håndteringens operation kapitlerne blev skrevet af Ian Wadham, ianw@netspace.net.au).

&app-menu;

## Genvejstaster

(... endnu ikke skrevet ...)

&app-files;

## Indstiksværktøjer

&kdevelop; indeholder et stort antal små værktøjer, som hjælper dig med at udføre visse opgaver. De fleste virker som indstiksprogrammer, plugin. Det betyder at hvis du ikke synes om nogen af dem, kan du helt enkelt lukke af for det i dialogen Projektindstillinger under Plugin (for plugin som gælder hele projektet) eller under Indstillinger Indstil KDevelop.... Plugin som lukkes af belaster ikke menuer og indlæses ikke i hukommelsen.

- ## Indstiksprogrammet `abbrev`

  Dette indstiksprogram udfylder forkortelser af ofte brugte kodefragmenter. Det aktiveres ved at trykke på Ctrl Mellemrum. Hvis du for eksempel skriver `"ife"` i C++ editoren, og trykker på Ctrl Mellemrum, får du en `if-else` kodeskabelon og sparer nogle tastetryk. Opsætningen med forkortelser som understøttes afhænger af den redigerede fils programmeringssprog. For eksempel til PHP er du naturligvis interesseret i andre kodeskabeloner end for &Java;.

  Opsætningen med kodeskabeloner kan indstilles. Du kan se hvilke som er tilgængelige i dialogen Indstillinger Indstil KDevelop... under Forkortelser.

- ## Indstiksprogrammet `filter`

  Dette tilbyder to funktioner. Hvis du vælger Værktøjer Kør kommando kan du indtaste en skalkommando. Udskriften fra kommandoen indsættes i editorens buffer når du trykker på knappen Start.

  En lignende funktion er tilgængelig under Værktøjer Filtermarkering gennem kommando.... For at bruge dette, skal du markere et tekstområde i editoren. Hvis du nu skriver en skalkommando og trykker på knappen Start, så startes kommandoen og markeringen bruges som standardindtastning til det. Standardudskriften indsættes derefter i editoren.

- ## Indstiksprogrammet &doxygen;

  Dette hjælper dig med at bruge API-dokumentationsværktøjet &doxygen; (). Du kan vælge Projekt Kør Doxygen for at oprette API-dokumentation for det nuværende projekt baseret på konfigurationen som angives af filen `Doxyfile` i projektmappen.

  Desuden kan du indstille &doxygen; med dialogen Projekt Projektindstillinger.... Dialogen er meget lig værktøjet &doxywizard;.

- ## Indstiksprogrammet &ctags;

  Selv om klassesøgeren giver dig et udførligt overblik over symboler og klasser i projektet, kan du også ville bruge ctags-værktøjet. Det understøtter i særdelshed mange flere sprog end klassesøgeren.

  Du aktiverer indstiksprogrammet under Værktøj CTags.... Når du starter det for første gang, bliver du bedt om først at oprette en søgedatabase. Når du accepterer dette, startes &ctags;-programmet og laver en fil som hedder `tags` i projektmappen. Dette er en tekstfil som indeholder alle symboler i kildekodefilerne.

  Du kan søge på to måder i symboldatabasen: når feltet Matchning med regulært udtryk er markeret, tolkes teksten som du skriver som et regulært udtryk (POSIX-varianten) og matches med eksisterende symboler. Teksten `.*Widget` søger for eksempel efter alle symboler som slutter med `Widget`. Hvis feltet ikke er markeret, er søgningen verbatim.

  Under søgningen vises en liste med matchende symboler, sammen med linjenummeret hvor de defineres. Du springer til respektive steder ved at klikke i listen.

  For visse sprog skelner &ctags; mellem forskellige typer af symboler. Python har for eksempel klasser og funktioner. Du kan søge kun efter klasser ved at afkrydse den tilsvarende type i dialogen.

  Symboldatabasen opdateres normalt ikke når kildekoden ændres. På grund af dette kommer linjenumrene ikke til at være rigtige længe efter et stykke tid, og nytilføjede klasser og funktioner vil mangles. Derfor bør du opdatere filen `tags` med regelmæssige intervaller, ved at trykke på knappen Genopret.

- ## Indstiksprogrammet `astyle`

  (... endnu ikke skrevet ...)

- ## Indstiksprogrammet `regexptest`

  At konstruere regulære udtryk kan være et hårdt arbejde. Ofte matcher det første forsøg med et udtryk for mange strenge. I særdeleshed ved arbejde med et kompileret sprog kan cykeltiden ved fejlsøgning af et regulært udtryk være besværlig. Indstiksprogrammet regexptest lader dig udforske ændringer i et regulært udtryk direkte. Det aktiveres ved at vælge Værktøj Fejlsøg regulært udtryk....

  I variantdropned-feltet kan du vælge hvilken variant af regulære udtryk der skal bruges. For øjeblikket understøttes varianten som defineres af POSIX-standarden, som bruges af programmet &grep;, og den udvidede POSIX-syntaks som bruges af programmet &egrep;.

  Når du indtaster et udtryk, får du umiddelbart tilbagemelding om eventuelle syntaksfejl i det. Ved at indtaste en tekst under Teststreng, kan du se om udtrykket matcher strengen. I særdeleshed om det regulære udtryk indeholder grupper, såsom `"([a-z])"`, vises indholdet af de matchede delgrupper i et listefelt.

- ## Indstiksprogrammet `konsole`

  (... endnu ikke skrevet ...)

### Oversigt

&kdevelop; tilbyder udvidelige moduler, eller delprogrammer, som indlæses når programmet kører og efter behov. Det gør det muligt for udviklere kun at aktivere funktioner som de behøver eller ønsker for udviklingen.

Visse delprogrammer anses for at være globale — dvs. de påvirker hele funktionen hos &kdevelop;. For eksempel uimode-delprogrammet lader en udvikler vælge hvilken brugergrænseflade der skal bruges.

Andre delprogrammer er projektspecifikke, og bruges kun når et projekt af den typen indlæses. Håndtering af automake, behøver for eksempel kun at være aktiv når et automake-baseret projekt er indlæst. Ellers er den ikke aktiv.

Aktive dele kan påvirke &kdevelop; på mange måder. Afhængig af funktion, kan de tilføje ekstra menuer, ekstra menupunkter, ekstra værktøjsknapper &etc;

### Delprogrammer for projekthåndtering i &kdevelop;

antproject | ANT-projekthåndtering (&Java;-programmer)
autoprojekt | Automake projekthåndtering
customproject | Egen projekthåndtering
trollproject | Qmake-baseret projekthåndtering

### Globale delprogrammer i &kdevelop;

Delprogramnavn | Beskrivelse
programguiden | Ny projektguide
historie |
konsole | Indlejret terminal
editor-chooser | Vælger en intern teksteditor
doctreeview | Dokumentationssøger
openwith |
fileselector | En komponent til at vælge filer
uimode | Indstil grænsefladestilstand
teksttools | Yderligere tekstværktøjer
tipofday | Dagens vink
grepview | Et grafisk flerfilsøgningsværktøj
cvs | Støtte for CVS
værktøjer |
regexptest | Værktøj til at afprøve regulære udtryk
abbrev | Ekspansion af forkortelser
filter |
valgrind | En grafisk grænseflade for valgrind

### Delprogrammer for sprogunderstøttelse i &kdevelop;

cppsupport | Støtte for C/C++
fortransupport | Støtte for Fortran
javasupport | Støtte for &Java;
perlsupport | Støtte for Perl
phpsupport | Støtte for PHP
pythonsupport | Støtte for Python

### Projektspecifikke delprogrammer i &kdevelop;

astyle |
buglist |
classview | Klassevisningshåndtering
ctags |
debugger | Håndtering af &GNU;-fejlsøgere
diff |
distpart |
doxygen |
fileview |
javadebugger |
manager |
nedit |
outputviews |
perforce |
qeditor |
scripting |
scriptproject |
sourcenav |
svn |
visualboyadvance |
windowmenu |

## Eksempel på tilstande i brugergrænsefladen for &kdevelop;

### IDEAI-tilstand

Klik her for at gå tilbage til oversigten over tilstande.

Skærmaftryk

&kdevelop; IDEA-vinduetilstand

Klik her for at gå tilbage til oversigten over tilstande.

Skærmaftryk

&kdevelop; IDEA-tilstand, lukkede faneblade

Dette eksempel på et skærmaftryk demonstrerer en af hovedfordelene ved IDEAl tilstand. Der er et maksimum af arbejdsplads tilgængeligt. Alligevel er en vilkårlig anden værktøjsvisning parat med det samme ved at klikke på det tilsvarende faneblad.

Du vil sandsynligvis behøve noget tid for at vænne dig til ikonerne i fanebladslinjen. Hvis du er faret vild, så placér blot musen over et faneblad og vent nogle få sekunder. En kort værktøjsvink beskrivelse vil komme frem. I dette skærmaftryk er Automake Manager værktøjsvinket vist som et eksempel. Det beskriver det nederste faneblad i fanebladslinjen til højre.

Klik her for at gå tilbage til oversigten over tilstande.

### Underrammevinduetilstand

Klik her for at gå tilbage til oversigten over tilstande.

Skærmaftryk

&kdevelop; underrammetilstand

Klik her for at gå tilbage til oversigten over tilstande.

### Fanebladssidetilstand

Klik her for at gå tilbage til oversigten over tilstande.

Skærmaftryk

&kdevelop; faneblads-sidetilstand

Klik her for at gå tilbage til oversigten over tilstande.

### Topniveauvinduetilstand

Klik her for at gå tilbage til oversigten over tilstande.

Skærmaftryk

&kdevelop; topniveautilstand

Klik her for at gå tilbage til oversigten over tilstande.

## Yderligere information

### Hent information

(... endnu ikke skrevet ...)

### Rapportér fejl

(... endnu ikke skrevet ...)

### Licenser

&underFDL; &underGPL;

## Ændringer

### Ændringer i dokumentet

- 2003-01-03 — startede ændringsloggen

## Bibliografi

(... endnu ikke skrevet ...)

### GNU Make-manual

### GNU Automake

### GNU Autoconf

### Brug af GNU's kompiler-samling

Richard M.Stallman

### GNU Libtool

### GNU Autoconf, Automake, og Libtool

1st edition

October 2000

New Riders Publishing ISBN 1578701902

### Avanceret programmering i &UNIX;-miljø

1st edition

June 1992

W. Richard Stevens Addison-Wesley Pub Co ISBN 0201563177

### Thinking in C++, Volume 1: Introduction to Standard C++

2nd Edition

April 15, 2000

Bruce Eckel Prentice Hall ISBN 0139798099

### Åben kilde udvikling med CVS

2nd Edition

October 12, 2001

The Coriolis Group ISBN 158880173X

### Programmering i PHP

1st edition

March 2002

O'Reilly & Associates ISBN 1565926102

### Programmering i Python

2nd Edition

March 2001

Mark Lutz O'Reilly & Associates ISBN 0596000855

### Gui Programmering med Python : Ved brug af Qt værktøjssamlingen

Bk&Cd-r edition

January 2002

Boudewijn Rempt Opendocs Llc ISBN 0970033044

### Programmering i Perl

Kamelbogen

3rd Edition

July 2000

O'Reilly & Associates ISBN 0596000278

### At lære Perl

Lama-bogen

3rd Edition

July 15, 2001

O'Reilly & Associates ISBN 0596001320
&documentation.index;