http://www.kgdb.info/kgdb/use_kgdb/using_kgdb_base_qemu/
https://www.kernel.org/pub/linux/kernel/people/jwessel/kdb/usingKDB.html
http://blog.csdn.net/u013388374/article/details/23553031
http://www.linux-magazine.com/Online/Features/Qemu-and-the-Kernel
1. build kernel and rootfs according to http://www.kgdb.info/kgdb/use_kgdb/using_kgdb_base_qemu/
2. start qemu with 2 serial(-serial) and one gdb server (-s)
qemu -s -kernel /usr/src/work/bzImage.def -append "root=/dev/sd console=ttyS0,115200 kgdboc=ttyS1,115200 kgdbwait" -boot c -hda /usr/src/work/busybox.img -k en-us -serial tcp:127.0.0.1:4444,server -serial tcp:127.0.0.1:4445,server
3. start console and gdb console
telnet localhost 4444
gdb vmlinux
gdb> set remotebaud 115200
gdb> set debug remote 1
gdb> set target-async on
gdb> target remote :4445 或者直接用qemu提供的gdb server在 target remote :1234
4. 等待系统启动, gdb break in,
gdb> break sys_sync
gdb> c
5. 在系统里面通过sync让gdb break in, 也可以通过sysrq。
echo g >/proc/sysrq-trigger
minicom: ctrl a, f, g
telne supporting sending break: ctrl ], send break, press ENTER, g
6.Without gdb targeted, you get kdb on console