2013-09-21 3 views
2

수정 된 Linux-3.11.0 커널 디버깅에 문제가 있습니다. 코드를 디버깅 들어, 내가 사용원격 gdb 디버깅이 중단 점에서 중지되지 않음

  1. GDB에게 7.6
  2. QEMU 1.6.5
  3. 리눅스 커널 3.11.0

내 시스템은 인텔 (R) 코어 (TM) I7있다 -2760QM CPU @ 2.40GHz 우분투 실행 12.10

'make menuconfig'를 사용하여 만든 구성 파일로 수정 된 커널을 컴파일했습니다.

(이하 "커널 해킹 '분류에 수정을)를 .config 파일 라인 (I 관련 찾을 수 있음)의 일부는 여기에 인용 :

CONFIG_DEBUG_INFO=y 
CONFIG_DEBUG_KERNEL=y 
CONFIG_MAGIC_SYSRQ=y 
CONFIG_DEBUG_FS=y 
CONFIG_HAVE_HW_BREAKPOINT=y 
CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y 

난에"-S "옵션을 QEMU를 사용 그것이 실행의 내가 QEMU에 연결하고 다시 내 커널을 부팅하고, GDB를 사용하여 :

(gdb) target remote :1234 
(gdb) continue 

예를 들어, 중단 점을 설정 :

: break schedule 내가 같은 확인 메시지가
Breakpoint 1 at 0xffffffff81736400: file kernel/sched/core.c, line 2509. 

여기까지 모든 항목이 정상적으로 처리됩니다.

문제는 gdb와 qemu가 중단 점에서 멈추지 않는다는 것입니다. 그들은 모두 단순히 계속 실행 은 ...

나는 어떤 장소에서 제안 하드웨어 브레이크 포인트를 설정하려고하지만 메시지 수 :

No hardware breakpoint support in the target. 

나는 CONFIG_HAVE_HW_BREAKPOINT 세트를 가지고 있기 때문에 이상한이다.

다른 장소에서 제안

나에게도 해제 CONFIG_DEBUG_RODATA,하지만 여전히 결과가 없습니다 ...

여기 제안 나는 .config 파일 주변에 엉망 시도

: gdbserver inside qemu does not stop on breakpoints하지만 관련 차이를 알아낼 수 작업 .config 파일과 내 .config 파일 ... (너무 많은 차이가 있습니다!)

아무도 도와 줄 수 있습니까?

감사합니다 !!

+0

실행중인 커널이 디버깅되고 있음을 어떻게 알 수 있습니까? 어디에서 포트 "1234"를 설정합니까? qemu를 사용하지는 않았지만 가능한 경우 KGDB/KDB를 활성화하고 직렬 링크를 통해 커널을 실행 해보십시오. – srd

+0

-s 및 -S 플래그를 사용합니다. Qemu가 시작되고 gdb가 기본 포트 인 1234에 연결될 때까지 기다립니다. gdb 쪽에서 계속을 누르면 Qemu가 실행을 다시 시작합니다. 그래서 gdb와 Qemu 사이의 연결은 괜찮습니다 ... – Noamiko

답변

4

좋아, 나는 다른 사람들을 위해 여기에 게시하고 있습니다 : 분명히 이것은 매우 섬세한 절차입니다 ... 내 설정 파일은 괜찮 았어. 내가해야 할 일은 vmlinux를로드 한 후에가 아니라 qemu에 연결 한 후에 만 ​​중단 점을 정의하는 것입니다. 이 중단 점은 하드웨어 중단 점이어야합니다 ... 그렇지 않으면 중단되지 않습니다!

+1

아직 밖에 있다면 ...이 대답을 예제로 업데이트 할 수 있습니까? "... vmlinux를로드 한 후가 아니라 qemu에 연결 한 후에 만"의미하는 것은 여기에 명확하지 않습니다. 감사! – larsks

+0

글쎄, 간단히 말해 gem을 qemu에 연결하고 그 다음에 만 중단 점을 정의해야한다는 의미입니다 ... 반대 순서로 수행하면 중단 점이 설정되었지만 아무것도 표시되지 않는다는 메시지가 나타납니다 일어날 것이고 단순히 효과가 없을 것입니다. – Noamiko

+0

@Noamiko 안녕하세요, 아주 비슷한 문제가 있지만 원격 gdb를 사용하고 있지 않습니다. 내 VM 컴퓨터에 있는데 gdb가 중단 점에서 중지하지 않습니다. 어떻게해야합니까? – user1993748

관련 문제