# Debuggen, testen en profileren [Programmeergidsen](LEESMIJ.md) · [Edities](edities.md) Creator Pro, inclusief het technische proefrecht, voegt een debugger, een testrunner en een broncodeprofiler toe aan de desktop-IDE en CLI. Gewoon **Stap**, inspectie, normale foutmeldingen en handmatig testen blijven gratis in Learner. Deze gereedschappen maken gewone Core-code niet afhankelijk van Pro. ## Een programma debuggen Open **Ontwikkelgereedschap · Pro** in de IDE. Vul voor breekpunten uitvoerbare regelnummers in, gescheiden door komma's, en start de debugger. Hij pauzeert vóór de eerste uitvoerbare opdracht. Commentaar en lege regels zijn geen breekpuntlocaties. - **Instappen (Step Into)** bereikt de volgende opdracht, ook binnen een aangeroepen functie. - **Overstappen (Step Over)** voltooit de huidige opdracht, inclusief aanroepen, vertakking of lus. Een expliciet breekpunt daarbinnen stopt de uitvoering wel. - **Uitstappen (Step Out)** voltooit de huidige functieaanroep; dit kan niet in het buitenste frame. - **Ga verder (Continue)** gaat door tot het volgende breekpunt of het einde. - Selecteer een frame in de aanroepstack om de zichtbare lokale variabelen te bekijken. Het binnenste frame staat bovenaan. Voeg een watch toe, bijvoorbeeld `score + 1` of `speler["naam"]`, in de syntaxtaal van het programma. Watches lezen waarden en ondersteunen operatoren, indexering en leden. Ze kunnen geen functies aanroepen, waarden toewijzen of bestands-/netwerktoegang vragen. Een niet-ondersteunde expressie geeft een fout zonder het programma te wijzigen. De CLI biedt dezelfde bediening: ```sh pliro debug --break 7 voorbeeld.pliro ``` Gebruik bij de prompt `into`, `over`, `out`, `continue`, `stack`, `frame 0`, `watch score + 1`, `break 12`, `clear` of `stop`. Opties staan vóór het bestandspad. De CLI-debugger en -profiler annuleren interactieve programma-invoer; gebruik de IDE voor formulieren en vragen. Broncode wijzigen begint een nieuwe uitvoering. Stop sluit de sessie en de toegekende bronnen. Geavanceerde applicatietoegang vereist nog steeds [afzonderlijke declaraties en toestemmingen](geavanceerde-applicaties.md). ## Herhaalbare tests uitvoeren Een testsuite is een UTF-8-JSON-bestand. Bewaar dit als `suite.json`: ```json { "schemaVersion": 1, "cases": [{ "name": "verdubbelen", "locale": "nl", "source": "functie dubbel(x):\n geef x * 2\nlaat antwoord = dubbel(4)\nzeg antwoord\n", "expectedOutput": "8\n", "assertions": ["antwoord == 8"] }] } ``` Voer `pliro test suite.json` uit. De opdracht schrijft een JSON-rapport en eindigt met een niet-nulstatus wanneer een test mislukt. Het testpaneel in de IDE accepteert dezelfde JSON: neem de huidige broncode over als beginpunt, bewerk die, voer de suite uit of annuleer haar. Elke test bevat `name`, `locale` (`en` of `nl`), `source` en de exacte `expectedOutput`. Optionele velden: | Veld | Betekenis | |---|---| | `expectedState` | Standaard `finished`; gebruik `failed` om een runtimefout te verwachten | | `assertions` | Alleen-lezenexpressies die na uitvoering elk waar moeten zijn | | `modules` | Map van draagbare modulebestandsnaam naar broncode, voor integratietests | | `database` | `true` geeft deze test een nieuwe SQLite-database in het geheugen | Variabelen, opgeslagen waarden en databasetoestand zijn per test gescheiden. Tests erven geen geselecteerde bestanden, live netwerktoegang, productiegeheimen of interactieve invoer. Dit ondersteunt herhaalbare unit- en module-/database-integratietests, geen willekeurige shellopdrachten of live diensten. De veiligheidsgrenzen zijn 128 tests, 127 modules en 64 asserties per test, 4096 bytes per assertie en 2 MiB totale testtekst. Uitvoering heeft maximaal 100.000 instructies, 5 seconden en 64 KiB uitvoer per test, en 60 seconden per suite. Dit zijn veiligheidsgrenzen, geen commerciële project- of uitvoeringsquota. ## Trage opdrachten vinden Start een profielmeting in de IDE, of: ```sh pliro profile voorbeeld.pliro > profiel.json ``` De CLI schrijft het rapport naar standaarduitvoer en programma-uitvoer naar standaardfoutuitvoer. Elke opdrachtregel bevat de bronlocatie, het aantal bezoeken en de inclusieve verstreken tijd in nanoseconden. Het rapport vermeldt ook evaluatorbezoeken en afkapping. Pauzetijd in de debugger telt niet mee. Wachttijd, I/O en onderliggende opdrachten tellen wel mee. Geneste regels overlappen: tel ze niet op als totale CPU-tijd. Deze profiler meet broncode-uitvoeringstijd; CPU-steekproeven, allocatieprofilering en native procesdebugging zijn niet beschikbaar. ## Je werk behouden Met **Conceptgegevens bewaren** bewaar je rapporten en suitetekst. Met geldige Learner-toegang kun je na verlies van Pro nog steeds projecten openen, bewerken en bewaren en verzamelde rapporten behouden; actieve Pro-sessies stoppen. Gegenereerde applicaties hebben geen Pliro-licentiecontrole. Deze ontwikkelgereedschappen werken momenteel in de desktop-IDE en CLI. De openbare browserspeeltuin biedt ze niet. Productietools voor crashes/logging en live-dienstadapters voor tests blijven gepland. [Geavanceerde data en netwerken](geavanceerde-applicaties.md)