2014-04-23 133 views
0

我在兩臺虛擬機之間使用串行端口進行kgdb設置(目標是主機的克隆),我可以在其中設置斷點。但是當遇到斷點時,我嘗試在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下的目錄命令指定源位置解決了無法看到源代碼的問題。

相關問題