2008-10-15 6 views
24

내 문제는 내 코드에서 일부 중단 점을 설정하고 일부는 작동하지 않는다는 것입니다. 어떤 곳에서는 "Unresolved Breakpoint"에 대해 불평합니다.Eclipse CDT가 중단 점을 무시하는 이유는 무엇입니까?

누구에게 이런 일이 발생했는지 실마리가 있습니까? 나는 gdb를 사용하고 있습니다.

편집 : 예, 물론 디버그 정보로 컴파일됩니다. 코드의 일부 클래스 나 지점에서만 발생합니다. 그리고 코드의 부분이 도달 할 수 있기 때문에 도달했다고 확신합니다.

EDIT : Richard의 솔루션이 작동하지 않습니다. 어쨌든 고마워. 최적화없이 Debug에서 컴파일 중입니다.

+0

'실제'코드 줄에 중단 점을 설정합니까? 그 말은, 말하자면 중괄호 이외의 것을 포함하는 줄이 아니라 실행 가능한 코드를 의미합니다. – paxdiablo

+3

이것은 항상 나에게도 일어납니다. 일반적으로 Eclipse CDT의 디버거는 불행히도 매우 신뢰할 수 없습니다 – UncleZeiv

+0

실행 파일이 디버그 정보로 컴파일되었는지 확인하십시오. – MysticSlayer

답변

3

"Unresolved Breakpoint"는 GDB가 브레이크 포인트를 설정하려고 시도한 파일과 라인에 해당하는 코드 위치를 찾지 못했음을 의미합니다.

생성자를 중지하려고합니까?

그렇다면이 Cently fixed GCC bug을 볼 수 있습니다.

+0

나는 또한 동일한 문제를 얻고있다 당신은 저를 도울 수있다 –

14

아직로드되지 않은 공유 라이브러리에서 중단 점을 설정하려고 할 수 있습니다. 라이브러리가로드 될 때까지는 작동하지 않습니다. 최신 gdb는 지연된 중단 점을 설정할 수 있지만 아직 CDT에서 지원하지 않을 수 있습니다. 일시적인 해결책은 해당 공유 라이브러리가 이미로드되었을 때 도달 할 수있는 처음부터 사용할 수있는 위치에 중단 점을 설정하는 것입니다. 그런 다음 공유 라이브러리에 다른 중단 점을 설정하십시오. 이제는 효과가 있습니다. 좀 지루하지만 일반적으로 작동합니다. GDB documentation에서

:

누구의 주소가 아직 알려져 있지 대기중인 중단 점의 경우,이 필드는 '보류'가 포함됩니다. 이러한 중단 점은 중단 점이 참조하는 심볼 또는 행이있는 공유 라이브러리가로드 될 때까지 실행되지 않습니다.

3

경우에 따라 최적화를 수행해도 중단 점이 건너 뛸 수 있습니다. 컴파일 중임을 확인하십시오 -O0

0

F8 (다시 시작)을 사용하면 내 중단 점에서 멈추지 않습니다. 하지만, Start On Startup : 기본 코드가 설정된 다음 코드 (F5/F6)를 건너 뛰면 내 브레이크 포인트가 손상됩니다. 나는 -g 나 -g3 이외의 특별한 컴파일러 옵션을 가지고 있지 않다. 희망 그 도움 ...

0

브레이크 포인트 유형이 올바른지 확인하십시오. C/C++의 경우 작은 파란 점입니다. 다른 것으로 보이는 경우 중단 점 유형이 잘못되었을 가능성이 있습니다. 나는 파일을 닫으려고 할 것이다. 오른쪽 클릭 -> C/C++ Editor에서 열어 라. 이것은 나를 위해 일했다.

9

"GDB (DSF) Create Process Launcher"에서 "Standard Create Process Launcher"로 참조 된 Process Launcher를 전환하면이 문제가 해결되는 경우가 있습니다. 다른 경우에는 모든 중단 점을 삭제하고 Eclipse를 다시 시작하는 것이 트릭입니다.

0

다른 답변을 사용해도 문제가 해결되지 않으면 이전과 동일한 문제 (예 : GDB의 오래된 버전이 발생한 결과)가 발생했을 수 있습니다. 이것은 Mac에서 GDB를 사용하는 모든 사람들에게 해당됩니다.

내 질문을 참조하십시오 여기에 대답 :

GDB does not break on some lines of code when using multiple source files

0

당신은 템플릿 클래스/함수에서 중단 점을 배치합니까? 나는 같은 문제를 만났다 : 나는 템플릿의 코드를 따라갈 수 있지만 브레이크 포인트는 작동하지 않는다. 나는 일식은 그 클래스의 모든 인스턴스 생성에 중단 점을 배치하는 것을 이해하지 못하는 것 같아요 :

template <typename T> 
int doit(T a) { 
return a.do(); // <-- breakpoint here 
} 
... 
A a; 
cout << doit(a); 

나는 그것이 작은 동전 (...) 대기 결코 작은 동전 (...)에 대한 것이라 생각합니다. "doit"함수를 설정하면 gdb 자체가 중단 점에서 멈 춥니 다.

0

GDB와 비슷한 문제가 있습니다. 서로 다른 경로를 가지고 있어도 동일한 소스 코드 파일 이름으로 인해 발생한 것으로 보입니다. 나는 복제본의 이름을 바꾸었고 GDB는 그 이후에 잘 작동했다.

실비

0

내가 같은 문제를 겪고,

1.- Removed the breakpoints. 
2.- Restart eclipse 
3.- Clean the project by using project -> clean 
4.- Add again the breakpoints and start your debugging. 

이 내 문제를 해결했다.

+0

나는 또한이 문제가 있고 식 두어을 다시 시작하는 것으로 충분했다. – user823981

0

디버거로 GDB를 사용하는 경우, 당신이 두 플래그를 사용합니다 -g 및 -ggdb

할 수 있습니다 중 하나 (다른를 만들기 파일을 직접 FCFLAGS = -g -ggdb을 편집 플래그가있는 경우

또는 디버그 구성 (버그 아이콘 이외의 작은 화살표를 클릭하면 메뉴가 나타남)으로 이동하십시오. 디버깅중인 프로젝트를 선택하고 디버거 탭을 클릭하십시오. gdb를 사용하고 있는지 확인하고 여기에 플래그를 추가하십시오.