《Ubuntu下使用Eclipse+CDT+UML调试linux内核》.pdf
文本预览下载声明
Ubuntu 下使用Eclipse+CDT+UML 调试linux 内核
本文介绍在Ubuntu 下使用eclipse+cdt+uml 进行linux 内核调试的方法,
所谓UML 并非是指Unified Modeling Language,而是User Mode Linux ,是将kernel 作为
process 在linux 系统中运行的技术,该技术目前已经集成进linux 的版本中了,使用uml 可
以方便的进行kernel 的调试,再结合eclipse 一定的设置则可以进行源码级的debug 。
首先,到 中下载一个linux 版本,本文使用的是linux-3.3.8 版本,然后
解压缩,在根目录下运行如下命令:
make ARCH=um defconfig
make ARCH=um menuconfig
make ARCH=um
注意,在执行make ARCH=um menuconfig 时要在”Kernel hacking”中选择“Compile the kernel
with debug info”和“Compile the kernel with frame pointers”,如下图:
这样编译完成后,会在根目录下生成一个linux 文件,然后运行如下命令:
gdb ./linux
就可以进行gdb 的调试了,由于此时没有挂接文件系统,所以run 之后会出现crash,因此
还要执行如下命令:
gdb ./linux udb0=root_fs
上面的root_fs 是指linux 的根文件系统,可以使用dd 进行手工制作,也可以使用网上现成
做好的,可以到(.uk/ )这里去根据需要下载,但是即使如此,在gdb 的
时候进行run 还是会出现root 的挂载失败情况,请看下图,尝试了很多方法都不行,具体原
因不知,不知道哪位大虾能找到解决方法。
其次,虽然存在上面的问题,也还是已经可以断点到start_kernel 处跟踪调试代码
的,使用gdb 的效果如下:
按l 键就可以显示当前代码,b 下断点,n (step over)单步调试,s (step into)
单步调试,具体的调试技巧可以到网上找下gdb 的命令说明。
再者,由于使用gdb 调试需要手动输入命令,而且代码的整体浏览对应也
不方便,因此研究了下eclipse+cdt 的功能,发现可以使用eclipse+cdt 来进行
编译和调试,操作用步骤如下:
a、安装eclipse+cdt,可以使用sudo apt-get install eclipse,然后下
载cdt 插件将里面的features 和plugins 的东西copy 到eclipse 对应的文件夹
内即可,但是由于在本机遇到插件无法使用的情况,所以最后选择到eclipse
的官方网站直接下载了clipse Classic 4.2,下载地址是:
/downloads/,解压缩,然后下载cdt,在此选择了cdt
8.0.2,也可以选择最新的cdt 8.1.0,下载地址是:
/cdt/downloads.php ,将cdt 中的feature 和plugins 文件夹的
内容完全拷贝到eclipse 对应的文件夹内,这样就可以使用了,不过使用的前提
是有安装过jdk ;
b 、使用eclipse 配置linux 工程,打开eclipse,点击file-New-Project, 出现
如下图:
选择C Project,点击Next ;
紧接着出现C Project 对话框,输入Project name-可以自己命名,
Location-linux 工程的根目录,Project Type-选择Empty Project 即可,Toolchains
选择Linux GCC ,接着Next ;
选择Adanced settings ,
点击“C/C++ Build”,Build command ,由于要输入带有参数的make 命令,
因此编写了一个脚本在工程目录下,名为makefile.sh ,,makefile.sh 脚本内容如
下:
*********************下面内容是脚本内容*********************
#!/bin/sh
cd ~/TEMP/linux-kernel-3.3.8 #该项请根据实际工程设置路径
make ARCH=um
exit 0
*********************上面内容是脚本内容****
显示全部