[IPdb] Anfänger in der Webentwicklung haben versucht, das Debuggen mit Python zusammenzufassen

Einführung

Ich werde das Debuggen mit ipdb zusammenfassen, einschließlich der Organisation dessen, was die Anfänger in der Webentwicklung gelernt haben.

Was ist ipdb?

Es bietet eine Erweiterung von pdb, einem ** Debugger **, der standardmäßig in Python enthalten ist.

Wie benutzt man

Geben Sie den folgenden Code an der Stelle ein, an der Sie den Debugger starten und das Programm ausführen möchten.

import ipdb; ipdb.set_trace()

Bei der Ausführung wartet es auf ** Standardeingabe **, sodass Sie den Debugger durch Eingabe eines Befehls bedienen können. Das Folgende ist eine Zusammenfassung häufig verwendeter (wahrscheinlicher) Befehle.

Befehl Bewegung
n Zur nächsten Zeile laufen
s Bis zur nächsten Funktion ausführen
p Variablenname Wert der Variablen anzeigen
a Zeigen Sie die Argumente der ausgeführten Funktion an
h Hilfe
q Ende

Versuchen Sie es mit

Lassen Sie uns tatsächlich ipdb mit dem Programm von Aggressive Cows von POJ No.3468 verwenden.

Aggressive.py


import ipdb
n = 5
m = 3
x = [1, 2, 8, 4, 9]

def C(d):
    last = 0
    for _ in range(1, m):
        crt = last + 1
        while crt<n and x[crt]-x[last]<d:
            crt += 1
        if crt == n:
            return False
        last = crt
    return True

x.sort()
lb, ub = 0, max(x)

while ub-lb > 1:
    ipdb.set_trace()
    mid = int( (lb+ub)/2 )
    if C(mid):
        lb = mid
    else:
        ub = mid

print(lb)

Lauf.

$ python Aggressive.py
>c:/users/~/aggressive.py(21)<module>()
     20     import ipdb; ipdb.set_trace()
---> 21     mid = int( (lb+ub)/2 )
     22     if C(mid):

Der eingestellte Haltepunkt wird als Pfeil ausgegeben.

ipdb> h

Documented commands (type help <topic>):
========================================
EOF    cl         disable  interact  next    psource  rv         unt
a      clear      display  j         p       q        s          until
alias  commands   down     jump      pdef    quit     source     up
args   condition  enable   l         pdoc    r        step       w
b      cont       exit     list      pfile   restart  tbreak     whatis
break  continue   h        ll        pinfo   return   u          where
bt     d          help     longlist  pinfo2  retval   unalias
c      debug      ignore   n         pp      run      undisplay

Miscellaneous help topics:
==========================
exec  pdb

Eine Liste verwendbarer Befehle wird ausgegeben.

ipdb> p mid
*** NameError: name 'mid' is not defined

Die Variable "mid" ist nicht definiert, da Zeile 21 noch nicht ausgeführt wurde.

ipdb> n
> c:/users/~/aggressive.py(22)<module>()
     21     mid = int( (lb+ub)/2 )
---> 22     if C(mid):
     23         lb = mid

Der Pfeil, der den Haltepunkt anzeigt, verschiebt sich um eins.

ipdb> p mid
4

Da die 21. Zeile ausgeführt wird, wird der Wert der Variablen "mid" angezeigt.

ipdb> s
--Call--
> c:/users/~/aggressive.py(6)C()
      5 
----> 6 def C(d):
      7     last = 0

Es scheint, dass der Aufruf der nächsten Funktion ausgeführt wurde.

ipdb> a
d = 4

Da der Aufruf der nächsten Funktion knapp darunter lag, wird der zuvor bestätigte Wert der Variablen mid als Argument angezeigt.

ipdb> q
Exiting Debugger.

Beenden Sie den Debugger.

Zusammenfassung

Ich habe alle (wahrscheinlichen) Befehle verwendet, die häufig in ipdb verwendet werden. Es war mein erstes Mal, dass ich den Debugger benutzte, aber ich habe das Programm ** zur Hälfte ** ausgeführt und jedes Mal den Inhalt der Variablen überprüft oder es an der gewünschten Position ausgeführt, ohne das Programm neu zu schreiben. Ich fand es sehr bequem zu gehen. Es ist schwierig, ein Programm zu schreiben, weil es debuggt. Daher möchte ich den Debugger gut nutzen, um ein Programm zu schreiben, das effizient und fehlerfrei ist.

Recommended Posts

[IPdb] Anfänger in der Webentwicklung haben versucht, das Debuggen mit Python zusammenzufassen
[Django-Extensions] Anfänger in der Webentwicklung haben versucht, Django-Extensions zusammenzufassen
Python-Anfänger versuchten es herauszufinden
Ich habe versucht, die Anfängerausgabe des Ameisenbuchs mit Python zu lösen
[Pandas] Ich habe versucht, Verkaufsdaten mit Python zu analysieren. [Für Anfänger]
Ich habe versucht, alle Bemerkungen von Slack mit Wordcloud (Python) zusammenzufassen.
Ich habe versucht, die Behandlung von Python-Ausnahmen zusammenzufassen
[Episode 2] Anfänger haben Numeron AI mit Python ausprobiert
[Episode 3] Anfänger haben Numeron AI mit Python ausprobiert
Python3-Standardeingabe habe ich versucht zusammenzufassen
[Episode 0] Anfänger haben Numeron AI mit Python ausprobiert
[Episode 1] Anfänger haben Numeron AI mit Python ausprobiert
[Für Anfänger] Versuchen Sie Web Scraping mit Python
Ich habe versucht, eine Mac Python-Entwicklungsumgebung mit pythonz + direnv zu erstellen
Python-Anfänger haben versucht, einen Energy-Drink zu codieren
Einführung in Tornado (1): Python Web Framework mit Tornado gestartet
[Letzte Geschichte] Anfänger haben Numeron AI mit Python ausprobiert
Die Abfrage [Webentwicklung mit Python] wird ebenfalls umgeleitet
Ich habe versucht, CloudWatch-Daten mit Python abzurufen
Ich habe versucht, LLVM IR mit Python auszugeben
Ich habe versucht, die Herstellung von Sushi mit Python zu automatisieren
Explosive Geschwindigkeit mit Python (Flasche)! Web-API-Entwicklung
[Webentwicklung mit Python] Vorsichtsmaßnahmen beim Speichern von Cookies
Ein Anfänger des maschinellen Lernens versuchte, mit Python ein Vorhersagemodell für Pferderennen zu erstellen
Einfaches Debuggen mit ipdb
Ich habe versucht zusammenzufassen, wie man Matplotlib von Python verwendet
Ich habe versucht, Mine Sweeper auf dem Terminal mit Python zu implementieren
Ich habe versucht, mit Blenders Python script_Part 01 zu beginnen
Ich habe versucht, eine CSV-Datei mit Python zu berühren
Ich habe versucht, Soma Cube mit Python zu lösen
Der NW-Ingenieur hat versucht, Adressen mit Pythons netaddr zu aggregieren
Ich habe versucht, künstliches Perzeptron mit Python zu implementieren
Python-Anfänger bleiben beim ersten Web-Scraping stecken
Ich habe versucht zusammenzufassen, wie man Pandas von Python benutzt
Ich habe versucht, das Problem mit Python Vol.1 zu lösen
Ich habe versucht, die String-Operationen von Python zusammenzufassen
Ich habe versucht, AOJs Integer-Theorie mit Python zu lösen
[Für Anfänger von Wettkampfprofis] Ich habe versucht, 40 AOJ "ITP I" -Fragen mit Python zu lösen
[Für Anfänger] Web-Scraping mit Python "Greifen Sie auf die URL auf der Seite zu, um den Inhalt abzurufen."
Ich habe fp-Wachstum mit Python versucht
Ich habe versucht, mit Python zu kratzen
Web Scraping mit Python + JupyterLab
Ich habe versucht, mit Python faker verschiedene "Dummy-Daten" zu erstellen
Ich habe verschiedene Methoden ausprobiert, um japanische Post mit Python zu senden
Versuchen Sie, verschiedene Informationen anzuzeigen, die für das Debuggen mit Python nützlich sind
Debuggen mit pdb in Python
Stellen Sie mit Python eine Verbindung zu Wikipedia her
Post to Slack mit Python 3
Entwicklung von Webanwendungen mit Flask
Ich habe versucht, eine Webanwendung zu entwickeln, und überlegt, wie ich verhindern kann, dass Anfänger krank werden.
[Teil 2] Crawlen mit Python! Klicken Sie auf die Webseite, um sich zu bewegen!
3 Gründe für die Programmierung Anfänger sollten mit Python beginnen
Web-API mit Python + Falcon
[Python] Ich habe versucht, Tweets über Corona mit WordCloud zu visualisieren