kgdb 参数解释
现在虽然能调试了,但是有点不对劲。
1)target remote连接上后,server端没有任何显示。"Waiting for connection from remote gdb..."这条信息应该在target上显示,但我并没有看到。
答:在早期的内核版本中可能看不到提示信息,因为KGDB使用early_param(),所以可能无法显示,应该正常。
2)调试的时候continue后,执行到一段后又回到了最开始的位置。
显示对于VFS加载错误。
答:可能是内核编译选项不正确,要想调试首先要保证这个内核能正常运行。
2.6.26以后内核自带了kgdb,不需要再打patch了。
首先测试串口:
target上: cat < /dev/ttyS0
host 上: echo hello > /dev/ttyS0
通过proc查看某个函数或者变量的地址:
$ grep sys_close /proc/ksyms
c013212c sys_close_Rsmp_268cc6a2
KGDB的断点可以在内核中任何地方放置,除了KGDB本身所使用的代码。
甚至可以设置在中断中。
所有编译都必须在host上,因为target机上不需要源文件,只需要可执行文件。
如果在target机上编译,就需要把源文件和可执行文件都copy到host上。
kgdbwait: This option causes KGDB to wait for a GDB connection during kernel bootup.
kgdb8250=,
Ctrl + C 可以终止kernel运行,等待gdb命令。