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:4321qemu 就會繼續下去.,,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 了
沒有留言:
張貼留言