Zum Inhalt springen
L

Das Video kommt von YouTube: erst beim Abspielen verbindet sich die Seite mit YouTube (Google).

Debugging mit Python

PyCon DE23:30 588 Aufrufe veröffentlicht Auf YouTube

Das Wichtigste aus dem Video

Tipp auf eine Zeit – das Video springt genau dorthin.

Transkriptautomatisch erstellt · 154 Zeilen
Herunterladen
  1. wenn ich da waren schwarzen freiberufler software entwickler ich erzähle euch jetzt ein bisschen was über die banken mit piper
  2. erst mal zu einem kleinen überblick man muss nicht immer sofort gleich zum die bagger greifen deswegen erzähle ich am anfang ganz kurz was to print
  3. anweisungen und logging dann zu allgemeinen konzepten also die eigentlich für die bagger generell also praktisch alle die bagger gelten nicht
  4. nur jetzt für breiten ja dann werde ich einige dieser konzepte am beispiel von pb also das ist ein modul und andi wagner der mit partner
  5. mitgeliefert wird erklären am ende möchte ich noch so ganz kurz ein bisschen auf andere partner die bürger
  6. eingehen das heißt eigentlich sage ich höchstens einsatz dazu das ist nur eine folie und zum schluss kommt die zusammenfassung klar
  7. so print anweisung oft ausreichend also ja also wenn ich jetzt bloß mal irgendwie 1 2 -werte prüfen muss oder ich habe selbst schon bekommen möchte
  8. sehen bei welchem wert ist dass aufgetreten oder sowas da muss ich nicht unbedingt zum die bagger greifen sehr einfach einsatz war
  9. vorteile gegenüber den bagger gibt sogar auch also davon abgesehen dass es ein bisschen einfacher ist das ist bei coop mit timer uns an
  10. eingesetzt werden kann wenn ich jetzt also zum beispiel netzwerk habe der schickt im finalen frage zum server und ist so programmiert
  11. dass er wenn er nach zehn sekunden keine antwort bekommt dann irgendwie auf gibt und was anderes macht und das also dann in dem fall wenn
  12. ich jetzt da die banker halten schritt für schritt durch geht durch die anweisungen dann führt sie sich der code anders verhalten als wenn ich ihnen
  13. jetzt einfach durchlaufen lassen also dann ist dieser teil macht vielleicht schon überschritten und dann passiert was anderes und das möchte ich nicht
  14. also ich bin dann eben von drei mal nicht betroffen die andere sache ist eben wenn ich einfach wie zum beispiel ich weiß ich habe irgendwie ein problem
  15. mit einer schleife bei einem bestimmten wer tritt an problem auf lenzen trace beck ist dann ist das noch relativ einfach schwieriger ist wenn
  16. irgendwo etwas komisches passiert ich möchte jetzt meinetwegen wissen beim schleifen durchlauf wie entwickeln sich die werte eigentlich in der schleife
  17. wenn ich das nicht so vorher genau weiß oder entspricht das dem was ich denke wie es sich verhalten sollte für sowas im print anweisung können durchaus
  18. praktisch oder sogar eben vorteilhaft gegenüber das ist wie man es eher nicht machen sollte habe ich schon also hundertmal
  19. gesehen so circa einen trennstrich den mann also eine ausgabe hoffentlich dann wiedersieht und verschiedene ausgaben mit verschiedenen
  20. arten von trends strichen markiert teilweise dann hier noch mit mehreren ausgaben pro ja ich sag mal die back oder print einheit
  21. es hat denn also es hat mehr drauf und nachteile also zum einen wenn man jetzt man sich ja eine ausgabe nur die rennstrecke und werten da
  22. man kann also leicht vergessen welche markierung also mit viele ausgaben hat welche markierung zu welchem wert gehört und
  23. eine verwandte sache wenn es noch andere ausgaben gibt also stehen diesmal wegen drei wertungen untereinander und ich weiß jetzt nicht
  24. gehört jetzt ist jetzt die dewag ausgaben sind das die ersten beiden wert oder sind das alle drei oder
  25. und ein anderer nachteil ist dass entfernung von debugging ausgaben fehleranfällig ist wenn man vor allem also wenn man mehrere ausgaben hat zu
  26. einer markierung weil man dann unter umständen leicht was entfernt was gar nicht die wahlgänge ausgabe war und dann hinter irgendwie das programm
  27. naja ok bei einem print es wird dann vielleicht eine ausgabe fehlen oder so ist nicht auch ist nicht unbedingt schön je nachdem was das ist
  28. ja ich habe mir mal so ein verfahren hier ausgedacht so eine empfehlung um möglichst viele dieser nachteile zu umgehen
  29. ja also irgendwie einen trennzeichen also wenn hier sind das halb drei gleichheitszeichen die dann immer am anfang der zeile stehen
  30. danach keine bezeichnung und dann der wert den ich ausgeben möchte und dann sehe ich also muss ich mich nicht daran
  31. orientieren ob ich jetzt da sternchen oder gleichheitszeichen habe sondern ich weiß dann auch ich sehe dann was ich ausgebe muss ein bisschen
  32. aufpassen wenn man den gleichen wert an verschiedenen stellen aus gibt dass man dann irgendwie schon ja okay dann muss man vielleicht ein zwei drei oder man
  33. schreibt dahinter in welcher funktion das jetzt ist oder so was ja die bank ausgaben sind in der ausgabe so halbwegs leicht zu erkennen wenn man zum
  34. beispiel den screen arbeitet dann kann man auch 1 comeback versuchen nach den gleichen zeichnen und im wertzeichen dann findet man die debug ausgaben auch
  35. ganz schnell ich habe hier bewusst kein prozentzeichen und als prozent es oder sowas verwendet
  36. weil das sind probleme immer als bei opel da müsste ich sonst immer ein element ist opel schreiben statt des wertes um das sicher zu machen
  37. man kann diese schreibarbeit die man hier zusätzlich hat gegenüber diesem ganz einfachen verfahren kann man etwas reduzieren indem man sich zum beispiel
  38. für seinen lieblingsteddy trophy makro definiert in dem fall also hier ist mal 14 angegeben und wenn ich jetzt also bei mir weg / p
  39. drücken dann krieg ich schon diese gleichheitszeichen den doppel punkt und komma und so weiter und der cursor wird vor dass vor dem doppelpunkt besetzt
  40. dann muss ich das nur schreiben drücke ihr sc und dann großer und dann bin ich am ende zahlen sollten modus keine rest ergänzen so blogging ist ganz ähnlich
  41. wie die print anweisung hat einen nachteil ist es wie man hier sieht ein bisschen schwieriger einzurichten wenn jetzt die anwendung von logging benutzt
  42. dann ist das halb so wild dann ist der unterschied nicht besonders groß also es hat ein paar vorteile also eine ganze menge vorteile sogar das also
  43. man kann je nachdem ob man jetzt im produktionsbetrieb zum beispiel läuft man kann diesen lockt level ändern auf
  44. die bank oder info oder so je nach dem und dann ohne irgendwas am code ändern zu müssen oder jetzt einen unlock anweisung das ändern zu müssen einfach
  45. die geschwätzigkeit sozusagen ausgabe steuern die ausgabe ist also flexibel konfigurierbar das ausgabeformat und es ist dieser block anweisung gesetzlicher
  46. also dann ja jetzt die bagger konzepte das sind also ja wie gesagt konzepte die sich eigentlich alle die bagger teilen
  47. es gibt zwei modi erstmal den normalen programmablauf was sich also vom deswegen der programmablauf nicht unterscheidet und normal programmablauf
  48. das ist der normale ablauf so und einen interaktiven modus wo ich die wagen kommandos eingeben kann oder einem grafischen die bagger mann wegen
  49. irgendwelcher buttons klicken kann um zu sagen jetzt gehen schritt weiter zeigt mir was passiert wenn ich jetzt diese anweisungen ausführen das sehen wir
  50. gleich noch ein bisschen detaillierter programm zeiger ist ein wichtiges konzept also wenn ich jetzt eben in diesem interaktiven modus bin
  51. dann markiert mir das eben ja wer was die zunächst also die als nächstes ausgeführte anweisung ist also wenn ich dann sage ich jetzt führe aus also dann
  52. ist bevor ich das aus für ist diese anweisung markiert ja es gibt zwei verschiedene arten von ausführungen dass er eine ist next das
  53. heißt im prinzip jetzt führe genau diese anweisung aus mit inklusive aller unter programm aufruf und ich bin sofort wieder im interaktiven modus oder ich
  54. sage es sap oder einen entsprechenden daten oder sohn im grafischen die bagger und springe dann also auch in enthalten darunter programme aufrufen also jetzt
  55. methoden aufrufe das können sogar ganz subtile sachen seien irgendwie traktoren oder so was ich habe eine vorstrafe bin auf der zeile wo vorsteht drücke step
  56. und auf einmal bin ich irgendwo in der generator funktion oder so also kann auch passieren dann mit step und ein anderes ganz wichtiges konzept sind
  57. unterbrechung punkt der breakpoint wo ich die ausgabe ausführung anhalten kann und dann wieder in diesen interaktiven
  58. modus komme also wenn zum normalen in den interaktiven dieser die bagger pdb ist als bestandteil der breiten bibliothek hat
  59. nur ein kommandozeilen modus also die eingabezeile ist für viele zwecke ausreichend hat eine hilfefunktion entweder generell also in der überblick
  60. über alle befehle dies gibt oder eben zu einem bestimmten befehl und da gibt es noch eine schöne website jetzt mal abgesehen von der module dokumentation
  61. in der die mit pitt kommt gibt es hier noch dieses breiten model of the week da hat er das ein bisschen ausführlicher beschrieben werden
  62. so aktivierung also häufig einfach immer so im programmcode import pb und pbc trace wenn ich dann das programm laufen lassen
  63. wird es an der stelle nämlich abgebrochen aber unterbrochen und ich komme in dieser interaktiven modus oder ich kann in der shell diesen die bagger
  64. spd module als hier als modul argument angeben und dann wird das programm das jetzt hinter steht unter die berger kontrolle ausgeführt dass wenn ich das
  65. so mache dann komme ich erst mal inter aktiven modus setzt seinen breakpoint erkläre ich gleich noch was zu und drückte gbc 1 für continue und gehe dann
  66. also in den ausführungen modus und an diesem break point wird dann komme ich wieder automatisch in den interaktiven modus dann gibt es noch so soll die post
  67. mortem debugging dass ich bei einer exception automatisch in die bagger springer aber will ich hier nicht weiter jetzt erklären
  68. für ein paar befehle die ich jetzt gleich beschreibe benutze ich also dieses beispiel also haben wir dieses import pdb und segways wurde direktor ii
  69. listing also vom aktuellen verzeichnis und füge das also mit dem aktuellen verzeichnis und dem ersten eintrag in der liste
  70. erzeugt hier ein paar gäbe denn aus sodann mal so kleinen überblick über den kot wenn ich jetzt also im interaktiven modus bin
  71. dann kann ich also mit liszt oder auch kurz den code anzeigen das sind immer so fünf zeilen davor und fünf zeilen hinter der aktuellen oder der nächsten
  72. auszuführenden anweisungen ich kann auch eine zahl nummer angeben dann sage ich eben wüsste jetzt nicht da wo der programm tiger ist sondern eben um diese
  73. zeile darum um 15 davor und dahinter oder ich kann auch zwei in ganzen zahlen bereich listen so wenn ich im interaktiven die bagger modus bin dann
  74. kann das zum beispiel so aussehen ich habe jetzt hier also dieses die werke example also das ist genau dieses beispiel
  75. und wenn ich jetzt das so ausführe und dieses set trace ausgelöst wird dann ist das im prinzip was ich sehe oder genau genommen bis hierhin bis zum ende dieser
  76. roten zeile und sie jetzt also darum steht jetzt in rot steht items gleich wo ist hier das
  77. ist also die nächste auszuführen der anweisung man sieht auch darunter noch mal habe ich auch noch mal rot markiert
  78. 5 und dann dieser pfeil das ist also dieser ausführung styger und die zeile nochmal steht auch noch mal oben in dieser ausgabe also hier
  79. so das ist das was ich bekommen also ich das zunächst sieht man nur das und wenn ich allein gbl return dann sehe ich also dieses listing darunter mit dem programm
  80. zweier so jetzt kann ich anweisungen ausführen im interaktiv entweder mit next oder mit step das habe ich ja schon mal erzählt
  81. also step springt in unter programme oder unter routinen besser gesagt die funktion kann ich damit nicht fressen also zum beispiel osc cpd im beispiel
  82. ist direkt mit zehn punkten wenn ich dann step anwenden da springe ich nicht rein also das geht nur mit reinem paten code
  83. so wenn ich jetzt also an der stelle bin wo ich eben war und drücken dann ist also sehe ich also jetzt diesen bereich hier bis dahin das heißt ich bin über
  84. die vorherige einweisung übergesprungen und das wird jetzt die nächste auszuführende sein wenn ich jetzt noch mal ist aus gebe so zur kontrolle so
  85. einfach und mir das mal anzugucken dann sehe ich das oder auch nicht so jetzt
  86. das ist also jetzt die nächste auszuführende anweisungen und wenn ich jetzt mal für step verbände dann kriege ich eine ausgabe call und ich sehe dann
  87. dass die nächste zeile also diese staff freuen was jetzt hier brot ist das ist jetzt schon einmal aufgerufen kommt nämlich in posix partei also man sieht
  88. daran dass dies unter linux oder alt unter einem prozess dem ausführen und das ist also die us-parteien methode oder funktion
  89. so da würde ich jetzt rein springen das vertieft jetzt aber nicht weiter so man kann also innerhalb des die bergers einzelne werte ausgeben also
  90. ausdruck also wir allgemein geht natürlich auch irgendwie name es geht ja auch sagen ganze ausdruck der kann auch unter programm aufrufe enthalten das
  91. gleiche gilt auch mit ppp ist so ähnlich wie print und pps pretty print aus diesem print modul ist sonja sonderfall gibt mir die
  92. argumente aus dann return ist da auch so ein befehl der vorübergehend den interaktiven modus verlässt
  93. das heißt ich bin irgendwo in einer methode drin und wenn ich jetzt ja und rita nein gebe da läuft der code nicht interaktiv weiter und geht aber eine in
  94. die berger in den interaktiven modus zurück wenn ich am ende der funktion der methode wenn ich auf menschen gestoßen bin
  95. oder wenn exception auftritt so unterbrechung punkte wichtiges konzept
  96. also wo ich markieren kann da kann berg rot anhalten unter bestimmten bedingungen also die bedingungen sind optional muss man nicht setzen kann man
  97. aber dieser breakpoint kann auch vorübergehend ein oder ausgeschaltet
  98. werden und es lassen sich beliebig viele definieren die wir so also b alleine oder blake also normalerweise wenn man schon bisschen
  99. die bagage bearbeitet hat dann wird man einfach die kürzel verwenden also nur diese buchstaben befehle listet mehr alle aktuell definierten auf ich kann
  100. breakpoint definieren mit einem ganzen freistaat und ich muss eine zahl nummer oder eine funktions namen angeben das ist jetzt hier nicht gezeigt mit dem
  101. funktions namen und ich kann optional komma bedingungen dahinter schreiben wobei die bedingungen nicht irgendwie in anführungszeichen gesetzt wird ich sage
  102. es nur dazu man könnte ja auch denken das wird ja vielleicht dann später irgendwie mit exakter egal oder sonstwas ausgeführt und dann ist es muss es einen
  103. string sein oder so was ist heute direkt dahinter geschrieben sie dann ein bisschen komisch aus vielleicht aber so dieser datei pfad den mann geben kann
  104. das ist immer ein relativer dann teilt also relativ staat also der ganze modul fahrt oder das was ich mit der umgebungsvariablen partie
  105. setzte das wird durchsucht und relativ dazu eben über einen import wird der name oder die datei entsprechend aufgelöst aber was sich ein bisschen
  106. irritierend findet obwohl das eigentlich sich anna import anweisung orientiert kann man nicht ein punkt als trainer verwendung muss den schrägstrich nehmen
  107. oder vielleicht unter windows den umgekehrten schrägstrich das weiß ich nicht genau
  108. und die tat und die bedingung sind optional das hatte ich ja schon gesagt zur bedingungen und datei fahrt also wenn ich schon in einer bestimmten
  109. funktion entschuldigung in der bestimmte datei bin und ich möchte jetzt also erwartet dass also ich möchte ein break point setzen
  110. in einer zb funktionär methode in der gleichen datei dann brauche ich den datei fahrt nicht angeben dann schreibe ich einfach break und die zahl nummer
  111. ja man kann auch nachdem ein break point schon definiert ist eine bedingung setzen also mit der breakpoint nummer die man also mit mit break alleine
  112. bekommt da ist immer diese breakpoint aufliste geschichte da ist immer so dass auch einen diese blackpoint nummer dabei und man kann eben die
  113. bedingung daneben auch dahinter schreiben oder muss continuous macht einfach weiter mit conti mir sagt im prinzip verlasse
  114. diesen interaktiven modus macht nicht interaktiv weiter wenn man kein break point gesetzt hat der getriggert wird dann passt dann läuft das programm auch
  115. bis zum ende oder bis zur exception ja dann habe ich hier noch mal eine saite alternative die bagger für taipan
  116. weil also einerseits finde ich dass dieser interaktive die wir häufig reicht andererseits kann ich gut verstehen wenn jemand sagt dass es doch ein bisschen
  117. unbequem oder primitiv dass sich jedes mal um mich zu orientieren vielleicht noch mal das l ein geben muss wenn ich den code den ich da die bagger nicht
  118. schon sehr gut kenne dann gibt es eben noch alternativen so allgemeine liste bekommt man durchsuche im package index
  119. bestimmte textmodus die bagger sind also dbb + + und pb der erste davon also pbb benötigten das ist also eine pseudo ii kann man sagen
  120. also mit fenster bereichen wo zum beispiel die im kontext der funktion gerade aktuellen werte angezeigt werden also für die
  121. namen die in der funktion vorkommen oder einen aufruf stack in einem anderen fenster das ist also aufruft habe ich ja nicht diskutiert ist manchmal nützlich
  122. zu wissen pb + + und pcb sind ganz ähnlich wie der interaktive also wie pdb fügen aber noch ein paar nette features
  123. noch hinzu und dann gibt es ein party die berger also was also diese entwicklungsumgebung ich schon mit breiten mitkommt hatten
  124. die wagen modus dann gibt es wind pdb was entgegen dem namen nicht nur für windows funktioniert sondern mit dario experten geschrieben ist und für also
  125. mac und linux auch genau so funktioniert das ist also ein ganz ganz einsehen grafisch hat die bagger und dann gibt es natürlich auch noch
  126. andere breiten idee ist also ja also gibt's ein clip swing wer und sonst was alles also wegen idee ja wie zum beispiel auch einen grafischen die
  127. bagger haben ja hier noch eine zusammenfassung also print anweisungen können hilfreich sein also man muss nicht gleich begreifen
  128. login ist ein bisschen umständlich aber flexibler dagegen konzepte habe ich geschrieben programm zeiger unterbrechung punkte
  129. dann die ausführungen einzelner anweisung mit oder ohne unter programm aufrufen ich kann den code um eine stelle mit listen und mit ns und r also
  130. ausführen also unter die bagger kontrolle mit ppp und acht objekte anzeigen und unterbrechung punkte mit mit b also oder blake setzen und mit c
  131. war weiter also im nicht inter aktiven modus ausführen ja okay und zu den die bahn habe ich auch was gesagt so danke euch für die aufmerksamkeit
  132. danke ich ja sommer gibt es fragen zum vortrag
  133. keine fragen hallo ich habe keine frage aber ich darf ja auch etwas anmerken also was ich sehr
  134. elegant finde neulich erst entdeckt abel ist statt direkt eine ganze session land die bagger zu starten kann ich wenn ich
  135. irgendwo weiß wo mein problem liegt ja direkt den die bagger importieren und jpg bz trace mein programm einfach starten lassen und
  136. springt dann genau an der stelle wo ich ihn schauen wir in denen die banker also es hat eine anmerkung dazu von mir es hat einen nachteil man wird das
  137. sozusagen auch nicht los wenn ich dann in der die bagger session bin und ich kommen habe ja vorbei wird da immer unterbrochen ich kann diesen blackboard
  138. nicht abschalten das ist ein nachteil vielleicht noch eine anmerkung der die berger also pdb hat noch mehr features ich hab jetzt eben dass da das hier
  139. diskutiert was ich so wo ich dachte das kriege ich in die 20 minuten rein ist es in der multi threading anwendung oder multiprocessing anwendungen auch
  140. möglich einzelne prozesse zu die bahn prozesse mit dem rhein pdb nicht reds hat zumindest funktioniert ähnlich backbones gesetzt habe
  141. ok ich weiß jetzt nicht mehr hundertprozentig auf sie mit dem segway spa oder ein break point von außen ich glaube mit einem von beiden hat es
  142. funktioniert wenn man nicht also ich weiß jetzt nicht mehr so genau ist ein bisschen knifflig bei dem wind pdb die verben glaube ich explizit damit dass es
  143. die trading unterstützt und die besseren die bagger können auch sich action sozusagen zu anderen prozessen also man kann oder hat den vorteil man wenn man
  144. es mal den server prozess hat und man kann sich dann wenn der schon läuft mit dem verbinden und denen die banken dann muss man auch wahrscheinlich hätte ich
  145. mal ganz stark irgendwie vorbereitet sein das okay
  146. wie sieht denn mit erfahrungswerten aus für den overhead von dem login module also sprich wenn ich jetzt irgendwie noch 580 schachteln schleife drin bin
  147. und 20 debug anweisungen drin habe also messung habe ich keine gemacht aber ich würde schon damit rechnen wenn du also eine zeitkritische schleife zum beispiel
  148. hast dass du da nicht unmengen von logging rein tun solltest womit ich rechne ist das wenn du keinen tatsächlich kein login hast also sprich
  149. du hast dann nur weint wegen lockt die vag stehen aber der debug level ist so eingestellt dass das nicht ausgegeben wird dann wird sicherlich schneller sein
  150. als wenn was ausgegeben wird aber also es wird sicherlich auch wenn nichts ausgegeben wird irgendwie ein bisschen was kosten aber ja also wenn du schon
  151. weiß dass ein abschnitt zeit kritisch ist dann würde ich da vielleicht ja zurückhaltend sein sage ich mal mit dem login aber ich würde einfach mal messen
  152. ich würde jetzt nicht sagen login ist zu langsam und deswegen schreibe ich das war nicht rein sondern ich würds mal eventuell sogar mit dem profiler
  153. ausprobieren weitere fragen
  154. gut wenn keine fragen sind dann ja danke ich dir auf alle fälle für den vortrag dankeschön des friedens zu hören

Zum Nachlesen