“세그먼트 결함 (코어 덤프)”해결 방법


15

우분투 14.04를 사용하고 있습니다.

일부 응용 프로그램을 설치 한 후 분할 오류 (코어 덤프) 오류가 발생했습니다.

무슨 뜻인가요 ? 이 문제를 어떻게 해결할 수 있습니까?

예를 들면 다음과 같습니다.

크롬 안정을 설치 한 후 터미널에서 시작하면이 오류가 발생합니다.


일부 바이너리 프로그램이 충돌했지만 이것은 충돌 한 프로그램에 따라 매우 다르므로 어떤 프로그램에서이 프로그램을 생성했는지 알려 주셔야합니다. 또한 업데이트를 시도 할 수도 있습니다.
Kwaadpepper


1
비공개 소스이므로 GooGle 삼촌에게 버그 보고서를 올리는 것이 좋습니다.
user.dz

1
좋은 SH :) 나는 아저씨에게 물을 것이다; P
Ravan

1
환경 설정 및 캐시를 제거하십시오 sudo rm -rf ~/.config/google-chrome ~/.cache/google-chrome. 그런 다음 시크릿 모드로 실행하십시오google-chrome --incognito
user.dz

답변:


12

무슨 뜻인가요?

AU : 세그먼테이션 결함이란 무엇입니까?를 참조하십시오 . 그리고 이것도 그것을 재현하는 몇 가지 예를 가지고 있습니다. SO : 세그먼테이션 결함이란 무엇입니까? . 내가 올 수있는 가장 간단한 설명 (완벽하지 않을 수도 있음) :

프로그램이 자체 섹션 외부의 메모리 영역에 액세스하려고했습니다. OS가 차단합니다.

경우에 따라 초기화 포인터로 값 읽기, 배열에서 범위를 벗어남, 함수 호출 (이전 호환성이 유지되지 않는 경우), ...

그러나 큰 프로그램이나 다른 프로젝트 라이브러리에서 릴레이되는 원인을 찾는 것이 항상 쉬운 것은 아닙니다. 그리고 대부분의 경우 대상 프로그램 또는 종속성 (업스트림 프로젝트 또는 다운 스트림 배포 패키지)에 대한 버그 보고서가 나타납니다.

이 문제를 어떻게 해결할 수 있습니까?

사용자 정의 구성 / 설정을하지 않고 모든 업데이트가 설치되어있는 경우 버그 보고서 를 실행하십시오 . 버그를 어떻게보고합니까?를 참조하십시오 .

Ubuntu에서 지원하는 오픈 소스 인 경우 ubuntu-bug( apport-bug)를 사용 하십시오. 타사 비공개 소스의 경우 도움말 페이지에서 버그를보고하고 관련 데이터를 수집하는 방법을 확인하십시오.


참고 : 프로그래밍 배경이 조금이라도없는 경우 직접 해결하기 위해 최선을 다하는 것이 좋습니다. 몇 년 동안 많은 버그 리포트가 비활성 상태입니다. 또는 문제를보고하기 전에 최소한 디버그 데이터를 수집하여 문제를 해결하십시오.

디버깅에 유용한 도구

  1. apport-bug 로그 / 코어 덤프 / 역 추적

    세그먼테이션 오류 전에 오류 메시지가없는 경우 --save옵션으로 실행하고 역 추적 로그를 찾으십시오.

    apport-bug program-cmd --save bug-report_output.txt
    
  2. gdb 역 추적 / 디버깅 소스 코드

    작동하지 않으면 gdb다음을 사용하십시오 .

    $ gdb program-cmd
    (gdb) run
    (gdb) backtrace
    

    오류 메시지가 표시되면 비슷한 경우 웹, 런치 패드 및 업스트림 프로젝트 버그 추적기를 확인하십시오.

    일부 고급 사용자 또는 ac / c ++ 학습 경로를 따르는 사용자의 경우 해당 -dbg기호 패키지를 다운로드 할 수 있습니다. 그런 다음 gdb소스를 통한 프로그램 흐름을 추적하고 런타임 오류를 발생시키는 정확한 기능 / 명령을 얻는 데 사용할 수 있습니다 .

  3. strace 시스템 콜 추적

    도움이 될 수있는 또 다른 도구는 strace마음에 듭니다. 정말 강력한 도구입니다.

    그것은 스스로를 제시한다 :

    가장 간단한 경우 strace에는 종료 될 때까지 지정된 명령을 실행하십시오. 프로세스에 의해 호출 된 시스템 호출과 프로세스에 의해 수신 된 신호를 가로 채서 기록합니다. 각 시스템 호출의 이름, 인수 및 리턴 값은 표준 오류 또는 -o 옵션으로 지정된 파일에 인쇄됩니다.

    strace유용한 진단, 교육 및 디버깅 도구입니다. 시스템 관리자, 진단 전문가 및 문제 해결사는 소스를 추적하기 위해 다시 컴파일 할 필요가 없기 때문에 소스를 즉시 사용할 수없는 프로그램의 문제를 해결하는 데 매우 유용합니다. 학생, 해커 및 지나치게 호기심 많은 사람들은 일반적인 프로그램을 추적하여 시스템 및 시스템 호출에 대해 많은 것을 배울 수 있습니다. 또한 프로그래머는 시스템 호출 및 신호가 사용자 / 커널 인터페이스에서 발생하는 이벤트이므로이 경계를 면밀히 조사하면 버그 격리, 온 전성 검사 및 경쟁 조건 캡처에 매우 유용합니다.

    출처: man strace

  4. ltrace 동적 라이브러리 호출 추적

    ltrace지정된 명령이 종료 될 때까지 단순히 지정된 명령을 실행하는 프로그램입니다. 실행 된 프로세스에 의해 호출 된 동적 라이브러리 호출과 해당 프로세스에 의해 수신 된 신호를 인터셉트하고 기록합니다. 또한 프로그램에서 실행 된 시스템 호출을 가로 채서 인쇄 할 수 있습니다.

    사용법은 strace(1) 과 매우 유사합니다 .

    출처: man ltrace

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.