2013-03-07 5 views
2

내 프로그램에서 세그먼트 결함이 지속적으로 발생하지만 코어 덤프 파일이 생성되지 않습니다. ulimit은 무제한의 가치를 보여 주며, ulimit -c는 무제한 적으로 확실합니다. 어떤 아이디어?세그먼트 오류, 코어 덤프 없음

+0

Mayby 먼저 우리에게 몇 가지 코드를 보여? – Blood

+0

null 포인터 또는 배열 외부에 액세스하는 가능성이 가장 높습니다. – QuentinUK

+1

디버거에서 프로그램을 실행하면 오류가 발생할 때 중단됩니다. – unwind

답변

3

가 여러 가지 이유로

  • 디렉토리
  • 프로그램이
    보면 다른 곳의 핵심 작업 디렉토리를 변경없이 쓰기 액세스 할 수도
  • 디스크는
  • ulimit를 가득 수 한 쉘에서 설정되고 프로그램이 다른 쉘 또는 환경에서 시작됩니다.
+2

+ 프로그램은 데몬이지만, OP는 현재 쉘 세션에 대해 ulimit 설정을 변경합니다. – Slava

+0

@Slava 감사합니다. –

0

테스트에있는 루트에 반대하지 않습니다를 제공, 쉘 세션 문제를 해결 효율적으로 활용하려면 다음

#ifdef DEBUG 
    // Enable core dumps 
    struct rlimit corelim; 

    corelim.rlim_cur = -1; 
    corelim.rlim_max = -1; 

    if (setrlimit (RLIMIT_CORE, &corelim) != 0) 
    { 
     log_error ("Couldn't set core limit"); 
    } 
#endif 
-3

세그먼트 오류가 메모리에 잘못된 주소를 액세스, 특히 것으로 발생합니다. 리소스를 부적절하게 초기화하는 것은 매우 가능합니다. 예를 들어, Valgrind를 디버깅에 사용할 수 있습니다.

+0

어떻게 코어 덤프가 생성되지 않는 문제를 해결합니까? – us2012

+0

메모리 할당 문제는 구문 오류가 아닙니다. – user1929959

4

은 프로그램 루트로 (또는 루트 기능을) 확인 실행하는 경우 :

cat /proc/sys/fs/suid_dumpable

또는 프로그램이 데몬 확인하는 경우 :

getsebool allow_daemons_dump_core

관련 문제