我在两个 VM 之间使用串行端口设置了 kgdb(目标是主机的克隆。)并且我能够在其中设置断点。但是当断点被击中时,我尝试在 gdb 中使用 list 命令查看源代码,但它显示的是 kgdb.c 的源代码,而不是我的断点被击中的文件,如下所示:
(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 添加它的符号时,它不会显示源代码。这意味着,我的模块有问题。谁能帮我这个模块有什么问题?