Hoofdstuk 7. Programma's debuggen in KDevelop

Een programma uitvoeren in de debugger

Nadat u een starter heeft ingesteld (lees programma's uitvoeren), kunt u het ook uitvoeren in een debugger: Selecteer het menu item UitvoerenOpstarten debuggen , of toets Alt+F9. als u bekend bent met gdb, het effect is hetzelfde als het starten van gdb met het programma opgegeven in de opstartconfiguratie en vervolgens de opdracht Run geven. Dit houdt in dat als het programma ergens abort() aanroept (bijv. wanneer u een ongeldige statement tegenkomt) of als er een segmentation fault is, dan zal de debugger stoppen. Maar als het programma gewoon tot aan zijn eind doorloopt (met of zonder het gewenste resultaat) dan zal de debugger niet uit zichzelf stoppen voordat het programma zelfstandig is geëindigd. In dit laatste geval wilt u waarschijnlijk voordat u de debugger start breakpoints zetten op alle programma-regels waarvan u wilt dat de debugger er stopt. U kunt dit doen door met de cursor naar de betreffende regel te gaan en vervolgens het menu item UitvoerenBreekpunt aan/uit te selecteren, of met de rechtermuisknop op een regel te klikken en vervolgens Breekpunt aan/uit uit het contextmenu te selecteren.

Een programma uitvoeren in de debugger zet KDevelop in een andere modus: het zal alle knoppen voor Hulpmiddelen aan de randen van het hoofdvenster vervangen door diegenen die van belang zijn voor debuggen, in plaats van voor bewerken. U kunt zien in welke modus u bezig bent door naar rechtsboven van het venster te kijken: er zijn tabbladen genaamd Nakijken, Debug en Code; er op klikken stelt u in staat tussen de drie modi te schakelen; elke modus heeft een eigen set hulpmiddelen, die u op dezelfde manier kunt instellen zoals we de hulpmiddelen voor Code in de sectie Gereedschappen en vensters.

Nadat de debugger stopt (op een breekpunt of een punt waar abort() wordt aangeroepen) kunt u een variëteit van informatie inspecteren over uw programma. In de bovenstaande afbeelding, bijvoorbeeld, hebben we onderaan het hulpmiddel Framestack geselecteerd (ruwweg gelijk aan backtrace van gdb en commando's info threads) die de verschillende threads die nu actief zijn in uw programma aan de linkerkant (hier een totaal van 8) en hoe uitvoeren leidde naar het huidige stoppunt rechts (hier: main() genaamd run(); de lijst zou langer zijn als we gestopt waren in een functie genaamd door run() zelf). Links kunnen we lokale variabelen inspecteren inclusief het huidige object (het object aangewezen door de variabele this).

Vanaf hier zijn er verschillende mogelijkheden waaruit u kunt kiezen: U kunt de geselecteerde regel uitvoeren (F10, gdb's next commando), de functie inspecteren (F11, gdb's step commando), of ga naar het einde van de functie (F12, gdb's finish commando). KDevelop update voortdurend de variabelen aan de linkerkant bij met de actuele waarden. Als u met uw muis boven een symbool (bijv. een variabele;) in uw code zweeft , dan toont KDevelop u de actuele waarde daarvan en krijgt u de mogelijkheid aangeboden om het programma te stoppen als de waarde daarvan wijzigt. Als u bekent met gdb dan kunt ook op de knop GDB klikken zodat u daarna een opdracht voor gdb kunt invoeren, bijvoorbeeld om de waarde van een variabele te wijzigen (hiervoor lijkt geen andere methode te bestaan).