Hem Personliga finanser Stoppa vid och återuppta från en brytpunkt - dummies

Stoppa vid och återuppta från en brytpunkt - dummies

Innehållsförteckning:

Video: Cyberbrottslingar binda upp nödtelefon linjer genom TDO attacker 2025

Video: Cyberbrottslingar binda upp nödtelefon linjer genom TDO attacker 2025
Anonim

Att lära sig att använda debugger är en av de viktigaste sakerna du kan göra för att uppnå ditt C ++-spel. Följande steg är nödvändiga för att ställa in en brytpunkt, stoppa programmet, granska några variabler och fortsätta programmet.

Från och med våren 2014, Kod:: Blokker integreras inte med debuggeren för Mac, så om du är en Mac-användare kanske dessa exempel inte fungerar för dig.

Vad är en debugger?

Innan du går längre kan det hjälpa om du förstår vad en debugger är. En debugger är ett separat program som låter dig styra ditt exekveringsprogram. Specifikt låter du stoppa körning av programmet på specifika linjer kod, för att undersöka värdet av variabler, ändra värdet av variabler och återuppta genomförandet av programmet.

GNU debugger har ett kommandoradsgränssnitt som är både svårt att komma ihåg och svårt att använda (det är en vinnande kombination om du någonsin hört en). Lyckligtvis Code:: Blocks ger ett nästan sömlöst grafiskt gränssnitt till GNU debugger. Medan du klickar på redigeringsfönstren och aktiverar rullgardinsmenyerna, Code:: Blocks skickar kryptiska kommandon till debugger i bakgrunden och tolkar och visar grafiskt resultaten. Är det inte bra när två program chit-chatt i bakgrunden för att rädda dig?

Det bästa sättet att lära sig om debugger är att bara följa dessa exempel.

Installera ditt program för att använda debuggeren

Du måste bygga ditt program med hjälp av speciella kompilatorinställningar om du tänker köra den under kontroll av debuggeren. Det enklaste sättet att göra detta är rätt i början när du skapar ditt projekt. När du har angett att du vill skapa en konsolansökan och tillhandahåller programmets namn, Kod:: Block kommer att fråga dig om du vill bygga ditt program i Debug-konfiguration, Släpp konfiguration eller båda, som visas i Figur 1. Var säker på att Debug-konfiguration är aktiverad.

Figur 1: Projektguiden ger dig möjlighet att ange en Debug-konfiguration när du skapar projektet.

Ett program i Debug-konfiguration innehåller mycket extra information som debuggeren behöver för att kunna göra sin magi. Denna information innehåller

  • Adressen till varje rad av C ++-källkod

  • Adressen till varje variabel

  • Namnen och sminken i varje klass i ditt program

All denna debuggerinformation lägger mycket massa till det körbara programmet - hundratals kilobytes eller mer. Detta utrymme är helt onödigt om du inte avser att köra programmet under kontroll av debuggeren, så Kod:: Block ger dig möjlighet att bygga körbara filer utan den här informationen i så kallad Release-konfiguration.Släppprogrammen är mindre, laddas snabbare och till och med körs snabbare.

Om du aktiverar både Debug and Release-konfigurationer i ditt projekt kommer du att välja att välja vilken typ av körbar du vill bygga.

Det finns två skillnader mellan Debug and Release-konfigurationer:

  • Debug-konfigurationen innehåller kompileringsalternativet -g .

    Det här alternativet säger att kompilatorn ska inkludera symbolinformation i den slutliga körningen. Det här är allt som nämns ovan - adressen till varje kodlinje och varje variabel, samt en beskrivning av varje klass som används i ditt program.

  • Kodoptimeraren är avstängd i Debug-konfiguration och påslagen i Release-konfigurationen.

    GNU-kodoptimeraren genererar program som körs snabbare, men det gör det genom att flytta instruktioner på sätt som kan vara ganska förvirrande när du felsöker ditt program. Utlösningskonfigurationen innehåller inte -g -knappen och möjliggör viss nivå av optimering genom att -O kopplas in.

Se till att du för närvarande bygger Debug-utgåvan genom att välja Bygg → Välj mål → Felsökning, som visas i Figur 2.

Figur 2: Du måste fortfarande se till att du bygger den debuggable körbara, jämn om du aktiverade Debug Configuration när du skapade ditt projekt.

Uppgradera ditt program genom att välja Bygg → Återuppbygga.

Stopp vid en brytpunkt

För att ställa in en brytpunkt, klicka bara på området precis till höger om radenummeret - detta område är känt i Kod:: Blinkar parlansen som tråget. Inte bara visas linjen i en annan färg, vilket indikerar att redaktören har markerat den, men ett litet stoptecken visas i tråget, som visas i Figur 3. Detta är en indikation på att en brytpunkt har ställts in på rad 11.

Figur 3: Kod:: Block använder en söt liten stoppskylt för att indikera när en brytpunkt är inställd.

Du kan ställa in så många brytpunkter som du vill på en gång, men den här brytpunkten kommer att vara bra för det här exemplet.

Här kan du starta programmet med hjälp av alternativet Debug → Start / Continue som visas i Figur 4.

Figur 4: Starta (eller återuppta) exekveringen av ditt program med menyn Debug-> Start / Continue.

Programmet börjar exekvering som normalt men stoppar nästan omedelbart med en liten gul pil som pekar på linje 11 som visas i figur 5. Dessutom visas ett tomt fönster som normalt innehåller programutmatning. Ingenting visas i programutmatningen eftersom rad 11 ännu inte ska utföras.

Figur 5: Programutförandet stannar så snart programmet möter en brytpunkt.

Wow! Det är coolt.

Återuppta körning av ett program

Du kan ställa in en brytpunkt på nästa rad och välja Debug → Start / Fortsätt för att fortsätta att exekvera programmet till nästa rad om du vill. Men eftersom det här är så vanligt att göra, Code:: Blocks ger alternativet Debug → Next Line, vilket betyder "Kör programmet till nästa rad."

Detta gör att programmet snabbt blinkar, eftersom kontrollen övergår till programmet, tillräckligt länge för att utföra linje 11 innan det kommer till ett stopp igen, som visas i Figur 6.

Figur 6: Genomför kommandot nästa kommando orsakar debuggeren för att utföra en rad i programmet.

Du kan upprepa denna process så ofta som du vill, och kan enkelt stegvis gå igenom programmet.

När du kommer till ett funktionssamtal, fortsätter nästa linje i den aktuella funktionen, kör hela funktionen som om den bara var en enda linje (vilken är den på den här nivån). Om du vill skicka kontroll till funktionssamtalet väljer du Debug → Step Into istället. Detta fungerar bara för funktioner som du har källkoden för - det fungerar inte bra för C ++-biblioteksfunktioner.

Varje gång du blir trött på att gå in, kan du avsluta programmet genom att välja Debug → Stop Debugger. Det stoppar inte bara debuggeren, det stoppar också ditt program.

Undersök variabler

Ensteg genom ditt program är ett bra sätt att få en känsla för var ditt program går, men det kan vara svårt att förstå varför, om du inte kan undersöka variablerna som används för att fatta beslut. När du till exempel gör ett enda steg i exemplet programmet kanske du märker att kontroll inte alls går in i för -slussen. Varför är det så?

Du stoppar programmet genom att välja Debug → Stop Debugger eller trycka på Shift + F8 och starta om genom att välja Debug → Start / Fortsätt eller tryck på F8. Enkelt steg genom att välja Debug → Next Line eller trycka på F7 tills exekveringen når början av för -slingan.

Se till att fönstret Watch är synligt genom att välja Debug → Debugging windows → Watches. Ett fönster som det i Figur 7 visas och visar värdena på argumenten och eventuella lokala variabler. Observera att nNumberofArgs är 1, bara namnet på själva programmet. Eftersom jag börjar med ett värde på 1, kommer slingan aldrig att utföras. Lägg till klockvariablerna pszArgs [0] och pszArgs [1] för att se vad de innehåller: programmets namn och en null. A ha! Programmet har inga argument att iterera över.

Figur 7: Fönstret Watch gör att programmeraren kan visa värdet av variabler.

Du kan ändra argumenten till programmet genom att välja Project → Set Programs 'Arguments. I det här fönstret kan du lägga vad du vill ha.

Observera att fönstret Watch visar mig namnet på variabeln, dess typ och dess värde. Du kan inte ändra dess typ, men du kan ändra dess värde från det här fönstret, om du vill. Att ändra värdet på nNumberofArgs är inte särskilt användbart, men ibland ändrar värdet på en variabel mig att tvinga körning ner en annan väg bara för att se vad som kan hända.

Fortsätter ett stoppat program

Ett knep att komma ihåg är att det ibland kan bli förvirrande om varför ett program stoppas. Inte alla program som stoppas är under kontroll av debugger. Ibland väntar de på inmatning från användaren.

För att se denna effekt, gör du ett steg med programmet PrintArgs tills kontrollen når linje 26.När du väljer Nästa rad, försvinner markören som visas i Figur 8. Borta är den trevliga gula pilen som påminner dig om var du befinner dig i programmet. Vad hände?

Figur 8: Kontrollen verkar gå bort när programmet väntar på användarinmatning.

Vad hände är att programmet väntar på mig att trycka på Enter på tangentbordet. Först måste du välja programfönstret. Då kan du trycka på Enter (du kan behöva göra det mer än en gång). Efter att ha gjort det verkar ingenting hända i programfönstret eftersom kontrollen nu har gått tillbaka till felsökaren i rutan Kod:: Block. När du väljer det här fönstret igen ser du den lugnande gule pilen som berättar för mig den här koden:: Block är tillbaka i kontrollen.

När du kör ditt program under debuggeren och kontrollen tycks gå, kan programmet vänta på inmatning från tangentbordet. Byt till programfönstret för att se om så är fallet. Om så är fallet, så snart du anger något, kommer kontrollen att återgå till felsökaren.

Stoppa vid och återuppta från en brytpunkt - dummies

Redaktörens val

Vad är en Java-karta? - dummies

Vad är en Java-karta? - dummies

Arrays och specialiserade listor gör det möjligt att utföra en fantastisk uppsättning uppgifter med Java. Det finns dock situationer där en Java-applikation behöver något som är mer relaterat till en databas, utan att egentligen ha allt databasbagage (som att behöva köpa en separat applikation). Till exempel kanske du vill kunna ...

Några få saker om Java Math - dummies

Några få saker om Java Math - dummies

Tro det eller inte, datorer - även de mest kraftfulla - Ha vissa begränsningar när det gäller att utföra matematiska beräkningar. Dessa begränsningar är vanligtvis obetydliga, men ibland slår de sig och biter på dig. Här är de saker du behöver se upp för när du gör matte i Java. Helhetsflöde Det grundläggande problemet ...

Vad är recursion i Java Programmering? - dummies

Vad är recursion i Java Programmering? - dummies

Rekursion är en grundläggande programmeringsteknik som du kan använda i Java, där en metod kallar sig för att lösa ett problem. En metod som använder denna teknik är rekursiv. Många programmeringsproblem kan lösas endast genom rekursion, och vissa problem som kan lösas med andra tekniker löses bättre genom rekursion. En av ...

Redaktörens val

4 Måste-inkludera i din blogg sidobardesign - dummies

4 Måste-inkludera i din blogg sidobardesign - dummies

Din bloggens sidofält är viktig fastighet som bör innehålla de element du vill ha mest. När du utformar din blogg sidofält kan du dra från en nästan oändlig lista över sidospårelement. Genom att välja noggrant vad som ska inkluderas (och vad som inte ska inkluderas) kan du ställa in din blogg från andra.

5 Användbara Wordpress Plugins - dummies

5 Användbara Wordpress Plugins - dummies

Om du bloggar på en självhävd plattform med WordPress-programvara, är det dags att anpassa din blogg med plug-ins - programvara som kan "anslutas" till din befintliga WordPress bloggprogramvara. Plug-ins gör det möjligt för dig att göra allt från funktionsbildspel i dina blogginlägg för att ansluta sociala medier till din webbplats. Här är fem användbara ...

7 Sätt att erövra Writer's Block som en Blogger - dummies

7 Sätt att erövra Writer's Block som en Blogger - dummies

Varje bloggare möter författarens block i ett tid eller annan. Om du är den typ av bloggare som sköter innehåll varje dag, kan författarens block vara stäverande. Kan du inte ta en paus för att få ditt skrivande mojo tillbaka? Prova en (eller flera) av dessa sju sätt att slå författarens block för att få dig tillbaka ...

Redaktörens val

10 Stora elektronikkomponentkällor - dummies

10 Stora elektronikkomponentkällor - dummies

Letar du efter några bra källor till dina elektroniska delar? Denna lista ger dig några fleråriga favoriter, både inom och utanför Nordamerika. Denna lista är inte uttömmande. Du hittar bokstavligen tusentals specialutbud för ny och begagnad elektronik. Plus, Amazon och eBay ger virtuella marknadsplatser för alla sorters säljare - ...

Elektronik Basics: Resistance - dummies

Elektronik Basics: Resistance - dummies

I elektronikvärlden är motståndet inte meningslöst. Faktum är att motstånd kan vara mycket användbart. Utan motstånd skulle elektronik inte vara möjligt. Elektronik handlar om att manipulera strömmen av ström, och ett av de mest grundläggande sätten att manipulera strömmen är att minska det genom resistans. Utan motstånd strömmar strömmen oreglerad och där ...

Digital elektronik: Så här installerar du BASIC Stamp Editor och Anslut till Stämpeldummorna

Digital elektronik: Så här installerar du BASIC Stamp Editor och Anslut till Stämpeldummorna

För att berätta för BASIC Stamp vad du vill göra i ditt digitala elektronikprojekt måste du programmera det. BASIC Stamp Windows Editor är den programvara som du använder på din dator för att skapa program som kan laddas ner till en BASIC Stamp-mikrokontroller. Denna programvara är tillgänglig gratis från Parallax webbplats. ...