KDevelop4/Manual/Debugging programs/da: Difference between revisions
(Importing a new version from external source) |
No edit summary |
||
(16 intermediate revisions by 2 users not shown) | |||
Line 5: | Line 5: | ||
=== Kør et program i fejlsøgeren === | === Kør et program i fejlsøgeren === | ||
Når du har konfigureret en opstarter (se [[Special:myLanguage/KDevelop4/Manual/Running programs|Kør programmer]]), så kan du også køre det i fejlsøgeren: Vælg menuen <menuchoice>Kør -> Start fejlsøger</menuchoice> eller tast <keycap>F9</ | Når du har konfigureret en opstarter (se [[Special:myLanguage/KDevelop4/Manual/Running programs|Kør programmer]]), så kan du også køre det i fejlsøgeren: Vælg menuen <menuchoice>Kør -> Start fejlsøger</menuchoice> eller tast <keycap>F9</keycap>. Hvis du er fortrolig med '''gdb''', så er effekten den samme som at starte '''gdb''' med den kørbare fil specificeret i opstartskonfigurationen og så sige <code>Run</code>. Dette betyder, at hvis programmet et eller andet sted kalder <code>abort()</code> (fx hvis det støder på en "assertion", som ikke passer) eller hvis der forekommer en segmenteringsfejl, så vil debuggeren stoppe. Hvis programmet på den anden side kører indtil det er færdigt (hvadenten det løser sin opgave rigtigt eller ej), så vil fejlsøgeren ikke stoppe af sig selv før programmet er færdigt. I dette tilfælde har du brug for sætte et stoppunkt på alle de linjer i din kodebase, hvor du vil have fejlsøgeren til at stoppe, før du starter fejlsøgeren. Du kan gøre dette ved at placere markøren på en sådan linje og vælge menuen <menuchoice>Kør -> Slå stoppunkt til/fra</menuchoice> eller højreklikke på linjen og vælge <menuchoice>Slå stoppunkt til/fra</menuchoice> i kontekstmenuen. | ||
[[Image:kdevelop-4.png|center|thumb|550px]] | [[Image:kdevelop-4.png|center|thumb|550px]] | ||
Når du kører er program i fejlsøgeren, så kommer '''KDevelop''' i en anden tilstand: den vil erstatte værktøjsknapperne i hovedvinduets kant med nogle, som har med fejlsøgning snarere end redigering at gøre. Du kan se, hvilken tilstand du er i øverst til højre i vinduet: der er fanebladene <menuchoice>Eftersyn</menuchoice>, <menuchoice>Fejlsøgning</menuchoice> og <menuchoice>Kode</menuchoice>; ved at klikke på dem kan du skifte imellem | Når du kører er program i fejlsøgeren, så kommer '''KDevelop''' i en anden tilstand: den vil erstatte værktøjsknapperne i hovedvinduets kant med nogle, som har med fejlsøgning snarere end redigering at gøre. Du kan se, hvilken tilstand du er i øverst til højre i vinduet: der er fanebladene <menuchoice>Eftersyn</menuchoice>, <menuchoice>Fejlsøgning</menuchoice> og <menuchoice>Kode</menuchoice>; ved at klikke på dem kan du skifte imellem de tre forskellige tilstande; hver tilstand har sit eget sæt værktøjer, som kan konfigureres på samme måde, som du gjorde med værktøjerne i <menuchoice>Kode</menuchoice> i afsnittet om [[KDevelop4/Manual/Working_with_source_code#Tools and views|Værktøjer og visninger]]. | ||
Nå fejlsøgeren standser (ved et stoppunkt eller et sted, hvor <code>abort()</code> kaldes) kan du få forskellig slags information om dit program. I billedet ovenfor har vi for eksempel valgt værktøjet <menuchoice>Frame Stack</menuchoice> for neden i vinduet (det svarer nogenlunde til '''gdb's''' kommandoer "backtrace" og "info threads"), som til venstre viser de forskellige tråde, som i øjeblikket kører i dit program (der er i alt 8) og til højre, hvordan udførslen kom til det aktuelle stoppunkt (her blev <code>run()</code> kaldt fra <code>main()</code>; listen ville være længere, hvis vi var stoppet i en funktion kaldt fra <code>run()</code> selv). Til venstre kan vi inspicere lokale variable, herunder det aktuelle objekt (det objekt, som variablen <code>this</code> henviser til). | Nå fejlsøgeren standser (ved et stoppunkt eller et sted, hvor <code>abort()</code> kaldes) kan du få forskellig slags information om dit program. I billedet ovenfor har vi for eksempel valgt værktøjet <menuchoice>Frame Stack</menuchoice> for neden i vinduet (det svarer nogenlunde til '''gdb's''' kommandoer "backtrace" og "info threads"), som til venstre viser de forskellige tråde, som i øjeblikket kører i dit program (der er i alt 8) og til højre, hvordan udførslen kom til det aktuelle stoppunkt (her blev <code>run()</code> kaldt fra <code>main()</code>; listen ville være længere, hvis vi var stoppet i en funktion kaldt fra <code>run()</code> selv). Til venstre kan vi inspicere lokale variable, herunder det aktuelle objekt (det objekt, som variablen <code>this</code> henviser til). | ||
Herfra her du flere muligheder: Du kan udføre den aktuelle linje (<keycap>F10</keycap>, '''gdb's''' kommando "next") eller gå ind i funktionen (<keycap>F12</keycap>, '''gdb's''' kommando "finish"). '''KDevelop''' vil hele tiden opdatere de variable, som vises til venstre til deres aktuelle værdier. Du kan også lade musen svæve over et symbol i koden, fx en variabel; '''KDevelop''' vil så vise den aktuelle værdi af symbolet og give dig mulighed for at stoppe programmet, næste gang symbolets værdi ændres. Hvis du kender '''gdb''', så kan du også klikke på værktøjsknappen <menuchoice>GDB</menuchoice> for neden og få mulighed for at skrive '''gdb'''-kommandoer, for eksempel for at ændre værdien af en variabel (hvilke i øjeblikket ikke kan gøres på andre måder). | |||
<span id="Attaching the debugger to a running process"></span> | <span id="Attaching the debugger to a running process"></span> | ||
=== | === Knyt fejlsøgeren til en kørende proces === | ||
[[Image:kdevelop-9.png|center|thumb|300px]] | [[Image:kdevelop-9.png|center|thumb|300px]] | ||
Undertiden har man brug for at søge efter fejl i et program, som allerede kører; for eksempel når man fejlsøger parallelle programmer med [https://computing.llnl.gov/tutorials/mpi/ MPI] eller baggrundsprocesser, som kører i lang tid. For at gøre dette vælger du menuen <menuchoice>Kør -> Knyt til proces</menuchoice>, hvorved et vindue som ovenfor åbnes. Du skal vælge det program, som passer med det projekt, som du aktuelt har åbent i '''KDevelop''' — i mit tilfælde er det programmet step-32. | |||
Listen af programmer kan være forvirrende, fordi den ofte er lang som i eksemplet ovenfor. Du kan gøre livet lettere for dig selv ved at bruge dropnedlisten foroven til højre i vinduet. Standardværdien er <menuchoice>Brugerprocesser</menuchoice>, dvs. alle programmer, som køres af en af de brugere, der aktuelt er logget ind på maskinen (hvis det er din personlige computer, så er du nok den eneste bruger, bortset fra root og forskellige tjenester); listen inkluderer dog ikke processer, som køres af root-brugeren. Du kan begrænse listen ved enten at vælge <menuchoice>Egne processer</menuchoice> og derved fjerne alle programmer, som andre brugere kører; eller endnu bedre, vælg <menuchoice>Kun programmer</menuchoice>, hvilket fjerner en masse processer, som formelt kører under dit navn, men som du normalt ikke arbejder direkte med — vinduesmanageren, baggrundsopgaver og så videre — og som du normalt ikke vil søge fejl i. | |||
Når du har valgt en proces og knyttet '''KDevelop''' til den, så kommer du i fejlsøgningstilstand med alle de sædvanlige fejlsøgningsværktøjer; og programmet stopper der, hvor det var, da du knyttede dig til det. Nu kan du sætte stoppunkter, visningspunkter og hvad du ellers har brug for og derefter lade programmet fortsætte ved at vælge menuen <menuchoice>Kør -> Fortsæt</menuchoice>. | |||
<span id="Some useful keyboard shortcuts"></span> | <span id="Some useful keyboard shortcuts"></span> | ||
=== | === Nogle nyttig tastaturgenveje === | ||
{| class="tablecenter" style="border:1px solid" | {| class="tablecenter" style="border:1px solid" | ||
! colspan="2" style="background:#ffff99;" | | ! colspan="2" style="background:#ffff99;" | Fejlsøgning | ||
|- | |- | ||
| F10 | | F10 | ||
| | | Gå over (gdb's "next") | ||
|- | |- | ||
| F11 | | F11 | ||
| | | Gå ind i (gdb's "step") | ||
|- | |- | ||
| F12 | | F12 | ||
| | | Gå ud (gdb's "finish") | ||
|} | |} | ||
{{Prevnext2 | {{Prevnext2 | ||
| prevpage=Special:MyLanguage/KDevelop4/Manual/Running_programs | nextpage=Special:MyLanguage/KDevelop4/Manual/Working_with_version_control_systems | | prevpage=Special:MyLanguage/KDevelop4/Manual/Running_programs | nextpage=Special:MyLanguage/KDevelop4/Manual/Working_with_version_control_systems | ||
| prevtext= | | prevtext=Kør programmer | nexttext=Arbejdet med versionskontrolsystemer | ||
| index=Special:MyLanguage/KDevelop4/Manual | indextext= | | index=Special:MyLanguage/KDevelop4/Manual | indextext=Indholdsfortegnelse | ||
}} | }} | ||
[[Category: | [[Category:Udvikling/da]] |
Latest revision as of 06:01, 8 January 2015
Fejlsøgning af programmer i KDevelop
Kør et program i fejlsøgeren
Når du har konfigureret en opstarter (se Kør programmer), så kan du også køre det i fejlsøgeren: Vælg menuen eller tast F9. Hvis du er fortrolig med gdb, så er effekten den samme som at starte gdb med den kørbare fil specificeret i opstartskonfigurationen og så sige Run
. Dette betyder, at hvis programmet et eller andet sted kalder abort()
(fx hvis det støder på en "assertion", som ikke passer) eller hvis der forekommer en segmenteringsfejl, så vil debuggeren stoppe. Hvis programmet på den anden side kører indtil det er færdigt (hvadenten det løser sin opgave rigtigt eller ej), så vil fejlsøgeren ikke stoppe af sig selv før programmet er færdigt. I dette tilfælde har du brug for sætte et stoppunkt på alle de linjer i din kodebase, hvor du vil have fejlsøgeren til at stoppe, før du starter fejlsøgeren. Du kan gøre dette ved at placere markøren på en sådan linje og vælge menuen eller højreklikke på linjen og vælge i kontekstmenuen.
Når du kører er program i fejlsøgeren, så kommer KDevelop i en anden tilstand: den vil erstatte værktøjsknapperne i hovedvinduets kant med nogle, som har med fejlsøgning snarere end redigering at gøre. Du kan se, hvilken tilstand du er i øverst til højre i vinduet: der er fanebladene Værktøjer og visninger.
, og ; ved at klikke på dem kan du skifte imellem de tre forskellige tilstande; hver tilstand har sit eget sæt værktøjer, som kan konfigureres på samme måde, som du gjorde med værktøjerne i i afsnittet omNå fejlsøgeren standser (ved et stoppunkt eller et sted, hvor abort()
kaldes) kan du få forskellig slags information om dit program. I billedet ovenfor har vi for eksempel valgt værktøjet for neden i vinduet (det svarer nogenlunde til gdb's kommandoer "backtrace" og "info threads"), som til venstre viser de forskellige tråde, som i øjeblikket kører i dit program (der er i alt 8) og til højre, hvordan udførslen kom til det aktuelle stoppunkt (her blev run()
kaldt fra main()
; listen ville være længere, hvis vi var stoppet i en funktion kaldt fra run()
selv). Til venstre kan vi inspicere lokale variable, herunder det aktuelle objekt (det objekt, som variablen this
henviser til).
Herfra her du flere muligheder: Du kan udføre den aktuelle linje (F10, gdb's kommando "next") eller gå ind i funktionen (F12, gdb's kommando "finish"). KDevelop vil hele tiden opdatere de variable, som vises til venstre til deres aktuelle værdier. Du kan også lade musen svæve over et symbol i koden, fx en variabel; KDevelop vil så vise den aktuelle værdi af symbolet og give dig mulighed for at stoppe programmet, næste gang symbolets værdi ændres. Hvis du kender gdb, så kan du også klikke på værktøjsknappen for neden og få mulighed for at skrive gdb-kommandoer, for eksempel for at ændre værdien af en variabel (hvilke i øjeblikket ikke kan gøres på andre måder).
Knyt fejlsøgeren til en kørende proces
Undertiden har man brug for at søge efter fejl i et program, som allerede kører; for eksempel når man fejlsøger parallelle programmer med MPI eller baggrundsprocesser, som kører i lang tid. For at gøre dette vælger du menuen , hvorved et vindue som ovenfor åbnes. Du skal vælge det program, som passer med det projekt, som du aktuelt har åbent i KDevelop — i mit tilfælde er det programmet step-32.
Listen af programmer kan være forvirrende, fordi den ofte er lang som i eksemplet ovenfor. Du kan gøre livet lettere for dig selv ved at bruge dropnedlisten foroven til højre i vinduet. Standardværdien er
, dvs. alle programmer, som køres af en af de brugere, der aktuelt er logget ind på maskinen (hvis det er din personlige computer, så er du nok den eneste bruger, bortset fra root og forskellige tjenester); listen inkluderer dog ikke processer, som køres af root-brugeren. Du kan begrænse listen ved enten at vælge og derved fjerne alle programmer, som andre brugere kører; eller endnu bedre, vælg , hvilket fjerner en masse processer, som formelt kører under dit navn, men som du normalt ikke arbejder direkte med — vinduesmanageren, baggrundsopgaver og så videre — og som du normalt ikke vil søge fejl i.Når du har valgt en proces og knyttet KDevelop til den, så kommer du i fejlsøgningstilstand med alle de sædvanlige fejlsøgningsværktøjer; og programmet stopper der, hvor det var, da du knyttede dig til det. Nu kan du sætte stoppunkter, visningspunkter og hvad du ellers har brug for og derefter lade programmet fortsætte ved at vælge menuen
.Nogle nyttig tastaturgenveje
Fejlsøgning | |
---|---|
F10 | Gå over (gdb's "next") |
F11 | Gå ind i (gdb's "step") |
F12 | Gå ud (gdb's "finish") |