Debuguj Pythona jak bohater za pomocą tych bibliotek i narzędzi

Czy chcesz być prawdziwym ekspertem od debugowania Pythona? Debuguj swój kod w Pythonie za pomocą tych niesamowitych narzędzi i bibliotek do debugowania Pythona, które wkrótce omówimy!

Python to uniwersalny, wysokopoziomowy i obiektowy język programowania używany do wielu celów programistycznych. Co więcej, jest to skuteczne narzędzie programistyczne dla różnych aplikacji, od tworzenia aplikacji internetowych po web scraping i bardziej złożone aplikacje, takie jak uczenie maszynowe i nauka o danych.

Podczas programowania często pojawiają się błędy zwane błędami w programowaniu. Deweloperzy podejmują kilka kroków w celu wykrycia i wyeliminowania istniejących i potencjalnych błędów z kodu. W rezultacie zapobiegasz zmiażdżeniu kodu programu. Nazywamy ten proces debugowaniem.

W tym artykule przyjrzymy się kilku dostępnym debugerom Pythona, których możesz użyć. Zobaczymy również, jak bardzo różnią się te debugery i co sprawia, że ​​ich implementacja jest skuteczna.

Biblioteka debugowania cProfiler

cProfiler, to popularna biblioteka i rozszerzenie C, które wykonuje profilowanie długo działającego kodu. Na dłuższą metę identyfikuje sekcje kodu programu, których uruchomienie trwa długo. Chociaż określa dokładny czas potrzebny do uruchomienia różnych sekcji kodu, nie identyfikuje całkowicie ani nie naprawia błędów w kodzie.

W związku z tym pojawia się potrzeba użycia innych debuggerów.

Na szczęście możesz użyć zalecanych bibliotek, takich jak ipdb, Django-debug-toolbar, pyelftools, viztracer i py-spy jako narzędzi do debugowania kodu Pythona.

Narzędzie do debugowania ipdb

Debuger Pythona z obsługą protokołu IPython w całości to interaktywny debugger innej firmy, który zawiera pdbfunkcjonalność. Ipbd jak również jest wyposażony w interaktywną obsługę powłoki IPython. Taka obsługa obejmuje uzupełnianie kart, obsługę kolorów i funkcje magiczne, a także inne funkcje pomocnicze.

Ten debuger umożliwia dostęp do debugera IPython poprzez eksportowanie odpowiednich funkcji. Oferuje również podobny interfejs dla lepszej introspekcji, podobnie jak w module pdb.

Debugowanie za pomocą Ipdb

Biblioteka wymaga instalacji za pomocą polecenia pip poniżej.

pip install ipdb

Przykład użycia ipdb wyglądałby tak:

import ipdb
alpha_list = ['a', 'b', 'c']
fruit_list = ['orange', 'mango', 'kiwi']

def nested_loop():
    for fruit_list:
        print (fruit)
        ipdb.set_trace()
    for x in alpha_list:
        print(x)
if __name__ == '__main__':
    nested_loop()

Uruchom plik Pythona za pomocą poniższego polecenia, gdzie test.py jest nazwą mojego pliku:

python -m ipdb test.py

Import ipdb i uruchomienie funkcji ipdb.set_trace() umożliwia rozpoczęcie programu i uruchomienie debugera w trakcie wykonywania.

Funkcja ipdb.pm()(post-mortem) działa podobnie do magicznej funkcji %debug.

argumenty set_trace

Przekaż kontekst jako argument do set_trace, aby wyświetlić kilka zdefiniowanych wierszy kodu. Dodatkowo cond, który set_trace również przyjmuje jako argument, akceptuje wartości logiczne i uruchamia interfejs ipdb po ustawieniu cond na true.

Korzystanie z pliku konfiguracyjnego

Ustaw argument kontekstu za pomocą pliku idpdb lub pliku setup.cfg dostępnego odpowiednio w folderze domowym i folderze projektu. Zapraszamy do dalszego sprawdzania funkcjonalności ipdb.

Pasek narzędzi debugowania Django

The Pasek narzędzi debugowania Django to popularne narzędzie do debugowania w Django: framework Pythona.

Ten konfigurowalny zestaw paneli wyświetla informacje debugowania bieżącego żądania lub odpowiedzi. Gdy klikniesz pasek narzędzi, zostanie wyświetlonych więcej szczegółów dotyczących zawartości panelu.

To narzędzie dokładnie sprawdza środowisko programistyczne Django.

Postępuj zgodnie z procesem instalacji i instrukcjami konfiguracji tutaj.

Biblioteka Pyelftools

The pyelftools Biblioteka jest w całości zbudowana na Pythonie. Analizuje i analizuje pliki ELF i informacje debugowania DWARF, a do działania wymaga tylko Pythona.

Korzystanie z Pyelftools jest łatwe, ponieważ nie posiada zewnętrznych bibliotek. Dodatkowo, używanie pyelftools bez instalacji jest dość łatwe, ponieważ wymaga jedynie dostosowania PYTHONPATH w zmiennych środowiskowych.

Zainstalujesz go za pomocą:

pip install pyelftools 

Implementacja pyelftools wymaga po prostu zaimportowania go i wywołania w swoim programie.

Lody (narzędzie do debugowania)

To kolejne wydajne narzędzie do debugowania dla programistów Pythona.

Za pomocą lodyrównież ic(), ma wiele zalet w porównaniu z print(), jak opisano poniżej:

  • Pisanie jest stosunkowo szybsze, dosłownie.
  • Całkiem dobrze drukuje struktury danych.
  • Drukuj wyrażenia lub nazwy zmiennych i ich wartości za pomocą ic().
  • Podkreśla składnię danych wyjściowych.
  • Opcjonalnie zawiera kontekst programu, w tym nazwę pliku, numer wiersza i funkcję nadrzędną.

Przed użyciem tego pakietu zainstaluj go za pomocą polecenia pip poniżej:

pip install icecream

Dobrą rzeczą jest to, że możesz korzystać z ic() we wszystkich plikach bez konieczności importowania go do wszystkich plików, instalując go za pomocą install(). Ponadto install() dodaje ic() do wbudowanego modułu. Wszystkie pliki importowane przez interpreter będą współdzielone z ic().

W swoim pierwszym głównym pliku Pythona, który możesz nazwać x.py, dodaj ic() za pomocą install().

from icecream import install
install()
from y import mult
mult()
 

W pliku y.py importowany jest plik x.py, wywołaj ic()

def mult():
    z=8
    ic(z)

Wyniki:

y
ic| z : 8

To, co sprawia, że ​​funkcja ic() jest bardziej wydajna, to jej zdolność do sprawdzania przekazywanych do niego zmiennych, w tym samego siebie, a następnie wyświetlania jej argumentów i wartości argumentów, jak w poniższym przykładzie.

from icecream import ic
def mult(x):
    return x * 4
ic(mult(100))

Wyjście:

ic| mult(100): 400

Co więcej, możesz wstawić ic() do istniejącego kodu, ponieważ zwraca on swoje argumenty. Poniższy przykład zwraca ic| x: 12, potem ic| y: 48.

from icecream import ic
x = 12
def mult(x):
    return x*4
    y = mult(ic(x))
    ic(y)

Debugowanie za pomocą narzędzia py-spy

Możesz użyć py-szpieg do profilowania próbek dla programów Pythona jako narzędzia do debugowania. Bez ponownego uruchamiania programu lub modyfikowania jego kodu, py-spy wizualizuje wykonanie programu w Pythonie. Ponadto, ponieważ jest napisany w języku Rust, ma niski narzut.

Dodatkowo warto wziąć pod uwagę, że używanie py-spy przeciwko produkcyjnemu kodowi Pythona jest bezpieczne, ponieważ uruchamia inny proces niż profilowany program w Pythonie.

Jak każde inne narzędzie, które widzieliśmy, możesz użyć narzędzia py-spy po jego zainstalowaniu.

pip install py-spy 

Pomimo tego, że Twój program w Pythonie obsługuje ruch produkcyjny, nadal możesz profilować i debugować ten program za pomocą py-spy, co czyni go krytycznym narzędziem do profilowania Pythona.

Debuger Viztracera

Alternatywnie możesz użyć viztracer, narzędzia do debugowania, aby śledzić i wizualizować wykonanie programu w Pythonie. Jest to również narzędzie do profilowania z logowaniem o niskim nakładzie pracy.

Co sprawia, że viztracer skuteczne narzędzie do debugowania?

  • Korzystanie z niego jest dość łatwe i nie zależy od zewnętrznych pakietów do działania.
  • Viztracer działa na wszystkich platformach systemów operacyjnych: Windows, Linux lub macOS.
  • Jego potężny front-end płynnie renderuje ślad na poziomie GB.
  • Używa RegEx do rejestrowania dowolnych funkcji i dodatkowych informacji, takich jak zmienne i atrybuty, Zgłoszone wyjątki, Operacje garbage Collectoritp. bez modyfikowania jakiejkolwiek sekcji kodu w kodzie źródłowym.
  • To, co sprawia, że ​​viztracer jest narzędziem do debugowania o niskim nakładzie pracy, to jego zdolność do filtrowania danych, których nie potrzebujesz w swoim programie. Następnie zachowuje stare informacje przed zrzuceniem dziennika w formacie JSON.
  • Możesz go użyć do wstawienia niestandardowych wydarzeń, takich jak natychmiastowe wydarzenie, zdarzenie zmiennea Czas trwania wydarzenia w trakcie działania programu. W ten sposób działa jak debugowanie drukowania, z wyjątkiem tego, że viztracer informuje, kiedy drukowanie ma miejsce podczas śledzenia danych.

Wniosek

Profilowanie i debugowanie w Pythonie, podobnie jak profilowanie oprogramowania, jest kluczowym krokiem w rozwoju, który wymaga uwagi. Ten krok pomaga wykluczyć wszelkie sekcje kodu z błędami, aby zoptymalizować ogólną wydajność kodu.

Narzędzia do debugowania, które omówiliśmy powyżej, są wydajnymi narzędziami, które sprawiają, że praca programisty Pythona jest całkiem łatwa.

Widząc, że inne narzędzia do debugowania działają bardziej efektywnie niż cProfiler, możesz, jak prawdziwy bohater, debugować kod Pythona i naprawiać wszelkie potencjalne błędy za pomocą tych debugerów, aby zapobiec uruchamianiu kodu bez awarii.

Miłego debugowania!