2011-11-12 60 views
0

爲什麼kgdb總是從kernel/kgdb.c:1749行開始「kgdb:等待來自遠程gdb的dor連接」只是在Linux的內核之路上進行的。kgdb遠離init.c啓動start_kernel()

我想從頭開始。

我的環境是:

  • PC ubuntu10.10
  • GDB內核2.6.34.1由busybox的製造
  • 的filesys
  • VirtualMach是QEMU

繼從技巧網絡搜索,我做了我的Linux。我可以順利地使用它,但是當我嘗試遠程GDB它的內核總是從開始:

內核/ kgdb.c:1749「的kgdb:等待來自遠程GDB連接」

這離我想見面的功能start_kernel太遠了。

我使用了以下內容:

 
qemu -kernel /usr/src/work/bzImage -append "root=/dev/sda kgdboc=ttyS0,115200 kgdbwait" 
    -boot c -hda /usr/src/work/busybox.img -k en-us -serial tcp::4321,server 

gdb /usr/src/work/vmlinux (gdb) target remote localhost:4321 

然後,添加-S,因此它可以從頭開始。但是當我gdb它仍然有錯誤。

當我輸入命令next它不會去下一行並去其他地方。例如,我在next之後的init.c startkernel()處設置了一個斷點。它在其他文件中。

+1

http://blog.scottt.tw/2010/01/kgdb-tutorial.html –

+0

thx ..我將嘗試 – yueyue

回答

0

如果「kgdb:來自遠程gdb的等待dor連接」對於您來說還不夠早,您將不得不嘗試kgdb以外的其他操作。想想這個:kgdb是內核提供的服務。你不能從頭開始調試內核,因爲內核必須執行足夠的初始化才能提供kgdb服務。

幸運的是,您還有另一種選擇。根據this source,如果你用標記-s -S啓動qemu,qemu將啓動系統並等待你在調試器連接到內核之前將其附加到localhost:1234。這足夠早嗎?

+0

thx很多...我已經添加了「-S」,但東西weired發生..我在init.c中設置了一個斷點startkernel()。接下來,它在其他文件中。 – yueyue