2009-03-04 2 views
2

Eclipse로 디버깅하는 것이 처음입니다.Eclipse에서 C++ 디버깅이 중단됩니다.

내 응용 프로그램을 디버그하여 segfaults 위치를 확인하려고합니다.

이클립스가 STL에서 깨지는 것은 매우 성가신 문제이다.

예 : 나는 13435 번 소스 파일에 중단 점을 만들었습니다. 이 작동하지만 "Step Over"에 대해 F6 키를 누르면 Eclipse/gdb가 std와 함께 다음 줄에 사용되는 basic_string 생성자를 중단시킵니다. 코우트.

어떤 힌트가 있습니까? Eclipse 또는 그와 같은 구성 옵션이 있습니까?

답변

1

아마도 그게 segfaults입니까?

+0

끝내지 않는 루프로 인해 스택 오버플로가 발생합니다. ^^ 하지만 내 질문에 대한 답을 얻을 수 있습니다. 루프는 내 앱에 SIGINT를 보내면 시작되지만 그 동안에도 STL 나누기가 발생합니다. 시작 - 내가 std :: cout을 사용할 때마다 같다. –

0

Eclipse는 사용하지 않았지만 STL 코드로 끝난 호출 체인을 볼 수있는 "스택 백 트레이스"또는 "호출 스택"보기가 있다고 확신합니다.

+0

예보기가있다. –

+0

그래서 문제가 해결된다. 권리? – flodin

0

코드가 최적화 된 경우 stl에서 중단 될 수 있습니다. 디버그 모드를 사용하여 컴파일을 시도하면 도움이 될 수 있습니다.

+0

또 다른 한가지는 그곳에서 sigfaulting일지도 모른다고합니다. stl functons를 호출하는 코드를 살펴보십시오. 스택 추적이 도움이됩니다. –

0

는 제한된 정보 감안할 때,이 (F6)를 통해 스테핑 (F5) 대신 에

  1. 단계는 이런 일이 어디 의 위치를, 떠오르는 것입니다.
  2. 이 작동하지 않으면 CDT를 최신 버전으로 업그레이드하고 다시 시도하십시오.
  3. 이 방법이 작동하지 않는 경우 Eclipse없이 gdb 을 사용해보십시오.
  4. 마지막 옵션 인 은 일련의 cerr 출력을 내 보냅니다. cerr (버퍼되지 않음)은 cout이 아닙니다.

아무 것도 작동하지 않는 경우 자세한 내용을 게시하십시오.

0

비슷한 문제가있었습니다. 그것은 인라인 함수 (stl cuases)에 관한 것이다.

몇 가지 추가 디버그 정보를 생성하려면 일부 컴파일러 플래그를 추가해야합니다. gcc seeg-g * flags (gdb 디버거 준수를 위해 -ggdb를 사용하면 해당 유형의 디버거에 대해 가장 적절한 지원이 제공됩니다).

최적화를 해제 할 수도 있습니다.

p.s. 나는 충분히 명확하지 않았다 : 그것은 Eclipse의 잘못이 아니라 컴파일러/디버거 오류이다.

관련 문제