Python에서 세분화 오류 관리
특히 복잡한 응용 프로그램을 개발하면 세분화 오류와 같은 미친 기술 상황이 발생할 수 있습니다. 이 상황은 다양한 요인으로 인해 발생할 수 있으며 코드로 문제를 추적하는 것이 중요합니다.
세그멘테이션 오류의 가장 큰 원인 중 일부는 불법 메모리 위치(코드를 사용하여 액세스할 수 없는 메모리에 액세스), 거대한 데이터 세트 가져오기, 무한 재귀 등입니다. 이 기사에서는 세그먼테이션을 관리하는 방법을 보여줍니다. 파이썬의 결함.
settrace
를 사용하여 Python에서 세분화 오류 관리
segmentation fault
오류가 발생하면 코드를 다시 작성해야 한다는 사실을 아는 것이 중요합니다.
다시 작성할 부분을 아는 것이 좋은 출발점입니다. 그것이 sys.trace
가 들어오는 곳입니다.
sys
모듈을 사용하면 일부 변수를 확인하고 인터프리터와 상호 작용할 수 있으며 settrace
함수를 사용하면 프로그램 실행을 추적하고 Python 소스 코드 디버거를 제공할 수 있습니다.
따라서 세그먼트 오류
의 경우 어떤 호출이 이루어지고 언제 모든 일이 발생하는지 쉽게 추적할 수 있습니다.
추적 기능은 frame
, event
및 arg
의 세 가지 인수를 사용하여 전체 프로세스에 중요합니다. frame
은 현재 스택 프레임을 사용하고 event
는 문자열을 사용하며 arg
는 구문 분석하는 이벤트에 따라 형태를 취합니다.
따라서 코드 내에서 sys
모듈을 가져오고 trace
함수를 만들고 trace
함수를 settrace
메서드를 통해 전달하여 고차 함수를 만들 수 있습니다. 그런 다음 세그먼트 결함
을 생성하는 코드를 배치합니다.
두 줄의 코드를 인쇄하는 test()
함수에 대한 추적을 만들어 봅시다.
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()
출력:
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
각 라인마다 발생하는 이벤트
, 콜
, 라인
, 리턴
을 볼 수 있습니다. 이를 통해 Python 인터프리터가 수행하는 모든 작업과 제공하는 출력을 추적할 수 있습니다.
Line 8call, C:\Python310\lib\encodings\cp1252.py:18
및 Line 9call, C:\Python310\lib\encodings\cp1252.py:18
코드 출력을 볼 수 있습니다. 따라서 분할 오류
를 통해 문제가 시작되는 위치를 추적하고 거기에서 작업할 수 있습니다.
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.
LinkedIn관련 문장 - Python Error
- AttributeError 수정: Python에서 'generator' 객체에 'next' 속성이 없습니다.
- AttributeError 해결: 'list' 객체 속성 'append'는 읽기 전용입니다.
- AttributeError 해결: Python에서 'Nonetype' 객체에 'Group' 속성이 없습니다.
- AttributeError: 'Dict' 객체에 Python의 'Append' 속성이 없습니다.
- AttributeError: 'NoneType' 객체에 Python의 'Text' 속성이 없습니다.
- AttributeError: Int 객체에 속성이 없습니다.