문제

나는 이것이 이전에 질문을 받았을 것이라고 생각하지만 내 요구 사항을 충족시키는 것을 찾을 수는 없습니다.

다양한 테스트 수트에서 코드 흐름을 분석하여 대규모 프로젝트를 디버깅 (이해하려고 노력)입니다. 그러나 일부 파일에서 중단 점을 설정하려고하면 "Filename이라는 소스 파일이없는 소스 파일"오류가 발생합니다.
그래서 내 질문은 다음과 같습니다.

  1. GDB는 코드 흐름이 들어가는 소스 파일에 대해서만 브레이크 포인트 만 허용 할 수 있습니까?
  2. 파일의 전체 줄에 중단 점을 설정할 수 있습니까? b filename:*
  3. 헤더 파일에서 헤더 파일이 컴파일 시간에 추가되므로 헤더 파일의 중단 점이 허용됩니까?

모든 통찰력은 환영받는 것 이상입니다.

편집하다
나는 일부 Hello World Code에서 이러한 문제를 확인한 후 답변 중 하나에서 지적한 것과 동일한 결과를 발견했지만 실제 프로젝트에서 내 문제는 여전히 켜져 있습니다. 나는 중단 점으로 허용되지 않는 동일한 줄의 편집 된 출력을 볼 수있을 때에도 여전히 동일한 오류가 발생합니다.

편집 2
나는 그것을 작동 시켰지만 어떻게, 왜 작동하는지 이해하지 못한다 .. ??


(gdb) b /home/neeraj/BTP/trunk/include/header.h:872
No source file named /home/neeraj/BTP/trunk/include/header.h:872
Make breakpoint pending on future shared library load? (y or [n]) n
(gdb) b /home/neeraj/BTP/trunk/src/driver.cpp:2
Breakpoint 1 at 0x806c61a: file ../../../trunk/src/driver.cpp, line 2.
(gdb) b /home/neeraj/BTP/trunk/include/header.h:872
Breakpoint 2 at 0x8052fa0: file ../../../trunk/include/header.h:872, line 872.
(gdb)

더 깊은 통찰력 ..?

도움이 되었습니까?

해결책

공유 도서관 이외에도 조심해야 할 또 다른 것은 gdb 소스 파일 이름은 코드가 컴파일 된 디렉토리와 관련이 있습니다. Absolute PathNames로 컴파일하지 않은 경우 사용하십시오. dir 컴파일 디렉토리를 장소 목록에 추가하려면 명령 gdb 소스 코드를 검색합니다.

그리고 힌트 : 나는 내가 사용할 때 내가 더 생산적이라는 것을 알았습니다. 데이터 디스플레이 디버거 (DDD) 그래픽 프론트 엔드 gdb.

다른 팁

  1. 아니.
  2. 아니.
  3. 예.

-G (Debug) 옵션으로 컴파일해야합니다. Sourcepaths가 올바르게 설정되어 있는지 확인하십시오. 디렉토리, 디렉토리 표시 및 DIR 명령을 사용하여보기/설정하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top