linux内核源码阅读工具eclipse qemu
更新时间:2024-04-12 20:18:01 阅读量: 综合文库 文档下载
- linux内核源码详解推荐度:
- 相关推荐
linux内核源码阅读工具eclipse + qemu
一 linux内核源码阅读工具windows下当然首选source insight, 但是linux下就没有source insight这么优秀的工具了,但是也有不少的替代品,但觉绝对部分人会选择vim+ctags+cscope的组合,还有部分人或选择wine中的 source insight或选择navigatror,当然对于代码阅读来说vim+ctags+cscope的组合还是比较好的一个选择方案,但是,当我使用了 eclipse之后,个人感觉用eclipse作为linux环境下源码阅读工具确实比vim+ctags+cscope的组合方便很多。下面是linux环境下eclipse的配置安装方案:eclipse下载地址:
http://eclipse.org/downloads/?osType=linuxeclipse环境配置方案:
http://forum.ubuntu.org.cn/viewtopic.php?t=183803二 eclipse + qemu 进行linux源码的编译和调试最初调试内核采用了qemu + insight 或qemu + ddd的组合,相比来说insgiht的界面更加有好些,但是ubuntu 10.04以上的版本,删除了对Insight的默认支持,只能下载insight的源码编译安装,而且insight更新非常慢。 很久以前就看到有人用eclipse + qemu进行linux内核源码的编译和调试,这次终于抽了个时间尝试一下,毕竟eclipse的debugger是非常强
大的。工具组合: Eclipse IDE for C/C++ Linux Developers + qemu-0.12.3 (最好用kvm, 不幸的是机器太旧,不支持硬件虚拟化) 1.首先我们要从www.kernel.org下载内核源码,在这里我选择的是 linux-2.6.32.tar.bz2。我将其下载到我的主目录下,然后在terminal下输入以下命令。$ cd (回到主目录)$ tar xf linux-2.6.32.tar.bz2 (解压源码)$ mkdir linux-2.6.32-obj (创建一个编译内核的目标文件输出目录)$ cd linux-2.6.32 (进入内核源码树根目录)$ make
O=~/linux-2.6.28-obj menuconfig (这里我们要配置内核,并在~/linux-2.6.32-obj目录下生成内核配置文
件.config)$ make mrproper 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.最终结果如下图所示: 然后单击Next按钮,出现下一个对话框。这时候因为工程的默认配置还不完全符合我们的要求。所以我们单击 Advanced Settings 按钮会打开一个工程配置对话框。我们选择左侧的 C/C++ Build 选项,在相应的右侧页面里我们将Builder Settings 选项页下的 Use default build command 勾选掉,然后指定一个新的Build command 为 make
O=/home/xxx/linux-2.6.28-obj.然后单击Build location中的File system…按钮更改obj文件的输出目录为
/home/xxx/linux-2.6.28-obj. 最终结果如下图所示:然后单击Behaviour选项页,将build(Incremental Build)中的all更改为一个空格,将下面的clean更改为mrproper(这是默认清除内核obj文件的命令目标)。弄好后如下图所示: 这个时候你就可以编译内核了。Ctrl + B 开始编译内核。 编译完内核。在/home/xxx/linux-2.6.32-obj/arch/x86/boot/下将生成一个bzImage的大内核镜像。此时我们在xterm下运行qemu虚拟机,命令行如下:$ qemu -s -S -hda ~/linux-0.2.img -kernel
/home/xxx/linux-2.6.32-obj/arch/x86/boot/bzImage -append root=/dev/hda我解释一下这个命令行上的参数。-s 选项表示我们运行虚拟机时将1234端口开启成调试端口,供eclipse网络调试时使用-S 选项表示我们启动虚拟机时要“冻住”虚拟机,等待调试器发出继续运行的命令。-hda ~/linux-0.2.img 表示我们要运行时的硬盘 (这个文件可以在http://wiki.qemu.org/Download下到)
-kernel /home/xxx/linux-2.6.32-obj/arch/x86/boot/bzImage 表示我们要调试的内核镜像-append root=/dev/hda 表示我们要传递给内核的参数(这里你可能感觉有点奇怪为啥是/dev/hda而不是/dev/hda1或是/dev/hda2呢?因为这个镜像仅仅是一个分区的二进制镜像,不是整个硬盘的镜像)启动后,你会看到屏幕黑黑的啥也没有。因为我们指定了-S参数把虚拟机给“冻”住了。继续回到eclipse中,这时候我们在菜单中选择Run -> Debug Configurations ,这时候打开一个配置页面。然后我们在C/C++ Application上双击鼠标,这时在右侧的页面弹出了debug配置选项,然后我们在project一栏选择 linux-kernel ,在下面的C/C++ Application中填入/home/xxx/linux-2.6.32-obj/vmlinux,如下图所示:然后我们单击Debugger选项页,将Debugger改为 GdbServer Debugger . 将Stop on startup at 改为start_kernel,将Connection子选项页下的Type改为TCP将
Port number改为1234,最终如下图所示:然后单击Debug按钮开始调试!这时候Eclipse会提示我们切换
Perspective ,选择是,不再提示。这时候就开始调试内核,而且是源码级的调试!如下图:
正在阅读:
linux内核源码阅读工具eclipse qemu04-12
台北市立永吉国中99学年度第1学期七年级童军科教学计画10-14
21.《曹刿论战》导学案(教师用)含答案11-26
新闻发布管理系统 - 毕业论文06-04
桩基检测工程技术内容与要求06-02
中国车牌号的识别汽车之家09-19
2015年电子技术复习题 (1)05-26
形容爱情甜蜜的词语02-21
半隐框(横隐竖明)设计说明模板05-25
早晨问候情人短信,让您的爱情更加甜蜜02-16
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 内核
- 源码
- eclipse
- 工具
- linux
- 阅读
- qemu
- 某工程创建AAA级安全文明标准化诚信工地申报材料(经验、具体做
- 财务工作者爱岗敬业先进事迹材料
- 党委书记郭华巍在2012年全校中层干部大会上的讲话
- 应用统计学复习思考题参考答案
- 天基板施工方案
- 外研版Book 2 Module 1 单选题
- 陕西省西安交大附中2018届高三第六次测试文综地理试题 - 图文
- 班组安全活动记录
- 盛泽东盛步行街招商策划报告
- 组态王日报表例程
- 武汉软件工程职业学院《计算机应用基础》A卷试题
- 南信大基础生态学 重点
- (0063)综合英语六复习思考题
- 2018年襄阳市中考英语试题、答案
- 初中音乐教师招考复习资料
- 2013年广东驾校一点通模拟考试题c1
- 体积和体积单位教案
- C++作业题与答案
- 普查表试填题--奇台县
- 第一篇 人力资源规划