ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2010年7月23日 星期五

follow -- trace kernel with kgdb and qemu..

就照著 使用KGDB调试内核 on QEMU(一步一步跟我学) 的內容作.. --果然要用 sda
qemu -kernel ./bzImage -append "root=/dev/sda kgdboc=ttyS0,115200 kgdbwait"
-boot c -hda ./busybox.img -k en-us -serial tcp::4321,server
這樣啟動qemu 後,會等待 gdb 的連線,所以啟動 gdb 後,下一次
target remote localhost:4321
qemu 就會繼續下去.,,load linux kernel,然後 kernel 啟動後,又會等 gdb connect,所以gdb 又要下一次
target remote localhost:4321
然後 kernel 會繼續 run 到 break,等 gdb 下command..
用 ubuntu 啟動 qemu 會停在:
trying to set up timer as Virtual Wire IRQ
加上 -no-acpi 就可以。
這個寫錯 用 qemu load 的 kernel 是 bzImage 用 gdb local 的 symbol 是 vmlinux QEMU 啟動後會等 gdb.. QEMU waiting for connection on: tcp:0.0.0.0:4321,server 這時候 gdb 要下 target remote localhost:4321 連上後ˋ, qemu 會繼續 run.... 然後 kernel 開始 run .. 一直到.. kgdb : waiting for connection from remote gdb.. 這ˊ時候 gdb 會顯示: Remote debugging using localhost:4321 kgdb_breakpoint (new_kgdb_io_ops=0xc073d7f0) at kernel/kgdb.c:1721 1721 wmb(); /* Sync point after breakpoint */ (gdb) 等 gdb 的 command。 這樣就可以設 breakpoint,然後用 c 繼續 run 了

沒有留言:

標籤

網誌存檔