2014-04-23 2 views
0

두 개의 VM (대상은 호스트의 복제본) 사이에 직렬 포트를 사용하여 kgdb 설정을 가지고 있으며 그 안에 중단 점을 설정할 수 있습니다. 하지만 breakpoint에 도달하면 gdb에서 list 명령을 사용하여 소스를 보려고 시도하지만, 아래에 표시된 것처럼 중단 점에 도달 한 파일 대신 kgdb.c의 소스를 보여줍니다.gdb를 사용하여 커널을 디버깅하는 동안 소스 코드를 볼 수 없습니다

(gdb) l 
1713 void kgdb_breakpoint(void) 
1714 { 
1715   atomic_set(&kgdb_setting_breakpoint, 1); 
1716   wmb(); /* Sync point before breakpoint */ 
1717   arch_kgdb_breakpoint(); 
1718   wmb(); /* Sync point after breakpoint */ 
1719   atomic_set(&kgdb_setting_breakpoint, 0); 
1720 } 
1721 EXPORT_SYMBOL_GPL(kgdb_breakpoint); 
1722 
(gdb) 
1723 static int __init opt_kgdb_wait(char *str) 
1724 { 
1725   kgdb_break_asap = 1; 
1726 
1727   if (kgdb_io_module_registered) 
1728     kgdb_initial_breakpoint(); 
1729 
1730   return 0; 
1731 } 
1732 
(gdb) 
1733 early_param("kgdbwait", opt_kgdb_wait); 
(gdb) 
Line number 1734 out of range; kernel/kgdb.c has 1733 lines. 
(gdb) 

중단 점이 발생할 때 적절한 소스를 어떻게 볼 수 있습니까?

[편집] 이미 vmlinux (정적으로 컴파일 된 커널)에 포함 된 함수의 소스를 나열하려고하면 소스를 표시합니다. 하지만 동적으로로드 된 모듈을 디버그하여 add-symbol-file을 사용하여 심볼을 추가하려고하면 소스가 표시되지 않습니다. 이것은 내 모듈에 문제가 있음을 의미합니다. 아무도이 모듈의 잘못된 점을 알려줄 수 있습니까?

답변

0

gdb 버전을 변경하고 gdb에서 directory 명령을 사용하여 소스 위치를 지정하면 소스 코드를 볼 수 없다는 문제가 해결되었습니다.

관련 문제