Kapitel 7. Avlusa ett program i KDevelop

Köra ett program i avlusaren

När du väl har ställt in en start (se Köra program), kan du också köra det i en avlusare: Välj menyalternativet KörAvlusa start, eller tryck på Alt+F9. Om du är bekant med gdb är effekten samma som att starta gdb med det körbara programmet angivet i startinställningen och sedan använda run. Det betyder att om programmet anropar abort() någonstans (t.ex. när du stöter på en kontroll som misslyckas) eller om ett segmenteringsfel uppstår, stoppar avlusaren. Å andra sidan, om programmet kör klart (vare sig det gör vad det ska eller inte) så stoppar inte avlusaren av sig själv innan programmet avslutas. I det senare fallet, måste du ange en brytpunkt på alla kodrader i din kodbas där du vill att avlusaren ska stoppa innan avlusaren startas. Du kan göra det genom att flytta markören till en sådan rad och välja menyalternativet KörVäxla brytpunkt, eller högerklicka på en rad och välja Växla brytpunkt i den sammanhangsberoende menyn.

Att köra ett program i avlusaren ändrar läge i KDevelop: det ersätter alla verktygsknappar längs huvudfönstrets omkrets med sådana som är lämpliga för avlusning, istället för redigering. Du kan se vilket läge som används genom att titta längst upp till höger i fönstret: det finns flikar som kallas Granskning. Avlusning och Kod. Genom att klicka på dem är det möjligt att byta fram och tillbaka mellan de tre lägena. Varje läge har en uppsättning egna verktygsvyer, som du kan ställa in på samma sätt som vi har ställt in verktygen för Kod i avsnittet Verktyg och vyer.

När avlusaren väl stoppar (vid en brytpunkt eller en punkt där abort() anropas) kan du inspektera en mängd olika information om programmet. På bilden ovan har vi exempelvis valt verktyget Aktiveringspoststack längst ner (som ungefär motsvarar kommandona backtrace och info threads i gdb) som visar de olika trådarna som för närvarande kör i programmet till vänster (här är det totalt åtta) och hur körningen har kommit till den aktuella stoppunkten till höger (här: main() anropade run(), listan skulle vara längre om vi hade stoppat i en funktion som anropas av run() själv). Till vänster kan vi inspektera lokala variabler inklusive det aktuella objektet (objektet som pekas ut av variabeln this).

Härifrån finns det olika möjligheter som du kan välja: Du kan köra den aktuella raden (F10, kommandot next i gdb), stega in i funktionen (F11, kommandot step i gdb), eller köra till funktionens slut (F12, kommandot finish i gdb). Efter varje steg uppdaterar KDevelop variablerna som visas till vänster till deras aktuella värden. Du kan också hålla musen över en symbol i koden, t.ex. en variabel. Då visar KDevelop symbolens aktuella värde och erbjuder att stoppa programmets körning nästa gång variabelns värde ändras. Om du känner till gdb, kan du också klicka på verktygsknappen GDB längst ner, och få möjlighet att skriva in kommandon i gdb, exempelvis för att ändra värdet på en variabel (som inte för närvarande verkar gå att göra på något annat sätt).