Zelfstudie: Code uitvoeren in het foutopsporingsprogramma in Visual Studio
Dit artikel bevat stap 4 in de reeks zelfstudies Werken met Python in Visual Studio.
Visual Studio biedt mogelijkheden voor het beheren van projecten, een uitgebreide bewerkingservaring, het Interactive Windowen volledige foutopsporing voor Python-code. In stap 4 van deze reeks zelfstudies gebruikt u het Foutopsporingsprogramma om uw code stapsgewijs uit te voeren, inclusief elke iteratie van een lus. In het Foutopsporingsprogrammakunt u het programma onderbreken wanneer aan bepaalde voorwaarden wordt voldaan. Op elk moment waarop het programma is onderbroken, kunt u de volledige status van het programma controleren en de waarde van variabelen wijzigen. Dergelijke acties zijn essentieel voor het opsporen van programmafouten en bieden ook nuttige hulpmiddelen voor het volgen van de exacte programmastroom.
In stap 4 van de zelfstudie leert u het volgende:
- Python-code uitvoeren in het Foutopsporingsprogramma in Visual Studio
- Onderbrekingspunten en voorwaarden instellen
- De status van het programma onderzoeken en variabelen wijzigen
- Verken Foutopsporingsprogramma vensters en acties
Voorwaarden
- Een Python-toepassingsproject met een Python-bestand (.py) met code die is gemaakt in stap 2: Python-code schrijven en uitvoeren en stap 3: het interactieve REPL-venster van deze zelfstudie gebruiken.
Het Python-bestand voorbereiden
Volg deze stappen om uw Python-projectbestand bij te werken om robuustere code op te nemen om de oefening voor foutopsporing voor te bereiden:
Open het Python-projectbestand (.py) in de editor.
Vervang de code in het bestand door de volgende code. Met deze versie van de code wordt de
make_dot_string
-functie uitgebreid, zodat u de afzonderlijke stappen in het foutopsporingsprogramma kunt onderzoeken. Hiermee wordt defor
lus verplaatst naar eenmain
-functie en wordt deze expliciet uitgevoerd door demain
-functie aan te roepen:from math import cos, radians # Create a string with spaces proportional to a cosine of x in degrees def make_dot_string(x): rad = radians(x) # cos works with radians numspaces = int(20 * cos(rad) + 20) # Scale to 0-40 spaces st = ' ' * numspaces + 'o' # Place 'o' after the spaces return st def main(): for i in range(0, 1800, 12): s = make_dot_string(i) print(s) main()
Start foutopsporing
Nu bent u klaar om uw bijgewerkte Python-code te controleren in het foutopsporingsprogramma.
Controleer of de code correct werkt door Foutopsporing>Start Debugging op de werkbalk te selecteren of gebruik de sneltoets F5. Met deze opdrachten wordt de code uitgevoerd in het Foutopsporingsprogramma.
De Foutopsporingsprogramma- detecteert geen problemen, dus het programma wordt uitgevoerd. Er wordt een uitvoervenster geopend en u ziet een aantal iteraties van het cosinusgolfpatroon. Selecteer een willekeurige toets om het uitvoervenster te sluiten.
Tip
Als u het uitvoervenster automatisch wilt sluiten wanneer het programma is voltooid, selecteert u Extra>Opties, vouwt u de Python>Foutopsporing tabblad uit en schakelt u het Wachten op invoer uit wanneer het proces normaal optie wordt afgesloten.
Stel een onderbrekingspunt in op de
for
-lusinstructie met behulp van een van de volgende methoden:- Selecteer in de linkermarge voor de coderegel.
- Klik met de rechtermuisknop op de coderegel en selecteer onderbrekingspunt>Onderbrekingspunt invoegen.
- Plaats de invoegpositie in de regel met code en selecteer Foutopsporing>Onderbrekingspunt in-/uitschakelen (of gebruik de sneltoets F9).
Onderbrekingspunten stoppen met het uitvoeren van code op een gemarkeerd punt, zodat u de status van het programma kunt inspecteren. Er wordt een rode stip weergegeven op elke regel met een ingesteld onderbrekingspunt.
Start het foutopsporingsprogramma opnieuw (F5-). De lopende code voor het programma stopt op de regel met het ingestelde onderbrekingspunt. U kunt nu de aanroepstack inspecteren en variabelen onderzoeken voor deze status van de actieve programmacode.
Visual Studio biedt veel manieren om uw programmacode en uitvoeringsgegevens te observeren, waaronder de volgende vensters:
- De Aanroepstack toont de geschiedenis van functie-aanroepen en methode-aanroepen door de programmacode.
- Gedefinieerde variabelen die in scope zijn, worden weergegeven in het venster Autos.
- De Locals weergave toont alle variabelen die Visual Studio in het huidige bereik (inclusief functies) vindt, zelfs voordat ze in de code zijn gedefinieerd.
Als u de volledige lijst met beschikbare vensters en acties wilt bekijken, selecteert u Foutopsporing>Windows.
U kunt het Foutopsporingsprogramma vensters openen om uw programmastatus weer te geven wanneer er een onderbrekingspunt wordt aangetroffen:
Gebruik debuggeracties
Wanneer Visual Studio stopt met het uitvoeren van code op een onderbrekingspunt, zijn er verschillende opdrachten die u kunt gebruiken om uw code te doorlopen of codeblokken uit te voeren voordat u de code opnieuw onderbreekt. De opdrachten zijn op een paar plaatsen beschikbaar in Visual Studio, waaronder de werkbalk Foutopsporingsprogramma, het Menu Fouten opsporen, het snelmenu met de rechtermuisknop in de code-editor en via sneltoetsen.
De werkbalk bovenaan het Visual Studio-venster biedt snelle toegang tot de meest voorkomende foutopsporingsopdrachten.
De volgende tabel bevat een overzicht van deze opdrachten, zoals deze van links naar rechts op de werkbalk worden weergegeven:
Actie | Snelkoppeling | Beschrijving |
---|---|---|
Doorgaan | F5 | Voer code uit totdat u het volgende onderbrekingspunt bereikt of totdat het programma is voltooid. |
Alles verbreken | Ctrl+Alt+Break | Pauzeer een langlopend programma. |
foutopsporing stoppen | Shift+F5 | Stop de toepassing op het huidige punt en verlaat de Debugger. |
opnieuw opstarten | Ctrl+Shift+F5 | Stop het programma op het huidige punt en start de uitvoering van het programma opnieuw vanaf het begin in het Foutopsporingsprogramma. |
Volgende uitdrukking weergeven | Alt++\ | Ga terug naar de volgende instructie die u in de code wilt uitvoeren. Met deze opdracht kunt u de plaats in uw code vinden waar het foutopsporingsprogramma is gestopt. |
Stap in | F11 | Voer de volgende instructie uit en stop. Als de volgende instructie een aanroep van een functie is, stapt de Debugger in de functie en stopt bij de eerste regel. |
Stap over | F10 | Voer de volgende instructie uit, inclusief het aanroepen van een functie (alle bijbehorende code uitvoeren) en het toepassen van een retourwaarde. Met deze opdracht kunt u eenvoudig functies overslaan die u niet nodig hebt om fouten op te sporen. |
uitstappen | Shift+F11 | Voer de code uit tot het einde van de huidige functie en stap vervolgens naar de aanroepinstructie en pauzeer. Deze opdracht is handig wanneer u geen fouten hoeft op te sporen in de rest van de huidige functie. |
Volg deze stappen om te werken met Debugger acties in uw Python-code:
De lusinstructie
for
overslaan met behulp van de actie Stap over.Een stap uitvoeren zorgt ervoor dat de debugger de huidige regel van code uitvoert, inclusief aangeroepen functies, en onmiddellijk pauzeert. Nadat u een stap hebt uitgevoerd, ziet u dat de variabele
i
nu is gedefinieerd in de Locals en Autos vensters."Step Over" de volgende coderegel, waarmee de
make_dot_string
functie wordt aangeroepen.In dit geval zorgt Stap over ervoor dat het foutopsporingsprogramma de volledige
make_dot_string
functie uitvoert en pauzeert nadat de functie is voltooid. De debugger stopt niet in de functie, tenzij daar een apart breakpoint bestaat.Ga nog een paar keer door met het doorlopen van de code en bekijk hoe de waarden in de Locals of Automatisch venster veranderen.
Dubbelklik in het venster Locals of Autos op de kolom Waarde om de waarde te bewerken. In dit voorbeeld wijzigt u de waarde voor de variabele
s
in'Hello, Python Application'
. Plaats de waarde tussen enkele aanhalingstekens. Selecteer Voer of een gebied buiten de waarde in om uw wijzigingen toe te passen.Ga door met het doorlopen van de code met behulp van Stap in totdat de aanroep van de
make_dot_string
functie wordt uitgevoerd.Voor een functie zorgt Stap in ervoor dat de debugger zowel de functie aanroept en de functiecode instapt. Wanneer het foutopsporingsproces zich in een functie bevindt, kunt u de lokale variabelen onderzoeken en de bijbehorende code specifiek doorlopen. In dit voorbeeld wordt de actie Stap in verplaatst naar de functie
make_dot_string
.Ga door met stappen met en stap in totdat de teruggave van de
make_dot_string
functie plaatsvindt.Wanneer u het einde van de
make_dot_string
functiecode bereikt, retourneert de volgende stap het *Foutopsporingsprogramma naar defor
lus met de nieuwe retourwaarde in des
variabele.Wanneer u weer naar de
print
instructie stapt, ziet u dat de stap in actie op deprint
instructie niet in die functie wordt ingevoerd. Dit gedrag komt doordat deprint
functie niet is geschreven in Python. Het is systeemeigen code in de Python-runtime.Ga verder met het gebruik van Stap in totdat u weer halverwege de functie
make_dot_string
bent. Gebruik vervolgens Stap Uit, en u ziet dat de Debugger terugkeert naar defor
lus.Met Step Outvoert de Debugger de rest van de functie uit en pauzeert dan automatisch in de aanroepende code. Deze actie is handig nadat u een deel van een lange functie hebt doorlopen en u de observatie van de functie wilt beƫindigen. Uitstappen doorloopt de resterende code of totdat er een expliciet breekpunt in de aanroepende code is ingesteld.
Ga door met het uitvoeren van het programma totdat het volgende onderbrekingspunt is bereikt met behulp van Doorgaan (F5). Omdat u een onderbrekingspunt hebt ingesteld in de
for
lus, breekt u de volgende iteratie uit.U kunt controleren of het programma blijft worden uitgevoerd door de veranderende waarde voor de
s
variabele in het venster Locals te observeren.
Onderbrekingspuntvoorwaarden gebruiken
Het doorlopen van honderden iteraties van een lus kan tijdrovend zijn, zodat u in Visual Studio een voorwaarde kunt toevoegen aan een onderbrekingspunt. Wanneer u een voorwaarde voor een onderbrekingspunt instelt, onderbreekt het foutopsporingsprogramma het programma alleen op het onderbrekingspunt wanneer aan de voorwaarde is voldaan.
De volgende stappen laten zien hoe u een onderbrekingspuntvoorwaarde op de instructie for
lus definieert, zodat het foutopsporingsprogramma alleen wordt onderbroken wanneer de waarde van de i
variabele groter is dan 1600:
Als u de onderbrekingspuntvoorwaarde wilt instellen, klikt u met de rechtermuisknop op de rode punt van het onderbrekingspunt en selecteert u Voorwaarden of gebruikt u de sneltoets Alt+F9>C.
In het popupvenster Instellingen voor onderbrekingspunt configureer je de volgende instellingen om de voorwaardein te stellen.
Stel het voorwaardetype in op voorwaardelijke expressie.
Definieer de evaluatie van de voorwaarde waarvoor waar is.
Voer
i > 1600
in als voorwaardewaarde.Selecteer . Sluit.
Selecteer F5- om door te gaan met foutopsporing en uitvoering van programma's. U ziet dat het programma veel iteraties uitvoert voordat het het voorwaardelijke onderbrekingspunt bereikt.
U kunt controleren of het Foutopsporingsprogramma de uitvoering van het programma correct onderbreekt wanneer het voorwaardelijke onderbrekingspunt wordt bereikt. Wanneer aan de voorwaarde wordt voldaan, wordt in het venster Locals de waarde van de variabele
i
weergegeven als1608
.Als u het programma tot voltooiing wilt uitvoeren, kunt u het onderbrekingspunt uitschakelen en doorgaan met de uitvoering van het programma.
Beweeg de muisaanwijzer over de rode stip en selecteer uitschakelen of klik met de rechtermuisknop op de rode stip en selecteer Onderbrekingspunt uitschakelen.
Selecteer Doorgaan (of druk op F5) om het programma uit te voeren.
Wanneer het programma afloopt, stopt Visual Studio de foutopsporingssessie en keert terug naar de bewerkingsmodus.
U kunt ook een onderbrekingspunt verwijderen. Selecteer de rode stip of klik met de rechtermuisknop op de punt en selecteer Onderbrekingspunt verwijderen. Met deze actie worden ook eventuele gedefinieerde voorwaarden verwijderd.
Tip
In sommige situaties, zoals een fout bij het starten van de Python-interpreter zelf, kan het Python-uitvoervenster onmiddellijk worden gesloten nadat het programma is voltooid, zonder te pauzeren of de Druk op een willekeurige toets om door te gaan prompt weer te geven. Als u een pauze en prompt wilt afdwingen, voegt u het argument -i
toe aan het Interpreter Argumenten>uitvoeren veld op het tabblad Debuggen. Dit argument zet de Python-interpreter in de interactieve modus nadat de code is uitgevoerd. Het programma wacht totdat u Ctrl+Z+Enter- selecteert om het venster te sluiten.