W Javie / C # możesz łatwo przechodzić przez kod, aby prześledzić, co może być nie tak, a IDE czyni ten proces bardzo przyjaznym dla użytkownika.
Czy potrafisz prześledzić kod Pythona w podobny sposób?
Tak! Istnieje tylko debugger Pythona, który pdb
jest do tego przeznaczony!
Możesz uruchomić program w języku Python za pdb
pomocą pdb myscript.py
lub python -m pdb myscript.py
.
Można wtedy wydać kilka poleceń, które są udokumentowane na pdb
stronie.
Niektóre przydatne do zapamiętania to:
b
: ustaw punkt przerwaniac
: kontynuuj debugowanie, aż osiągniesz punkt przerwanias
: przejdź przez kodn
: aby przejść do następnego wiersza kodul
: wyświetla kod źródłowy bieżącego pliku (domyślnie: 11 wierszy, w tym wykonywany wiersz)u
: nawigacja w górę ramki stosud
: nawiguj w dół ramki stosup
: aby wydrukować wartość wyrażenia w bieżącym kontekścieJeśli nie chcesz używać debuggera z linii poleceń, niektóre IDE, takie jak Pydev , Wing IDE lub PyCharm, mają debugger z GUI. Wing i PyCharm są produktami komercyjnymi, ale Wing ma bezpłatną edycję „Personal”, a PyCharm ma bezpłatną edycję dla społeczności.
pudb
świetnie się do tego nadaje . Równieżpydev
pdb
nie jest narzędziem wiersza poleceń. Aby go użyć, użyjpython -m pdb your_script.py
.pdb
polecenie jest częściąpython
pakietu. W każdym raziepython -m <module>
staje się standardem także dla innych rzeczypip
, więc prawdopodobnie najlepiej jest użyć tego domyślnie.Za pomocą interaktywnego debugera Python „pdb”
Pierwszym krokiem jest skłonienie interpretera języka Python do przejścia w tryb debugowania.
A. Z wiersza poleceń
Najprostsza droga, uruchamiana z wiersza poleceń interpretera python
B. W ramach tłumacza
Opracowując wczesne wersje modułów i eksperymentując z nimi bardziej iteracyjnie.
C. Z poziomu programu
W przypadku dużego projektu i długotrwałego modułu można rozpocząć debugowanie od wewnątrz programu za pomocą importu pdb i set_trace () w następujący sposób:
Debugowanie krok po kroku, aby uzyskać bardziej wewnętrzny
Wykonaj następną instrukcję… za pomocą „n” (next)
Powtarzanie ostatniego polecenia debugowania… za pomocą ENTER
Porzucenie wszystkiego… za pomocą „q” (wyjście)
Drukowanie wartości zmiennych… za pomocą „p” (drukuj)
a) pa
Wyłączanie monitu (Pdb)… za pomocą „c” (kontynuuj)
Sprawdzanie, gdzie jesteś… za pomocą „l” (lista)
Wchodzenie do podprogramów… za pomocą „s” (wejście w)
Kontynuacja… ale tylko do końca bieżącego podprogramu… z „r” (powrót)
Przypisz nową wartość
a) ! b = „B”
Ustaw punkt przerwania
a) złamać numer pościeli
b) przerwij nazwę funkcji
c) zepsuj nazwę pliku: numer bielizny
Tymczasowy punkt przerwania
a) numer pościeli
Warunkowy punkt przerwania
a) złamać numer pościeli, stan
Uwaga: ** Wszystkie te polecenia należy wykonać z ** pdb
Aby uzyskać dogłębną wiedzę, patrz: -
https://pymotw.com/2/pdb/
https://pythonconquerstheuniverse.wordpress.com/2009/09/10/debugging-in-python/
źródło
W pythonie znajduje się moduł o nazwie „pdb”. Na górze skryptu pythonowego robisz
i wejdziesz w tryb debugowania. Możesz użyć „s”, aby przejść, „n”, aby przejść do następnego wiersza, podobnie jak w przypadku debugera „gdb”.
źródło
Począwszy od Python 3.7, możesz użyć
breakpoint()
wbudowanej funkcji, aby wejść do debuggera:Domyślnie
breakpoint()
importujepdb
i dzwonipdb.set_trace()
. Można jednak kontrolować zachowanie podczas debugowania zasys.breakpointhook()
pomocą zmiennej środowiskowej i jej używaniaPYTHONBREAKPOINT
.Aby uzyskać więcej informacji, zobacz PEP 553 .
źródło
breakpoint
byłem podekscytowany. Ale potem dowiedziałem się, że jest to po prostu skrót doimport pdb; pdb.set_trace()
tego i to mnie zasmuciło. Python DEVS: proszę skupić się na poprawie WPB z podstawowych usług, takich jak GDB linii kontekstowych, uporczywy historii poleceń i zakładki autouzupełnianie :-)ipdb (debugger IPython)
ipdb dodaje funkcjonalność IPython do pdb, oferując następujące OGROMNE ulepszenia:
Podobnie jak pdg, ipdb jest wciąż daleki od ideału i całkowicie szczątkowy w porównaniu z GDB, ale jest już ogromną poprawą w porównaniu z pdb.
Użycie jest analogiczne
pdb
, wystarczy zainstalować z:a następnie dodaj do linii, z której chcesz krok debugować:
Prawdopodobnie zechcesz dodać do tego skrót ze swojego edytora, np. Do snipmate Vima Mam:
więc mogę wpisać just
ipd<tab>
i rozwija się do punktu przerwania. Dzięki temu usunięcie jest łatwe,dd
ponieważ wszystko jest zawarte w jednym wierszu.context=21
zwiększa liczbę linii kontekstu, jak wyjaśniono na stronie: Jak sprawić, aby ipdb wyświetlał więcej linii kontekstu podczas debugowania?Alternatywnie możesz również debugować programy od samego początku za pomocą:
ale generalnie nie chcesz tego robić, ponieważ:
Lub alternatywnie, jak w surowym pdb 3.2+, możesz ustawić niektóre punkty przerwania z wiersza poleceń:
chociaż
-c c
z jakiegoś powodu jest zepsuty: https://github.com/gotcha/ipdb/issues/156python -m module
debugowanie zostało zadane na stronie: Jak debugować moduł Pythona uruchamiany z python -m z wiersza poleceń? a ponieważ Python 3.7 można wykonać za pomocą:Poważne brakujące funkcje zarówno pdb, jak i ipdb w porównaniu z GDB:
Irytacje specyficzne dla ipdb:
Testowane w Ubuntu 16.04, ipdb == 0.11, Python 3.5.2.
źródło
Obecnie istnieje
breakpoint()
metoda, która zastępujeimport pdb; pdb.set_trace()
.Ma także kilka nowych funkcji , takich jak możliwe zmienne środowiskowe.
źródło
Jeśli pochodzisz z języka Java / C #, chyba najlepszym rozwiązaniem będzie użycie Eclipse z Pydevem . Daje to w pełni funkcjonalne IDE z wbudowanym debuggerem. Używam go również z django.
źródło
Jeśli chcesz IDE ze zintegrowanym debuggerem, wypróbuj PyScripter .
źródło
https://wiki.python.org/moin/PythonDebuggingTools
pudb jest dobrym zamiennikiem pdb
źródło
Python Tutor to internetowy debugger przeznaczony dla początkujących. Możesz wpisać kod na stronie edycji, a następnie kliknąć „Wizualizacja wykonania”, aby uruchomić.
Obsługuje między innymi:
Jednak nie obsługuje również wielu rzeczy , na przykład:
io.StringIO
iio.BytesIO
zamiast tego: demoźródło
Możliwe jest także programowe przechodzenie i śledzenie kodu Pythona (i jest to łatwe!). Spójrz na sys.settrace () dokumentacji dla więcej szczegółów. Również tutaj jest samouczek na dobry początek.
źródło
Visual Studio z PTVS może być opcją dla Ciebie: http://www.hanselman.com/blog/OneOfMicrosoftsBestKeptSecretsPythonToolsForVisualStudioPTVS.aspx
źródło
PyCharm to IDE dla Pythona, które zawiera debugger. Obejrzyj ten film na YouTube, aby zapoznać się z wprowadzeniem debugera PyCharm do przejścia przez kod.
Samouczek PyCharm - debugowanie kodu python za pomocą PyCharm
Uwaga: nie jest to rekomendacja ani przegląd. PyCharm to produkt komercyjny, za który trzeba zapłacić, ale firma zapewnia bezpłatną licencję dla uczniów i nauczycieli, a także „lekką” wersję społecznościową, która jest bezpłatna i open source.
źródło