2011-08-16 1 views
-2

ROOT 플랫폼에 C++ 코드를 작성했습니다. 다음과 같은 오류가 발생합니다 :이 오류는 무엇을 의미합니까?

*** Break *** segmentation violation 
gdb not found, need it for stack trace 
Root > Function main() busy flag cleared 

나는 이것이 (일반적으로) 무엇을 의미하는지 알고 싶습니다.

+2

세그먼트 위반 - 보통 일종의 메모리 액세스 오류 (포인터 실행 amok). gdb not found - gnu 디버거입니다. 설치되지 않았거나 시스템 경로에 없습니다. – arunkumar

답변

3

일반적으로 권한이없는 메모리를 작성했거나 읽을 수 있음을 의미합니다. 그냥 잘못된 메모리이거나 (플랫폼이 그런 개념을 지원하는 경우) 자신이 소유 한 메모리 밖에 있습니다.

일반적인 원인은 포인터를 해제 한 다음 다시 사용하는 것입니다.

Foo * pFoo = new Foo(); 
pFoo->Bar(); // should be fine. 
delete pFoo; // pFoo now points to memory that may or may not still be an actual Foo. 
pFoo->Bar(); // undefined behavior. 
3

일반적으로 "세그먼트 위반"은 할당되지 않은 메모리에 액세스 한 것을 의미합니다. 일반적으로 길잃은 포인터가 그 이유입니다.

나머지는 gdb 누락과 관련된 Linux 관련 메시지입니다 (문제를 이해하는 데 도움이 됨).