KDevelop4/Manual/Fejlsøgning af programmer
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</menuchoice>. 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]]
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 te 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).
Herfra her du flere muligheder: Du kan udføre den aktuelle linje (<keycap>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).
Attaching the debugger to a running process
Sometimes, one wants to debug a program that's already running. One scenario for this is debugging parallel programs using MPI, or for debugging a long running background process. To do this, go to the menu entry , which will open a window like the one above. You will want to select the program that matches your currently open project in KDevelop - in my case that would be the step-32 program.
This list of programs can be confusing because it is often long as in the case shown here. You can make your life a bit easier by going to the dropdown box at the top right of the window. The default value is
, i.e. all programs that are run by any of the users currently logged into this machine (if this is your desktop or laptop, you're probably the only such user, apart from root and various service accounts); the list doesn't include processes run by the root user, however. You can limit the list by either choosing , removing all the programs run by other users. Or better still: Select , which removes a lot of processes that are formally running under your name but that you don't usually interact with, such as the window manager, background tasks and so on that are unlikely candidates for debugging.Once you have selected a process, attaching to it will get you into KDevelop's debug mode, open all the usual debugger tool views and stop the program at the position where it happened to be when you attached to it. You may then want to set breakpoints, viewpoints, or whatever else is necessary and continue program execution by going to the menu item
.Some useful keyboard shortcuts
Debugging | |
---|---|
F10 | Step over (gdb's "next") |
F11 | Step into (gdb's "step") |
F12 | Step out of (gdb's "finish") |