搭建内核开发调试环境
2013-03-15 22:43
381 查看
闲来无事, 总结一下内核开发调试环境的搭建过程, 希望能对和我一样的内核新手们有所帮助.
或
第二个命令开启了KGDB, 将Guest系统的串口映射到了Host系统的1234端口, 并在启动过程中等待gdb的连接.
接下来就和普通的gdb没什么大的区别了, 比如在sched_clock函数处设置断点
另外, 运行过程中可以在测试系统里执行
http://github.com/adam8157/kernel-studio
Posted by Adam Lee Apr 5th, 2012
方案
我的测试系统在QEMU中运行, Host和Guest的架构都是x86_64, 用Busybox生成的initrd做为根文件系统, KGDB做为调试器.生成内核
内核中需要打开的选项是CONFIG_EXPERIMENTAL,
CONFIG_DEBUG_INFO,
CONFIG_KGDB和
CONFIG_KGDB_SERIAL_CONSOLE, 同时需要关闭
CONFIG_DEBUG_RODATA选项. 然后
make bzImage编译生成内核. 具体选项的意义可以去翻内核文档, 这里就不罗嗦了.
生成根文件系统
打开Busybox的CONFIG_STATIC和
CONFIG_INSTALL_NO_USR选项, 执行
make和
make install编译并生成, 然后参照下面的步骤创建initrd根文件系统:
mkdir temp && cd temp #创建系统目录 mkdir -p dev etc/init.d mnt proc root sys tmp chmod a+rwxt tmp cp -rf ../busybox/_install/* ./ #挂载系统目录 cat << EOF > etc/fstab proc /proc proc defaults 0 0 sysfs /sys sysfs defaults 0 0 tmpfs /tmp tmpfs defaults 0 0 EOF cat << EOF > etc/inittab ::sysinit:/etc/init.d/rcS ::respawn:-/bin/sh tty2::askfirst:-/bin/sh ::ctrlaltdel:/bin/umount -a -r EOF cat << EOF > etc/init.d/rcS #!bin/sh /bin/mount -a #用mdev生成设备文件 /sbin/mdev -s EOF chmod 755 etc/init.d/rcS find ./ | cpio -o -H newc | gzip > ../rootfs.img
启动QEMU
qemu-system-x86_64 -kernel kernel.img -append \ "root=/dev/ram rdinit=/sbin/init" -initrd rootfs.img
或
qemu-system-x86_64 -kernel kernel.img -append \ "root=/dev/ram rdinit=/sbin/init kgdboc=ttyS0,115200 kgdbwait" \ -initrd rootfs.img -serial tcp::1234,server
第二个命令开启了KGDB, 将Guest系统的串口映射到了Host系统的1234端口, 并在启动过程中等待gdb的连接.
启动gdb
内核开启KGDB的情况下, 执行gdb vmlinux, 其中vmlinux是未压缩的内核. 然后
target remote localhost:1234连接kgdb.
接下来就和普通的gdb没什么大的区别了, 比如在sched_clock函数处设置断点
break sched_clock,
continue继续运行, 到达断点后打印jiffies_64变量
print jiffies_64等等.
另外, 运行过程中可以在测试系统里执行
echo g > /proc/sysrq-trigger让gdb重新得到控制权.
For 懒人
顺手在github上建了个项目, 可以自动搭建整个内核开发调试环境, 详见README.http://github.com/adam8157/kernel-studio
git clone git://github.com/adam8157/kernel-studio.git
Posted by Adam Lee Apr 5th, 2012
http://adam8157.info/blog/2012/04/setup-kernel-developing-environment/
相关文章推荐
- 搭建内核开发调试环境
- 调试内核Ubuntu 搭建嵌入式开发环境-续
- 第一天:搭建Windows内核驱动开发调试环境
- Linux下搭建Android开发环境及Android真机调试
- Android开发--环境搭建和调试技巧
- 使用 qemu 搭建内核开发环境
- PHP开发环境搭建 Apache2.4+PHP7.1.8+PHPStorm (加调试模式)
- Win7+vmware+xpsp3+vs2010驱动开发环境搭建及调试方法
- Windows 7 搭建 Mobile 6 真机调试开发环境
- cocos2dx开发之搭建一个高效的调试环境(Android平台)
- Linux驱动开发之环境搭建----Ubuntu 12.4 编译内核
- windows内核开发环境的简易搭建
- quick-cocos2d-x可调试开发环境搭建
- 使用VS2005搭建典型高效的SharePoint开发环境,提高生产效率,包含远程调试,自动部署
- Odoo开发教程(一):使用pycharm搭建开发调试环境
- Eclipse+php插件+Xdebug搭建PHP完美开发/调试环境指
- 用RubyMine4.0.2搭建Ruby/redmine程序的开发调试环境最佳实践
- PHPStorm+Xampp+Xdebug搭建PHP开发调试环境
- Xamarin 跨移动端开发系列(01) -- 搭建环境、编译、调试、部署、运行
- Cordova 搭建IOS开发环境-console日志调试