답변:
오류라고 세그먼트 오류 (또는 세그먼트 폴트 , 또는 SIGSEGV 우분투에서) 유닉스 계열 시스템을 운영, 또는 말을 다른 일반 보호 오류가 프로그램의 시도가 액세스 할 수있는 메모리의 일부, 또는 어떤 프로그램에 액세스 할 때 윈도우에서, 액세스가 금지되어 있습니다. 세그먼트 오류는 일종의 프로그램 충돌, 즉 프로그램의 비정상 종료입니다. 자세한 정보 (여기에 제시된 주제보다 체계적으로 이해 됨)는 크래시 , 메모리 보호 , 세그먼테이션 결함 , 일반 보호 결함 및 SIGSEGV에 대한 Wikipedia 기사를 참조하십시오 .
분할 오류는 거의 항상 프로그램의 버그로 인해 발생합니다. 나는 당신의 세그먼테이션 결함의 대부분 또는 전부가 동일한 응용 프로그램에서 발생하고 있다고 생각합니다. 컴퓨터에서 세그먼트 오류가 발생하는 상황과 충돌하는 프로그램에 대한 자세한 정보를 제공하십시오. 또한 수신되는 오류 메시지와 그 이전에 표시되는 다른 메시지의 전체 내용과 정확한 내용을 알려주십시오. 이를 통해 세그먼테이션 오류에 대한 일반적인 정보가 아닌 문제에 대한 자세한 조언을 제공 할 수 있습니다.
이 정보를 제공하는 가장 좋은 방법은 질문을 편집하여 포함시키는 것 입니다. 또는이 질문이 일반적으로 세그먼테이션 결함에 관한 것이라면, 세그먼테이션 결함의 원인을 구체적으로 묻는 새 질문을 게시 할 수 있습니다 (이를 수행하는 경우 새 질문에이 모든 세부 정보를 제공하십시오) .
사람들이 어셈블리 코드를 추적하고 문제를 디버깅하는 데 사용하던 시절은 지났습니다. 박사, 왓슨 박사, 세그먼테이션 결함. 그 녹색의 날은지나 갔다.
세그먼테이션 오류의 원인 중 하나는 메모리에 직접 액세스하는 코드가 실패하는 경우입니다. 코드가 다른 응용 프로그램의 메모리 세그먼트에 액세스하려고하면 세그먼트 화 오류가 발생합니다. 더 큰 연속 메모리 블록이 할당 될 수 있도록 메모리 할당이 때때로 이동됩니다. 커널은 복구를 시도하는 동안 모든 메모리 정보를 파일, CPU에서 실행중인 모든 응용 프로그램의 현재 상태 및 해당 상태 (마지막 명령 실행)를 파일에 저장하려고합니다. 또한 많은 복구 정보를 저장하고 가능한 한 많은 파일을 닫아서 hdd가 링크를 끊지 않도록 시도합니다.
자주 재현 할 수 있으면 디버깅하고 수정하십시오. 그것을 재현 할 수 없다면, 손을 잡고 무릎을 꿇고 "일반적으로"보이지 않는 지옥처럼기도하십시오.
SIGSEGV
이외의 다른 핸들러 SIG_DFL
(A의 핵심 종료 덤프입니다 SIGSEGV
당신이 무언가 아주 간 안하는 메모리에 액세스하는 경우 이후) 잘못하고 회복은 불가능할 것입니다. (2) 프로세스가 중지 된 후에 만 코어가 덤프됩니다. (3) 코어 덤프에는 덤프 된 프로세스의 메모리와 레지스터 만 포함됩니다. (4) 다른 프로세스, CPU 및 커널은 다른 프로세스의 segfault의 영향을받지 않습니다.