Εντοπίστε σφάλματα Python σαν ήρωας με αυτές τις βιβλιοθήκες και τα εργαλεία

Θέλετε να γίνετε πραγματικός ειδικός στον εντοπισμό σφαλμάτων Python; Διορθώστε τον κώδικα Python σας χρησιμοποιώντας αυτά τα καταπληκτικά εργαλεία και βιβλιοθήκες εντοπισμού σφαλμάτων Python που θα καλύψουμε σύντομα!

Η Python είναι μια γλώσσα προγραμματισμού γενικής χρήσης, υψηλού επιπέδου και αντικειμενοστραφής που χρησιμοποιείται για πολλούς σκοπούς ανάπτυξης. Επιπλέον, είναι ένα αποτελεσματικό εργαλείο ανάπτυξης για διαφορετικές εφαρμογές, από την ανάπτυξη διαδικτυακών εφαρμογών έως την απόξεση ιστού και πιο σύνθετες εφαρμογές όπως η Μηχανική μάθηση και η Επιστήμη Δεδομένων.

Κατά την ανάπτυξη, είναι επιρρεπή να συμβούν σφάλματα που ονομάζονται σφάλματα στον προγραμματισμό. Οι προγραμματιστές λαμβάνουν πολλά βήματα για να εντοπίσουν και να εξαλείψουν τα υπάρχοντα και πιθανά σφάλματα από τον κώδικα. Ως αποτέλεσμα, αποτρέπετε τη σύνθλιψη του κώδικα του προγράμματος. Αυτή τη διαδικασία ονομάζουμε αποσφαλμάτωση.

Αυτό το άρθρο θα εξετάσει πολλά διαθέσιμα προγράμματα εντοπισμού σφαλμάτων Python που μπορείτε να χρησιμοποιήσετε. Θα δούμε επίσης πόσο διαφορετικά είναι αυτά τα προγράμματα εντοπισμού σφαλμάτων μεταξύ τους και τι κάνει την εφαρμογή τους αποτελεσματική.

cProfiler βιβλιοθήκη εντοπισμού σφαλμάτων

cProfiler, είναι μια δημοφιλής βιβλιοθήκη και μια επέκταση C που εκτελεί προφίλ μακροχρόνιου κώδικα. Μακροπρόθεσμα, προσδιορίζει τμήματα του κώδικα του προγράμματος που χρειάζονται πολύ χρόνο για να εκτελεστούν. Αν και προσδιορίζει τον ακριβή χρόνο που απαιτείται για την εκτέλεση διαφορετικών ενοτήτων του κώδικα, δεν εντοπίζει ούτε διορθώνει πλήρως σφάλματα στον κώδικα.

Επομένως, προκύπτει η ανάγκη χρήσης άλλων προγραμμάτων εντοπισμού σφαλμάτων.

Ευτυχώς, μπορείτε να χρησιμοποιήσετε προτεινόμενες βιβλιοθήκες όπως ipdb, Django-debug-toolbar, pyelftools, viztracer και py-spy ως εργαλεία εντοπισμού σφαλμάτων για τον κώδικα Python σας.

Το εργαλείο εντοπισμού σφαλμάτων ipdb

Το πλήρες πρόγραμμα εντοπισμού σφαλμάτων Python με δυνατότητα IPython είναι ένα διαδραστικό πρόγραμμα εντοπισμού σφαλμάτων τρίτου κατασκευαστή που περιέχει pdfλειτουργικότητα του. Ipbd έρχεται επίσης με διαδραστική υποστήριξη του κελύφους IPython. Αυτή η υποστήριξη περιλαμβάνει συμπλήρωση καρτελών, υποστήριξη χρώματος και μαγικές λειτουργίες, μεταξύ άλλων λειτουργιών υποστήριξης.

  Τι είναι το Google Classroom και ποιος πρέπει να το χρησιμοποιεί;

Αυτό το πρόγραμμα εντοπισμού σφαλμάτων επιτρέπει την πρόσβαση στο πρόγραμμα εντοπισμού σφαλμάτων IPython εξάγοντας σχετικές συναρτήσεις. Προσφέρει επίσης μια παρόμοια διεπαφή για καλύτερη ενδοσκόπηση, όπως και στη μονάδα pdb.

Εντοπισμός σφαλμάτων με Ipdb

Η βιβλιοθήκη απαιτεί εγκατάσταση χρησιμοποιώντας την παρακάτω εντολή pip.

pip install ipdb

Ένα παράδειγμα χρήσης ipdb θα μοιάζει με αυτό:

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()

Εκτελέστε το αρχείο python χρησιμοποιώντας την παρακάτω εντολή όπου test.py είναι το όνομα του αρχείου μου:

python -m ipdb test.py

Η εισαγωγή ipdb και η εκτέλεση της συνάρτησης ipdb.set_trace() επιτρέπει την έναρξη του προγράμματος και εκτελεί το πρόγραμμα εντοπισμού σφαλμάτων μέσω της εκτέλεσης.

Η συνάρτηση ipdb.pm() (post-mortem) δρα παρόμοια με τη μαγική συνάρτηση %debug.

ορίσματα set_trace

Περάστε το περιβάλλον ως όρισμα στο set_trace για να εμφανίσετε πολλές γραμμές κώδικα που έχουν οριστεί. Επιπλέον, το cond, το οποίο το set_trace δέχεται επίσης ως όρισμα, δέχεται τιμές Boole και ξεκινά τη διεπαφή ipdb όταν ορίζετε το cond σε true.

Χρήση αρχείου διαμόρφωσης

Ορίστε το όρισμα περιβάλλοντος με ένα αρχείο idpdb ή το αρχείο setup.cfg που είναι διαθέσιμο στον αρχικό φάκελο και στον φάκελο του έργου, αντίστοιχα. Μπορείτε να ελέγξετε περαιτέρω τη λειτουργικότητα του ipdb.

Γραμμή εργαλείων Django Debug

ο Γραμμή εργαλείων εντοπισμού σφαλμάτων Django είναι ένα δημοφιλές εργαλείο εντοπισμού σφαλμάτων στο Django: ένα πλαίσιο Python.

Αυτό το διαμορφώσιμο σύνολο πινάκων εμφανίζει τις πληροφορίες εντοπισμού σφαλμάτων ενός τρέχοντος αιτήματος ή απάντησης. Όταν κάνετε κλικ στη γραμμή εργαλείων, εμφανίζονται περισσότερες λεπτομέρειες σχετικά με τα περιεχόμενα του πίνακα.

Αυτό το εργαλείο επιθεωρεί διεξοδικά το περιβάλλον ανάπτυξης του Django.

Ακολουθήστε τη διαδικασία εγκατάστασης και τις οδηγίες διαμόρφωσης εδώ.

Βιβλιοθήκη Pyelftools

ο πυελοφεργαλεία Η βιβλιοθήκη είναι χτισμένη αποκλειστικά σε Python. Αναλύει και αναλύει αρχεία ELF και πληροφορίες εντοπισμού σφαλμάτων DWARF και απαιτεί μόνο την εκτέλεση της Python.

Η χρήση του Pyelftools είναι εύκολη αφού δεν διαθέτει εξωτερικές βιβλιοθήκες. Επιπλέον, η χρήση pyelftools χωρίς εγκατάσταση είναι αρκετά εύκολη, καθώς απαιτεί απλώς την προσαρμογή του PYTHONPATH στις μεταβλητές περιβάλλοντος.

Θα το εγκαταστήσετε χρησιμοποιώντας:

pip install pyelftools 

Η υλοποίηση του pyelftools απαιτεί απλώς την εισαγωγή του και την επίκλησή του στο πρόγραμμά σας.

  Πώς να δημιουργήσετε εύκολα αντίγραφα ασφαλείας και να μεταφέρετε δεδομένα μεταξύ iPhone δωρεάν

Το παγωτό 🍦 εργαλείο εντοπισμού σφαλμάτων

Αυτό είναι ένα άλλο αποτελεσματικό εργαλείο εντοπισμού σφαλμάτων για προγραμματιστές Python.

Χρησιμοποιώντας παγωτόεπίσης ic(), έχει πολλά πλεονεκτήματα σε σχέση με την print(), όπως περιγράφεται παρακάτω:

  • Η πληκτρολόγηση είναι σχετικά πιο γρήγορη, κυριολεκτικά.
  • Εκτυπώνει δομές δεδομένων αρκετά καλά.
  • Εκτυπώστε εκφράσεις ή ονόματα μεταβλητών και τις τιμές τους με ic().
  • Υπογραμμίζει τη σύνταξη της εξόδου.
  • Προαιρετικά, περιλαμβάνει το πλαίσιο του προγράμματος, συμπεριλαμβανομένου του ονόματος αρχείου, του αριθμού γραμμής και της γονικής συνάρτησης.

Πριν χρησιμοποιήσετε αυτό το πακέτο, εγκαταστήστε το χρησιμοποιώντας την παρακάτω εντολή pip:

pip install icecream

Το καλό είναι ότι μπορείτε να χρησιμοποιήσετε το ic() σε όλα τα αρχεία χωρίς απαραίτητα να το εισάγετε σε όλα τα αρχεία εγκαθιστώντας το χρησιμοποιώντας το install(). Επιπλέον, η install() προσθέτει την ic() στην ενότητα ενσωματωμένων. Όλα τα αρχεία που εισάγει ο διερμηνέας θα μοιράζονται το ic().

Στο πρώτο σας αρχείο root python, το οποίο μπορείτε να ονομάσετε x.py, προσθέστε ic() χρησιμοποιώντας install().

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

Στο y.py fil γίνεται εισαγωγή του αρχείου x.py, καλέστε το ic()

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

Αποτελέσματα:

y
ic| z : 8

Αυτό που κάνει το ic() πιο αποτελεσματικό είναι η ικανότητά του να επιθεωρεί τις μεταβλητές που του έχουν μεταβιβαστεί, συμπεριλαμβανομένου του εαυτού του, και στη συνέχεια να εκτυπώνει τα ορίσματα του και τις τιμές του ορίσματος όπως στο παρακάτω παράδειγμα.

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

Παραγωγή:

ic| mult(100): 400

Επιπλέον, μπορείτε να εισαγάγετε την ic() σε προϋπάρχοντα κώδικα αφού επιστρέφει τα ορίσματά του. Το παρακάτω παράδειγμα επιστρέφει ic| x: 12, μετά ic| y: 48.

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

Εντοπισμός σφαλμάτων χρησιμοποιώντας το εργαλείο py-spy

Μπορείς να χρησιμοποιήσεις py-spy σε δείγματα προφίλ για προγράμματα Python ως εργαλείο εντοπισμού σφαλμάτων. Χωρίς επανεκκίνηση του προγράμματος ή τροποποίηση του κώδικά του, το py-spy οπτικοποιεί την εκτέλεση του προγράμματος Python. Επιπλέον, επειδή είναι γραμμένο σε Rust, έχει χαμηλό κόστος.

Επιπλέον, αξίζει να ληφθεί υπόψη ότι η χρήση του py-spy έναντι του κώδικα Python παραγωγής είναι ασφαλής επειδή εκτελεί μια διαφορετική διαδικασία από το πρόγραμμα Python με προφίλ.

  Πώς να χρησιμοποιήσετε ένα iPhone με σπασμένο κουμπί λειτουργίας

Όπως κάθε άλλο προηγούμενο εργαλείο που έχουμε δει, μπορείτε να χρησιμοποιήσετε το εργαλείο py-spy αφού το εγκαταστήσετε.

pip install py-spy 

Παρά το γεγονός ότι το πρόγραμμα Python σας εξυπηρετεί την κυκλοφορία παραγωγής, μπορείτε ακόμα να κάνετε προφίλ και να διορθώσετε αυτό το πρόγραμμα χρησιμοποιώντας το py-spy, καθιστώντας το ένα κρίσιμο εργαλείο προφίλ Python.

Πρόγραμμα εντοπισμού σφαλμάτων Viztracer

Εναλλακτικά, μπορείτε να χρησιμοποιήσετε το viztracer, ένα εργαλείο εντοπισμού σφαλμάτων, για να εντοπίσετε και να οπτικοποιήσετε την εκτέλεση του προγράμματος Python. Είναι επίσης ένα εργαλείο δημιουργίας προφίλ με καταγραφή χαμηλών γενικών εξόδων.

Τι κάνει viztracer ένα αποτελεσματικό εργαλείο εντοπισμού σφαλμάτων;

  • Η χρήση του είναι αρκετά εύκολη και δεν εξαρτάται από εξωτερικά πακέτα για να λειτουργήσει.
  • Το Viztracer λειτουργεί σε όλες τις πλατφόρμες λειτουργικού συστήματος: Windows, Linux ή macOS.
  • Το ισχυρό μπροστινό του άκρο αποδίδει ομαλά ίχνη σε επίπεδο GB.
  • Χρησιμοποιεί το RegEx για την καταγραφή αυθαίρετων συναρτήσεων και επιπλέον πληροφοριών όπως μεταβλητές και ιδιότητες, Εγείρονται Εξαιρέσεις, Λειτουργίες απορριμματοσυλλέκτηκ.λπ., χωρίς να τροποποιήσετε κανένα τμήμα κώδικα στον πηγαίο κώδικα σας.
  • Αυτό που κάνει το viztracer ένα εργαλείο εντοπισμού σφαλμάτων με χαμηλό κόστος είναι η ικανότητά του να φιλτράρει δεδομένα που δεν χρειάζεστε στο πρόγραμμά σας. Στη συνέχεια, διατηρεί τις παλιές πληροφορίες πριν απορρίψει το αρχείο καταγραφής σε μορφή JSON.
  • Μπορείτε να το χρησιμοποιήσετε για να εισαγάγετε προσαρμοσμένα συμβάντα όπως το στιγμιαίο γεγονόςο μεταβλητό συμβάνκαι το Διάρκεια εκδήλωσης καθώς εκτελείται το πρόγραμμα. Με αυτόν τον τρόπο, λειτουργεί σαν εντοπισμός σφαλμάτων εκτύπωσης, εκτός από το ότι το viztracer σάς ενημερώνει πότε πραγματοποιείται η εκτύπωση καθώς ανιχνεύετε δεδομένα.

συμπέρασμα

Το προφίλ Python και ο εντοπισμός σφαλμάτων, όπως ακριβώς το προφίλ λογισμικού, είναι ένα βασικό βήμα σε μια ανάπτυξη που απαιτεί προσοχή. Αυτό το βήμα βοηθά στον αποκλεισμό τυχόν ενοτήτων κώδικα με σφάλματα, έτσι ώστε η συνολική απόδοση του κώδικα να βελτιστοποιηθεί.

Τα εργαλεία εντοπισμού σφαλμάτων που καλύψαμε παραπάνω είναι αποτελεσματικά εργαλεία που κάνουν τη δουλειά ενός προγραμματιστή Python αρκετά εύκολη.

Βλέποντας ότι τα άλλα εργαλεία εντοπισμού σφαλμάτων λειτουργούν πιο αποτελεσματικά από το cProfiler, μπορείτε, σαν αληθινός ήρωας, να διορθώσετε τον κώδικα Python σας και να διορθώσετε τυχόν σφάλματα χρησιμοποιώντας αυτά τα προγράμματα εντοπισμού σφαλμάτων για να αποτρέψετε την εκτέλεση του κώδικά σας χωρίς συντριβή.

Καλή διόρθωση σφαλμάτων!