Segmentierungsfehler in Python verwalten
Die Entwicklung besonders komplexer Anwendungen kann zu verrückten technischen Situationen wie Segmentierungsfehlern führen. Diese Situation kann aufgrund verschiedener Faktoren auftreten, und es ist wichtig, das Problem mit Ihrem Code zu verfolgen.
Einige der größten Ursachen für Segmentierungsfehler sind illegale Speicherortung (Verwenden Ihres Codes für den Zugriff auf Speicher, auf den Sie keinen Zugriff haben), das Abrufen riesiger Datensätze, unendliche Rekursion usw. In diesem Artikel zeigen wir Ihnen, wie Sie die Segmentierung verwalten Fehler in Python.
Verwenden Sie settrace
, um Segmentierungsfehler in Python zu verwalten
Wenn Sie mit einem Segmentierungsfehler
konfrontiert werden, ist es wichtig zu wissen, dass Sie Ihren Code neu schreiben müssen.
Die Kenntnis des neu zu schreibenden Teils ist ein guter Ausgangspunkt. Hier kommt sys.trace
ins Spiel.
Das sys
-Modul erlaubt uns, einige Variablen zu überprüfen und mit dem Interpreter zu interagieren, und die settrace
Funktion erlaubt uns, die Programmausführung zu verfolgen und dient einem Python-Quellcode-Debugger.
Bei einem Segmentierungsfehler
können wir also leicht nachvollziehen, welche Anrufe getätigt wurden und wann alles passiert.
Die Ablaufverfolgungsfunktionen sind für den gesamten Prozess wichtig und nehmen drei Argumente an: frame
, event
und arg
. Das frame
nimmt den aktuellen Stack-Frame, das event
einen String und das arg
nimmt je nach geparstem Event Gestalt an.
Sie können also in Ihrem Code das sys
-Modul importieren, Ihre trace
-Funktion erstellen und die trace
-Funktion durch die settrace
-Methode übergeben, was eine Funktion höherer Ordnung ergibt. Dann platzieren Sie Ihren Code, der einen Segmentierungsfehler
erzeugt.
Lassen Sie uns einen Trace für eine test()
-Funktion erstellen, die zwei Codezeilen ausgibt.
import sys
def trace(frame, event, arg):
print("%s, %s:%d" % (event, frame.f_code.co_filename, frame.f_lineno))
return trace
def test():
print("Line 8")
print("Line 9")
sys.settrace(trace)
test()
Ausgang:
call, c:\Users\akinl\Documents\Python\segment.py:7
line, c:\Users\akinl\Documents\Python\segment.py:8
call, C:\Python310\lib\encodings\cp1252.py:18
line, C:\Python310\lib\encodings\cp1252.py:19
return, C:\Python310\lib\encodings\cp1252.py:19
Line 8call, C:\Python310\lib\encodings\cp1252.py:18
line, C:\Python310\lib\encodings\cp1252.py:19
return, C:\Python310\lib\encodings\cp1252.py:19
line, c:\Users\akinl\Documents\Python\segment.py:9
call, C:\Python310\lib\encodings\cp1252.py:18
line, C:\Python310\lib\encodings\cp1252.py:19
return, C:\Python310\lib\encodings\cp1252.py:19
Line 9call, C:\Python310\lib\encodings\cp1252.py:18
line, C:\Python310\lib\encodings\cp1252.py:19
return, C:\Python310\lib\encodings\cp1252.py:19
return, c:\Users\akinl\Documents\Python\segment.py:9
Sie können das Ereignis
sehen, das mit jeder Leitung auftritt, Anruf
, Leitung
und Rückkehr
. Mit diesen können Sie jede Aktion des Python-Interpreters und die von ihm ausgegebene Ausgabe verfolgen.
Sie können die Codeausgaben sehen - Line 8call, C:\Python310\lib\encodings\cp1252.py:18
und Line 9call, C:\Python310\lib\encodings\cp1252.py:18
. Daher können wir mit einem Segmentierungsfehler
nachvollziehen, wo die Probleme beginnen und uns von dort aus vorarbeiten.
Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.
LinkedInVerwandter Artikel - Python Error
- Adresse wird bereits verwendet Fehler in Python
- AttributeError: __Exit__ in Python
- AttributeError: 'Dict'-Objekt hat kein Attribut 'Append' in Python
- AttributeError: 'NoneType'-Objekt hat kein Attribut 'Text' in Python
- AttributeError: Int-Objekt hat kein Attribut
- AttributeError: Modul Urllib hat keine Attributanforderung