Skip to main content

Lernfortschritte beim Debuggen mit GitHub Copilot

Identifiziere und behebe Fehler in deinem Code, indem du GitHub Copilot um Hilfe bittest.

Das Suchen und Beheben von Fehlern im Code kann frustrierend sein, insbesondere als Entwickelnde mit wenig Erfahrung. Glücklicherweise können Tools wie GitHub Copilot Fehler schnell identifizieren und squashen, sodass du dich auf kreativere, interessantere Arbeit konzentrieren kannst.

Voraussetzungen

In den Beispielen in diesem Artikel wird davon ausgegangen, dass du GitHub Copilot zum Debuggen eines Python-Projekts in Visual Studio Code (VS Code) verwendest. Für die Beispiele ist Folgendes erforderlich:

Lernfortschritte beim Debuggen durch Beispiele

Es gibt zwei Hauptszenarios, wenn du versuchst, Code mit Fehlern auszuführen:

  • Dein Code wird beendet, bevor die Ausführung beendet wird, und du erhältst eine Fehlermeldung.
  • Dein Code wird ohne Fehler ausgeführt, aber die Ausgabe unterscheidet sich von dem, was du erwartet hast.

Glücklicherweise kann Copilot in beiden Fällen beim Debuggen von Code helfen. Nutze die folgenden Beispiele, um zu erfahren, wie dies funktioniert.

Debuggen eines Fehlers mit GitHub Copilot

Wenn du Code mit Fehlern ausführst, wird häufig eine Fehlermeldung angezeigt. Die Meldung informiert dich über die Datei und Zeile, in der der Fehler aufgetreten ist. Zudem wird kurz beschrieben, was nicht funktioniert hat. Fehlermeldungen können jedoch verwirrend sein. Um den Fehler vollständig zu verstehen und zu beheben, kannst du Copilot um Hilfe bitten.

Teste dies mit der Datei bugged_dice_battle.py im Repository new2code/debug-with-copilot. Dieses Programm simuliert ein Würfelspiel zwischen zwei Personen mit dem folgenden Code:

# Import the random module to easily generate pseudo-random numbers
import random

# Define a function that simulates a dice battle between two players
def dice_battle():

    # Generate random numbers between 1 and 6 for each player's die roll
    die_1 = random.randint(1, 6)
    die_2 = random.randint(1, 6)

    # Compare the die rolls and return the result as a string
    if die_1 > die_2:
        return "Player 1 rolled a " + die_1 + " and Player 2 rolled a " + die_2 + ". Player 1 wins!"
    elif die_1 < die_2:
        return "Player 1 rolled a " + die_1 + " and Player 2 rolled a " + die_2 + ". Player 2 wins!"
    else:
        return "Player 1 rolled a " + die_1 + " and Player 2 rolled a " + die_2 + ". It's a tie!"

print(dice_battle())

Zunächst musst du das Repository lokal klonen:

  1. Öffne in VS Code die Befehlspalette, indem du BEFEHL+UMSCHALT+P (Mac) bzw. STRG+UMSCHALT+P (Windows/Linux) drückst.

  2. Geben Sie Git: Clone ein, und drücken Sie die EINGABETASTE.

  3. Füge die URL des Repositorys new2code/debug-with-copilot ein:

    Text
    https://github.com/new2code/debug-with-copilot
    
  4. Drücke die EINGABETASTE, und wähle dann einen Speicherort aus, um das Repository auf deinem Computer zu speichern.

  5. Öffne das Repository in VS Code, wenn du dazu aufgefordert wirst.

Nachdem du das Repository jetzt geklont hast, kannst du bugged_dice_battle.py ausführen, um die Ausgabe anzuzeigen:

  1. Öffne die Befehlspalette, indem du BEFEHL+UMSCHALT+P (Mac) bzw. STRG+UMSCHALT+P (Windows/Linux) drückst.

  2. Geben Sie Terminal: Create New Terminal ein, und drücken Sie die EINGABETASTE.

  3. Wenn du Mac oder Linux verwendest, füge auf der Terminalregisterkarte den folgenden Code ein:

    Shell
    python bugged_dice_battle.py
    

    Wenn du Windows verwendest, füge den folgenden Code ein:

    Shell
    py bugged_dice_battle.py
    
  4. Drücke die EINGABETASTE, um das Programm auszuführen.

Leider wird im Terminal ein Fehlertext angezeigt, der mit der folgenden Meldung endet: TypeError: can only concatenate str (not "int") to str. Um zu verstehen, was dies bedeutet, drücke BEFEHL+UMSCHALT+I (Mac) bzw. STRG+ALT+I (Windows/Linux), um Copilot Chat zu öffnen. Füge dann den folgenden Prompt ein, und übermittle ihn:

Text
Explain in depth why my code produces the following error and how I can fix it:

TypeError: can only concatenate str (not "int") to str

Copilot antwortet, dass der Fehler auftritt, weil du versuchst, die Integer die_1 und die_2 mit Zeichenfolgen zu verketten, obwohl nur die Verkettung von Zeichenfolgen mit Zeichenfolgen möglich ist. Anschließend wird eine aktualisierte Version des Codes bereitgestellt, in der der Fehler behoben wird, indem die str()-Funktion zum Konvertieren der Integer in Zeichenfolgen vor der Verkettung verwendet wird.

Debuggen einer falschen Ausgabe mit GitHub Copilot

Manchmal wird Code mit Fehlern ausgeführt, ohne Fehler auszulösen, während die Ausgabe eindeutig falsch ist. In diesem Fall kann das Debuggen schwieriger sein, da VS Code dir nicht die Stelle des Fehlers nennen oder eine Fehlerbeschreibung bereitstellen kann.

Für diese „unsichtbaren“ Fehler ist Copilot besonders nützlich. Nutze die Datei bugged_factorial_finder.py im Repository new2code/debug-with-copilot, um praktische Erfahrung zu sammeln. Das Python-Programm soll eine Fakultät berechnen und enthält den folgenden Code:

# Initialize the factorial result to 1
factorial = 1

# Initialize the input number to 6
number = 6

# Loop from 1 to number (inclusive) and multiply factorial by each number
for i in range(1, number + 1):
    factorial *= factorial * i

print(f"The factorial of {number} is {factorial}")

Da du das Repository bereits lokal geklont hast, kannst du bugged_factorial_finder.py ausführen, um die Ausgabe anzuzeigen:

  1. Öffne in VS Code die Befehlspalette, indem du BEFEHL+UMSCHALT+P (Mac) bzw. STRG+UMSCHALT+P (Windows/Linux) drückst.

  2. Geben Sie Terminal: Create New Terminal ein, und drücken Sie die EINGABETASTE.

  3. Wenn du Mac oder Linux verwendest, füge auf der Terminalregisterkarte den folgenden Code ein:

    Shell
    python bugged_factorial_finder.py
    

    Wenn du Windows verwendest, füge den folgenden Code ein:

    Shell
    py bugged_factorial_finder.py
    
  4. Drücke die EINGABETASTE, um das Programm auszuführen.

Leider funktioniert der Code nicht wie erwartet. Der Code soll 720 zurückgeben (richtiger Wert für die Fakultät von 6), aber die Ausgabe ist viel höher.

Öffne Copilot Chat, wenn die bugged_factorial_finder.py-Datei in VS Code geöffnet ist, und übermittle den folgenden Prompt, um zu verstehen, was nicht funktioniert hat:

Text
Why is the output of this code so much higher than expected? Please explain in depth and suggest a solution.

Copilot weist darauf hin, dass du aufgrund der Verwendung des *=-Operators tatsächlich factorial mit i und factorial multipliziert hast. Anders ausgedrückt: Du multiplizierst zusätzlich mit factorial für jede Iteration der Schleife.

Um diesen Fehler zu beheben, schlägt Copilot Code vor, in dem das zusätzliche factorial-Element aus der Formel entfernt wird bzw. in dem der *=-Operator in = geändert wird.

Debuggen deines eigenen Projekts

Nachdem du jetzt das Debuggen einiger einfacher Programme mithilfe von Copilot trainiert hast, kannst du dieselben Methodiken verwenden, um Fehler in deiner eigenen Arbeit zu suchen und zu beheben.

Übermittle den folgenden Prompt an Copilot, um beispielsweise eine vom Code generierte Fehlermeldung zu debuggen:

Text
Explain in depth why my code produces the following error and how I can fix it:

YOUR-ERROR-MESSAGE

Wenn du eine falsche Ausgabe debuggst, kannst du Copilot fragen, warum die Ausgabe falsch ist und wie du diesen Fehler beheben kannst. Um optimale Ergebnisse zu erzielen, gib so viel Kontext wie möglich an, wie sich die Ausgabe von deinen Erwartungen unterscheidet.

Mit diesen Taktiken kannst du sofort damit beginnen, Fehler in deinem Projekt zu squashen.

Nächste Schritte

Beim weiteren Programmieren werden wahrscheinlich bestimmte Problemszenarios und Fehler auftreten, die schwer zu debuggen sind. Eine Liste der potenziellen Issues und Copilot Chat-Beispielprompts für die Behebung findest du unter Debuggen von Fehlern.