Python에서 세분화 오류 관리

Olorunfemi Akinlua 2023년6월21일
Python에서 세분화 오류 관리

특히 복잡한 응용 프로그램을 개발하면 세분화 오류와 같은 미친 기술 상황이 발생할 수 있습니다. 이 상황은 다양한 요인으로 인해 발생할 수 있으며 코드로 문제를 추적하는 것이 중요합니다.

세그멘테이션 오류의 가장 큰 원인 중 일부는 불법 메모리 위치(코드를 사용하여 액세스할 수 없는 메모리에 액세스), 거대한 데이터 세트 가져오기, 무한 재귀 등입니다. 이 기사에서는 세그먼테이션을 관리하는 방법을 보여줍니다. 파이썬의 결함.

settrace를 사용하여 Python에서 세분화 오류 관리

segmentation fault 오류가 발생하면 코드를 다시 작성해야 한다는 사실을 아는 것이 중요합니다.

다시 작성할 부분을 아는 것이 좋은 출발점입니다. 그것이 sys.trace가 들어오는 곳입니다.

sys 모듈을 사용하면 일부 변수를 확인하고 인터프리터와 상호 작용할 수 있으며 settrace 함수를 사용하면 프로그램 실행을 추적하고 Python 소스 코드 디버거를 제공할 수 있습니다.

따라서 세그먼트 오류의 경우 어떤 호출이 이루어지고 언제 모든 일이 발생하는지 쉽게 추적할 수 있습니다.

추적 기능은 frame, eventarg의 세 가지 인수를 사용하여 전체 프로세스에 중요합니다. 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:18Line 9call, C:\Python310\lib\encodings\cp1252.py:18 코드 출력을 볼 수 있습니다. 따라서 분할 오류를 통해 문제가 시작되는 위치를 추적하고 거기에서 작업할 수 있습니다.

Olorunfemi Akinlua avatar Olorunfemi Akinlua avatar

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