Administrar fallas de segmentación en Python
El desarrollo de aplicaciones especialmente complejas puede conducir a situaciones técnicas locas como fallas de segmentación. Esta situación puede ocurrir debido a diferentes factores, y es importante rastrear el problema con su código.
Algunas de las principales causas de fallas de segmentación son la ubicación ilegal de la memoria (usar su código para acceder a la memoria a la que no tiene acceso), obtener grandes conjuntos de datos, recursividad infinita, etc. En este artículo, le mostraremos cómo administrar la segmentación fallos en Python.
Use settrace
para administrar la falla de segmentación en Python
Ante un error de fallo de segmentación
, es importante saber que tendrás que reescribir tu código.
Conocer la parte a reescribir es un buen punto de partida. Ahí es donde entra en juego sys.trace
.
El módulo sys
nos permite verificar algunas variables e interactuar con el intérprete, y la función settrace
nos permite rastrear la ejecución del programa y sirve como depurador de código fuente de Python.
Entonces, ante un caso de falla de segmentación
, podemos rastrear fácilmente qué llamadas se realizan y cuándo sucede todo.
Las funciones de seguimiento son importantes para todo el proceso y toman tres argumentos: frame
, event
y arg
. El marco
toma el marco de pila actual, el evento
toma una cadena y el argumento
toma forma dependiendo del evento que analicemos.
Entonces, dentro de su código, puede importar el módulo sys
, crear su función trace
y pasar la función trace
a través del método settrace
, lo que lo convierte en una función de orden superior. Luego, colocas tu código que crea una falla de segmentación
.
Vamos a crear una traza para una función test()
que imprima dos líneas de código.
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()
Producción :
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
Puede ver el evento
que ocurre con cada línea, llamada
, línea
y retorno
. Con estos, puede realizar un seguimiento de cada acción que realiza el intérprete de Python y el resultado que proporciona.
Puede ver los resultados del código: Line 8call, C:\Python310\lib\encodings\cp1252.py:18
y Line 9call, C:\Python310\lib\encodings\cp1252.py:18
. Por lo tanto, con una falla de segmentación
, podemos rastrear dónde comienzan los problemas y trabajar desde allí.
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.
LinkedInArtículo relacionado - Python Error
- Archivo <Stdin>, Línea 1, en <Módulo> Error en Python
- Arreglar AttributeError: el objeto 'generador' no tiene atributo 'siguiente' en Python
- Arreglar el comando cl.exe falló: no existe tal archivo o directorio en Windows
- Arreglar NameError: la variable no está definida en Python
- Arreglar Socket.Gaierror: [Errno 8] Nodename ni Servname proporcionado, o desconocido en Python