Einführung ins Debugging My Coding Place https://www.youtube.com/watch?v=I9sF1zmLb48 Transkript (automatisch erstellt) 0:00 [Musik] hallo zusammen und herzlich willkommen zu diesem neuen Video heute soll es mal um das Thema Debugging gehen eine kleine 0:18 Einführung wozu ja warum mache ich die bugging oder wann die backe ich ein Programm [Musik] 0:27 und ja was also was ist der Zweck davon wie mache ich das und das will ich heute kurz erklären dazu habe ich mir mal wieder meine 0:41 id.i peitscham geschnappt und habe hier ein Programm ja geöffnet was ich mal ja vor einiger 0:50 Zeit im Rahmen von einem Kurs den ich mir selber angeguckt habe auch geschrieben habe und ja hier ist das ist so eine ja eine ganz niedliche Sache 1:00 eigentlich das ist eine Kaffeemaschine wo man eben einen Kaffee bestellen kann und ja da 1:10 gibt man dann hier durch das ist ein reines Konsolenprogramm das heißt wenn wir das hier ausführen starten dann haben wir unten in der Konsole den 1:19 Output und können natürlich dann auch unsere Eingaben machen die das Programm von uns erwartet ja kurz zur Begriffsklärung von die bugging was 1:29 steckt da drin ne da drin steckt der Begriff Bug äh ja kann man übersetzen mit Käfer und [Musik] 1:40 der Hintergrund ist einfach der dass vor ja vor vielen Jahren als die Computer noch nicht so klein und handlich waren wie sie es heute sind gab es ja da gab 1:55 es riesengroße ja Computer und Rechner mit vielen Verbindungen und Röhren und ja alle alle möglichen riesengroß 2:09 aufgebaut hat Technik und das Problem war natürlich dann wenn sagen wir mal man hat den Rechner in ja in einem Gebäude stehen oder einem Keller stehen 2:19 und da kommen wir dann auch vielleicht mehr Insekten rein die vom Licht an gelockt werden die kriechen dann in diese Röhren oder in diese Verbindung 2:29 rein und weil wir natürlich da Strom drauf haben kriegen die in elektrischen Schlag so und dann gibt es einen Kurzschluss und der 2:39 Computer hört erstmal auf zu arbeiten und es gibt auch so einen so ein Bild von dem ersten back der gefunden also mutmaßlich gefunden wurde der wurde dann 2:51 das Insekt was den Fehler im Computer verursacht wurde auf so ein ja Stück Papier geklebt quasi als Dokumentation aber seine dadurch hat sich dieser 3:02 Begriff Bug eben ja etabliert was ist eigentlich ein Bug ist ein Problem im Programm und es ist 3:15 nicht notwendigerweise so dass ein Bug immer direkt ein Fehler verursacht der offensichtlich ist Beispiel 3:29 ich habe hier zu ich habe hier so eine ja Berechnung des Wechselgeldes zu meinem Kaffeeautomaten und ähm hier habe ich eine Konvertierung drin von String 3:42 ja also von der Zahl nach String weil ich die natürlich hier auch drucken möchte ne und ähm wenn ich das zum Beispiel hier raus 3:53 nehme dann ja kriege ich einen Fehler weil ja das hier nicht richtig mehr mit dem Text verbinden kann so das sind so das sind 4:03 so offensichtliche Fehler oder wenn ich jetzt hier im Programm sagen wir mal ich schreibe eine Funktion nicht richtig das wird direkt 4:15 unterstrichen ich kann es direkt identifizieren und natürlich auch beheben aber es gibt ja jetzt auch Sachen die 4:23 sind nicht so direkt nicht so offensichtlich und die zeigen sich erst einem späteren Verlauf bedeutet ich habe ja hier mein 4:36 Programm schon gestartet ich gebe jetzt mal ein [Musik] hier Latte und dann sage ich hier soll 4:44 ich dann angeht wie viel Viertel Dollar ich in den Automaten eingeben will ich bin es mal etwas großzügiger sage ich mal acht 4:52 diams sind glaube ich 10 Cent und hier sage ich jetzt mal Null das nimmt er auch und hau mir die Nickels so wenn ich jetzt hier nichts eingebe und Enter 5:03 drücke dann laufe ich hier in einen Fehler rein und mein Programm stürzt ab so [Musik] 5:12 das ist natürlich was klar man könnte jetzt hingehen und das ganze identifizieren und er sagt jetzt hier in Zeile 51 5:26 [Musik] dass er hier irgendwas nicht konvertieren kann und naja ich habe einfach Enter gedrückt kann man schon 5:36 mal überlegen woran liegt das jetzt also was ist hier der Fehler es sieht doch eigentlich alles gut aus hier in meiner Funktion nicht berechne das ganze und 5:48 ähm ja je mehr ich hier an Münzen eingeben wird hier die Summe berechnet und am Ende habe ich dann alles an Kleingeld was ich so in ein Automaten 5:57 reingegeben habe aber wo ist jetzt eigentlich das Problem so und um jetzt zu verstehen wie was in meinem Programm passiert und 6:07 vor allem welchen Wert diese Variablen habe ich sehe hier zwar das Summe die berechnet sich 6:16 und ja das sieht doch erstmal alles eigentlich ganz gut aus und ich weiß aber jetzt nicht wie im Verlauf des 6:26 Programmes wie zum Beispiel zwischendurch diese Summe aussieht wenn ähm wenn ich da an dem Punkt ankomme so und dabei hilft mir der 6:36 äh die Bagger das bedeutet einmal hilft mir der die Bagger natürlich [Musik] ja ich habe 6:46 ich habe jetzt hier einen offensichtliches Problem was [Musik] ja was ich jetzt hier über einen Fehler 6:55 zeigt und was das Programm zum Absturz bringt aber ich könnte jetzt zum Beispiel auch sein dass ich hingehe und sage 7:04 ich bestell mal wieder eine Latte und dann sage ich jetzt mal machen wir mal zehn quarters und bei dem anderen sage ich jetzt überall 0 0 7:20 so der hat immer noch nicht ihn auf money dann machen wir das Ganze machen wir das ganze nochmal machen wir wieder Latte und jetzt sage ich hier mal 7:30 20 waters das müsst ihr eigentlich ausrechnen so und hier auch wieder 0 0 so 7:40 [Musik] jetzt warte hier den Kaffee und so weiter und wenn wir in die Daten reingucken hier 7:50 von dem Programm dann sehen wir der kostet ja der kostet zwei Dollar 50 und wir haben jetzt hier 20 quarters 8:02 reingeworfen das bedeutet [Musik] wir haben lass mich kurz rechnen 8:12 müssten eigentlich zweimal 25 50 also fünf ja fünf Dollar müssten wir eingeworfen 8:24 haben -2,50 eigentlich müssten wir 250 zurückkriegen wir haben ja aber nur ein Dollar 7 hmm was ist hier passiert so 8:34 das ist doch so eine weitere Frage da ist das Programm arbeite zwar fehlerlos so so gesehen das heißt ich habe hier nichts rot es ist alles gut aber 8:44 trotzdem arbeitet mein Programm auch nicht richtig so und das ist so der zweite Fall wo man mal die Backen sollte um sich das Ganze anzugucken so die 8:55 Backen wie mache ich das ich habe ja hier schon ein paar mal auch das Programm gestartet so ich mache das hier mal mit hier oben drücke ich drauf 9:04 dann stoppt das ganze und wie mache ich das jetzt habe ich hier diese schöne Käfer Symbol und hier kann ich den dibagger dann 9:15 einschalten so jetzt will ich aber natürlich der soll ja nicht einfach so durchlaufen sondern ich habe die Möglichkeit hier 9:25 beim Debugging bei bestimmten Stellen im Programm anzuhalten um mir die dann anzugucken heißt ich kann jetzt hier das ist bei 9:37 den meisten idis so man kann hier neben der Zeilennummer dann hinklicken dann bekommt man hier so einen roten Punkt hingesetzt 9:47 so dann kann ich hier mehrere rote Punkte setzen und das sind meine sogenannten Breakpoints das sind Haltepunkte im Programm und dort wird 9:57 der Debuggern dann anhalten so dass ich mir das ganze dann auch angucken kann und ich kann aber dann 10:07 entsprechend auch weiter navigieren sozusagen das zeige ich euch auch gleich wie das geht [Musik] 10:17 gut da wir ja erstmal nur hier diese Breakpoints brauchen setze ich die ähm haben wir hier noch irgendwas was uns interessiert bisher nicht okay heißt 10:28 wenn ich hier rein geklickt habe ich habe diese Breakpoints hier erstellt klicke ich dann auf die backen 10:35 so jetzt gibt er uns hier noch so ja Warnungen aus und ja der ist 10:47 irgendetwas hier in der anderen Datei das hat aber jetzt nichts direkt mit unserem Programm zu tun unser Programm ist jetzt hier ja gestartet und wir 10:59 können jetzt hier ne der fragt uns hier wieder was wir möchten jetzt gebe ich mal hier Latte ein und drücke Enter das heißt während des Debugging Prozesses 11:07 kann ich auch mein Programm nutzen und wenn ich jetzt aber Enter drücke dann läuft er nicht direkt 11:17 da läuft er nicht direkt durch sondern erhält jetzt an meinem ersten Breakpoint an dem er vorbeikommt hält er jetzt hier an 11:25 so und jetzt habe ich verschiedene Möglichkeiten wie es weitergeht jetzt kann ich hier unten habe ich hat sich 11:33 der Bildschirm verändert das heißt ich sehe jetzt hier die Variablen die aktuell ja angezeigt werden und die habe ich 11:43 coffee choice das heißt das was ich jetzt hier einen Kaffee ausgewählt habe ist Latte das ist schon mal richtig das heißt ich 11:50 kann jetzt hier einmal kontrollieren welchen Wert die Variablen aktuell haben so und jetzt habe ich zwei Möglichkeiten ich kann jetzt mit 12:01 F9 wenn ich F9 auf der Tastatur drücke so ich habe jetzt gerade noch mal nachgeguckt ich hatte es gerade ein bisschen gewundert warum der da an den 12:11 Breakpoints komplett vorbei gesprungen ist aber jetzt habe ich noch mal neu gestartet und ich habe hier noch einen 12:20 zusätzlichen Breakpoint reingesetzt ne man kann immer mehrere Breakpoints setzen man sollte das vielleicht auch ein bisschen so begrenzen weil zu viele 12:32 das wird dann auch irgendwann übersichtlich unübersichtlich so mit F9 kann man kann man immer von Breakpoints zu 12:43 Breakpoint springen und jetzt haben wir hier jetzt ist er hier aus irgendeinem Grund [Musik] 12:57 ja aus dem Programm rausgesprungen weil wir hier nichts [Musik] ja weil er das hier nicht richtig 13:06 eingelesen hat starte das noch mal und gebe jetzt hier auch wieder Latte ein und er springt wieder zu dem 13:15 Breakpoint also man hat zwei Möglichkeiten jetzt man kann mit F9 von Breakpoint zu Breakpoint springen das heißt wenn ich 13:24 hier F9 drücke dann springt er hier zum nächsten Breakpoint ich kann aber auch mit F8 wenn ich das jetzt drücke 13:36 schrittweise durchgehen um dann das Programm mir anzugucken und ja hier springt er immer wieder raus 13:50 so und ich habe mir das ganze mal angeschaut es scheint tatsächlich ein Problem mit der ID zu sein dass man hier also während des Diba gegens kein 14:01 Benutzer Input eingelesen werden kann ja ich kann mich nicht erinnern dass dass ich das Problem so schon mal vorher hatte 14:15 ein bisschen komisch und ich habe auch noch mal geupdatet aber naja das hat auch nichts gebracht was machen wir jetzt ich habe jetzt die 14:25 Breakpoints mal so gesetzt dass die hier nicht auf dem Input sind und dann sollte das funktionieren denn wir wollen uns ja 14:33 angucken was hier an unserer Stelle mit ja mit der Eingabe funktioniert ich starte noch mal wieder im Debug Modus 14:42 und bestell mir wieder was und jetzt sagt er hier how many quarters gebe ich ein so und wir haben ja gesehen zum Beispiel 14:52 wenn ich jetzt Null ein gebe hier bei den diams [Musik] ich kann mir jetzt hier ne der hält 15:00 jetzt hier auch an was super ist und ich kann mir jetzt alles angucken was wir aktuell haben wir sehen auch jetzt unser Kaffee coffeekost der ist kostet zwei ja 15:12 zwei Dollar 50 2 €, wie auch immer so in dem Fall sind doller und [Musik] momentan ist jetzt die Summe bei 15:22 ja bei 8,4 und wir haben 40 quarters so jetzt kann ich [Musik] ja wenn ich jetzt hier weitergehe dann 15:35 springt er leider wieder raus ja mit execode -1 das bedeutet dass er hier irgendein Problem mit dem Debugging hat so ähm ist aber jetzt erstmal kein 15:49 Problem was wir uns auch angucken wollen ich starte noch mal wieder neu und jetzt stelle ich mal den Pfeil nachdem wir vorhin hatten ich gebe einen Latte und 15:58 40 waters und hau mir die dimes lasse ich jetzt mal Lea so 16:07 und jetzt gucken wir uns das ganze mal an was er hier machen möchte ich habe ja jetzt für deins habe ich jetzt nichts eingegeben das heißt ich habe einfach 16:20 Enter gedrückt und bisher sehe ich jetzt auch nichts wirklich was jetzt verdächtig aussieht es gibt aber hier einen Diba gegen Modus 16:29 ne noch eine andere Funktion die ich ja in vielen idis noch nutzen kann zumindest hier auch bei Peitsche nämlich ich kann mir hier 16:41 zum Beispiel das hier weil es gibt ja hinterher immer ein Problem nachdem wir vergessen haben oder die dimes nicht eingegeben haben hatten wir immer ein 16:51 Problem und das passierte immer an dieser Stelle so ich kann jetzt etwas machen ich habe jetzt hier mal diesen Teil markiert im Code weil hier 17:00 berechnet der ja und soll eigentlich die Summe erhöhen macht er aber dann in dem Fall nicht wenn ich hier nichts eingegeben habe sondern es gibt einen 17:09 Fehler ich gehe Wache hier mal Rechtsklick und das heißt evaluation da geht dann hier so ein anderes zusätzliches Fenster auf und hier kann 17:20 ich jetzt ein ja x-böschen einen Ausdruck kann ich jetzt ausführen ich mache das mal so und hier sagt er jetzt value error 17:33 could not convert string to float so ähm [Musik] das heißt er versucht ja hier ein float 17:43 und das dann zu berechnen aber das macht er das macht er scheinbar mit unserer leeren Zahl nicht wenn ich das noch mal 17:54 stoppe und noch mal starte und jetzt gebe ich wieder eine fast alles genauso ein aber bei den dimes 18:03 gebe ich jetzt eine Null ein jetzt hat er hier eine Null und wenn ich das jetzt hier auch noch mal wieder nein das nicht so nur diese Zeile hier 18:17 so führe ich aus und hier ist er jetzt in der Lage wirklich zu konvertieren ich habe eine Zahl eingegebene Null diese Null wird ne kann als Zahl interpretiert 18:27 werden nur wenn ich nichts eingebe hat er einfach einen leeren String und außerdem lernst Ring ähm kann er eben nichts machen was bedeutet 18:37 das jetzt müssen wir uns überlegen wie können wir jetzt aufgrund dessen was wir hier im Debugging rausgefunden haben [Musik] 18:48 ja das ganze entsprechend anpassen so jetzt haben wir hier natürlich auch 18:57 ne die Summe wir sehen hier das ist sehr praktisch immer wir sehen hier auch am Rand den Wert den die Variablen jetzt aktuell haben wo wir durch das Programm 19:07 durchlaufen und das hilft einem eben sehr [Musik] in dem Debugging Prozess das ganze auch 19:16 nachvollziehen zu können und ja wie ich vorher schon gesagt hatte man könnte jetzt mit damit F9 zum nächsten Breakpoint 19:27 springen oder eben mit F8 schrittweise durchgehen also das heißt wenn ich jetzt hier ich gebe hier noch mal ein 50 19:38 und dann Null so jetzt ist er wieder hier drin und hier springt er immer wieder raus aber 19:47 ich kann mir zumindest hier diese [Musik] ja diese Stelle genau angucken die bei 19:59 der ich ein Problem habe und was natürlich auch wichtig ist wenn ich das Programm erstmal überhaupt ja so ein bisschen verstehen möchte das 20:09 heißt die meisten Programme sollte man auch direkt verstehen können weil sie idealerweise gut geschrieben sind und übersichtlich sind 20:18 [Musik] aber es kann natürlich sein dass man trotzdem vermutet dass im dass das Programm nicht das tut wofür es 20:25 eigentlich gedacht ist und da hilft einem dass die buggen dann schon erheblich weiter so wenn ich noch mal zusammenfassen 20:34 ja zusammenfasse was ist die Backen die Backen kann man nutzen um Fehler im Programm zu finden und zu identifizieren und natürlich auch 20:47 die Stelle im Programm zu finden wo ne was quasi die Wut kostet also das Grundproblem was zu dem Fehler führt und es hilft mir auch im Programmablauf zu 20:58 verstehen welche Variablen welche Werte an bestimmten Stellen dann gesetzt sind ich starte das Debuggen hier zumindest in peitscharm indem ich hier nicht auf 21:11 diesen Pfeil auf dieses Dreieck diesen play button da klicke sondern auf den Käfer zum Debuggen und dann startet das Programm aber im 21:21 Debug Modus so zum Debuggen um mir da ein bisschen mit zu helfen kann ich diese Breakpoints hier setzen und dort hält das Programm dann an wenn ich mir 21:32 einzelne Programmteile angucken möchte oder einzelne ja Berechnungen oder Ausdrücke in meinem Programm mir einzeln angucken möchte kann ich das machen über 21:46 über Rechtsklick und evaluate expression das hat er jetzt [Musik] gerade noch nicht zur Verfügung 21:56 er ist jetzt hier [Musik] ja erst noch in dem ich habe doch hier gerade was eingegeben so 22:06 wenn er jetzt hier dort angekommen ist kann ich auch die Variable müssen zur Verfügung stellen hier kann ich jetzt sagen 22:14 und damit kann ich mir dann auch den Wert von meinen ja das Ergebnis von bestimmten Programmteilen angucken und dann noch natürlich zu überprüfen ob die 22:25 richtig funktionieren und ja in dem Zuge würde mir zum Beispiel hier auch auffallen dass ein 22:34 quarter ja 25 Cent sein müssen gut ja das war es zu dieser kleinen Einführung ist die bugging und 22:48 ja schreibt mir gerne in die Kommentare die backt ihr oder was habt ihr schon mal die backt an Programm 22:58 [Musik] und ja was war so Frage auch noch mal so am Rande was war so der hartnäckigste Fehler den ihr jemals in dem Programm 23:09 hattet was euch richtig lange ja richtig viel Zeit gekostet hat um das herauszufinden okay ähm ja vielen Dank fürs zuschauen 23:20 und ja macht's gut tschüss bis zum nächsten Video [Musik]