두 개의 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을 사용하여 심볼을 추가하려고하면 소스가 표시되지 않습니다. 이것은 내 모듈에 문제가 있음을 의미합니다. 아무도이 모듈의 잘못된 점을 알려줄 수 있습니까?