GeorgeTH 2011-08-17
有关调试的好处我想大家都不言自明了。本文章摘自原文,但加入了原文中没有说明的一些细节内容。
我的系统环境是:Ubuntu 9.10 + eclipse-cpp-galileo-SR1-linux-gtk.tar.gz + QEMU 0.11.0
有关系统环境我要交代一下。因为在ubuntu下找不到eclipse cdt的源,所以要先 apt-get 一个eclipse paltform然后在里面选择更新安装cdt才能安装成功。但在eclipse platform 里更新比较容易失败,所以我推荐大家安装openSUSE 11.0,在这里面只要到eclipse.org下载一个eclipse c/c++ ide ,直接解压便可运行。
文章开始!
1.首先我们要从www.kernel.org下载内核源码,在这里我选择的是 linux-2.6.28.tar.bz2。我将其下载到我的主目录下,然后在xterm下输入以下命令。
$ cd (回到主目录)
$ tar xf linux-2.6.28.tar.bz2 (解压源码)
$ mkdir linux-2.6.28-obj (创建一个编译内核的目标文件输出目录)
$ cd linux-2.6.28 (进入内核源码树根目录)
$ make O=/home/xxx/linux-2.6.28-obj menuconfig (这里我们要配置内核,并在~/linux-2.6.28-obj目录下生成内核配置文件.config) (注意:这里的xxx表示的是你的用户名)
注意在这里我们要选择kernel hacking 配置菜单下的
"Compile the kernel with debug info" 和 "Compile the kernel with frame pointers"
如下图:
2. 接下来我们打开elicpse,第一次打开时有一个欢迎画面,
我们单击右边的workbench图片关掉欢迎画面。由于eclipse cdt是一个非常强大的c/c++ ide,它默认会自动的解析工程中源程序并编译工程和产生智能提示信息。但由于我们调试内核过程中暂不会用到这些功能,所以要关闭他们。
首先我们到Window->Preferences->General->Workspace 中将Build Automatically选项去掉。
然后到Window->Preferences->C/C++ -> Indexer中,将默认的Fast c/c++ indexer改为No indexer。
然后我们开始创建一个新的工程。
从菜单中选择File -> New -> Project... -> C/C++ -> C Project 然后单击Next按钮。
这时出现一个对话框,在Project Name 一栏填入一个工程名,比如 linux-kernel. 然后将 Use default location 选项给勾掉。在Location一栏填入刚才解压的内核源码的路径。Project type选择Makefile project -> Empty project。Toolchains 选择 Linux GCC.最终结果如下图所示: