eingehendes Verständnis von Python-Fehlern: Effiziente Fehlerbehebung mit Selbstbeobachtung und Debugger
In diesem Artikel wird untersucht, wie Programmfehler mithilfe von Pythons Introspection- und Debugging -Tools wie PDB effizient Debugug -Fehler debuggen. Der Artikel wird aus den Aspekten der typischen Fehlerinformationsanalyse, der PDB -Debugger -Nutzung, der Debugging von Produktionsumgebungen und häufig gestellten Fragen entwickelt, um den Lesern zu helfen, ihre Fähigkeiten zum Debuggen von Python zu verbessern.
Pythons kraftvolle Selbstbeobachtung ermöglicht es uns, Laufzeitfehler tiefer zu verstehen. Indem wir jeden Frame im Anrufstapel überprüfen, einschließlich der aufrufenden Parameter der Funktion, können wir Fehler leichter reproduzieren und verstehen. Tools wie Sentry nutzen diese Funktion voll und ganz, um umfassendere Fehlerkontextinformationen bereitzustellen.
Schauen wir uns ein gemeinsames Beispiel für Python -Fehler an:
<code>TypeError: expected string or buffer File "sentry/stacktraces.py", line 309, in process_single_stacktrace processable_frame, processing_task) File "sentry/lang/native/plugin.py", line 196, in process_frame in_app = (in_app and not self.sym.is_internal_function(raw_frame.get('function'))) File "sentry/lang/native/symbolizer.py", line 278, in is_internal_function return _internal_function_re.search(function) is not None</code>
Diese Fehlermeldung zeigt uns nur den Typ und die Position des Fehlers an, kann jedoch nicht direkt auf die Ursache des Fehlers hinweisen. Möglicherweise müssen wir vermuten, dass Ganzzahlen oder Nicht -Etypen verabschiedet werden, aber die tatsächliche Situation kann vielfältig sein.
Protokolldatensatz und PDB -Debugger
Eine einfache Debugging -Methode ist das Hinzufügen von Protokollierung:
import logging # ... logging.debug("function is of type %s", type(function))
Dies hilft, variable Typen während der Entwicklung zu verstehen. In Produktionsumgebungen ist dieser Ansatz jedoch aufgrund der Redundanz von Protokollen auf Debug-Ebene nicht ideal.
Zu diesem Zeitpunkt ist der Python -Debugger (PDB) nützlich. PDB ermöglicht es uns, den Code durch Haltepunkte durchzusetzen und Variablen und deren Typen zu überprüfen. Wir können Breakpoints einstellen, indem wir import pdb; pdb.set_trace()
in den Code einfügen:
def is_internal_function(self, function): try: return _internal_function_re.search(function) is not None except Exception: import pdb; pdb.set_trace() raiseNach dem Treffer der Haltepunkt werden wir die interaktive PDB -Umgebung eingeben, in der wir den
zum Anzeigen des variablen Typs verwenden können, um die lokalen Variablen anzuzeigen und den Anrufstapel mit dem type(function)
und locals()
zu navigieren Befehle. down
up
In einer Produktionsumgebung können wir mit der CPython -Laufzeit auf den aktuellen Anrufstapel zugreifen, einschließlich lokaler Variablen für jeden Ausführungsrahmen.
Ausnahmeinformationen können erhalten werden, einschließlich Traceback -Objekten. Durch Durchqueren des Traceback -Objekts können wir auf das -attribut jedes Frame zugreifen, um die lokale Variable anzuzeigen: sys.exc_info()
f_locals
Tools wie
exc_type, exc_value, tb = sys.exc_info() inner_frame = tb.tb_next.tb_frame # 可能需要遍历tb_next找到合适的frame pprint(inner_frame.f_locals)
Der Artikel enthält schließlich FAQs über Python-Fehlerdebugging, Abdeckung gemeinsamer Fehlertypen, PDB-Nutzung, IDE-Debugging, Ausnahmebehandlung, Fern-Debugging, Multi-Threadd-Debugging, Debugging von Drittanbietern, Debugging von Performance Problem und Debugging-Verbesserung usw. .
Einige Inhalte dieses Artikels werden aus Wachpostenartikeln angepasst. Vielen Dank an unsere Partner, die SitePoint unterstützen.
Das obige ist der detaillierte Inhalt vonWie man Python -Fehler debuggiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Bleiben Sie über die neuesten technischen Trends mit diesen Top -Entwickler -Newsletters informiert! Diese kuratierte Liste bietet für jeden etwas, von KI -Enthusiasten bis hin zu erfahrenen Backend- und Frontend -Entwicklern. Wählen Sie Ihre Favoriten und sparen Sie Zeit, um nach REL zu suchen

Dieses Tutorial führt Sie durch das Erstellen einer serverlosen Bildverarbeitungspipeline mit AWS -Diensten. Wir werden ein Next.JS -Frontend erstellen, der in einem ECS -Fargate -Cluster eingesetzt wird und mit einem API -Gateway, Lambda -Funktionen, S3 -Eimer und DynamoDB interagiert. Th

Dieses Pilotprogramm, eine Zusammenarbeit zwischen CNCF (Cloud Native Computing Foundation), Ampere Computing, Equinix Metal und betätigten, rationalisiert ARM64 CI/CD für CNCF -Github -Projekte. Die Initiative befasst sich mit Sicherheitsbedenken und Leistung

Dieser GO-basierte Netzwerkanfälligkeitsscanner identifiziert potenzielle Sicherheitsschwächen effizient. Es nutzt die Parallelitätsfunktionen von GO und beinhaltet die Erkennung und Anfälligkeitserkennung. Erforschen wir seine Fähigkeiten und ethisch


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools

DVWA
Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

SublimeText3 Englische Version
Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor
