在 Linux PPC 上使用 Eclipse CDT 开发 C\C++ 程序

引言

Linux 是一个成熟的操作系统,Linux 上大多操作都基于命令行格式,随着 Linux 的快速发展,很多版本的 Linux 平台都提供了可视化操作界面以方便用户进行简单、快捷的操作,对于 Linux 平台上最常用的 C 语言,可视化界面使用户编译执行 C/C++ 程序也更加直观、方便、快捷。

PowerPC 是一种 精简指令集RISC)架构的 中央处理器CPU),其基本的设计源自 IBM 的 POWER(Performance Optimized With Enhanced RISC;《 IBM Connect 电子报》 2007 年 8 月号译为“增强 RISC 性能优化”)架构。1990 年,IBM、Apple 和 Motorola 开发 PowerPC 芯片成功,并制造出基于 PowerPC 的多处理器计算机。PowerPC 架构的特点是可伸缩性好、方便灵活。PowerPC 与其他处理器相比,其体系结构相对开放 ,Linux 一直以来都是公开其所有源代码,两个开放的系统最终走到一起,是自然的选择,这也就有了 Linux PPC。

作为一个软件产品测试人员,在工作中常常会接触到各种不同的操作系统平台,以覆盖不同用户群体的实际需求,目前国内外基于奔腾处理器的 Linux 平台是使用的较为频繁的,但是基于 PowerPC 处理器的 Linux 使用相对较少。对于最常见的 Linux x86 平台,通常都是去 eclipse 官方网站下载 Eclipse IDE for C/C++ 开发包来对 C 语言编写的测试脚本实现可视化的编译执行,但是,对于某些操作系统,比如:Linux PPC,Eclipse 官方网站并没有直接提供可用的集成开发包,而且安装此平台的机器很多都是 LAB 里面的实验机,并没有连接外部 Internet 网络,所以,利用 Eclipse 插件在线安装的方法也是行不通的,为此,我们需要下载相应的针对 Linux PPC 平台的 Eclipse 版本以及插件 CDT 进行安装配置才能建立测试环境里需要的 C/C++ 可视化编译环境。

本文主要介绍在 Linux PPC 平台上安装和配置 Eclipse 和 CDT,Linux 平台上 Eclipse 的编辑环境,调试运行环境,着重介绍如何使用 Eclipse 来快速,简便,准确地调试 C/C++ 程序,包括对程序的单步执行,断点用法,局部、全局变量实时监控,子函数执行监控,错误以及警告信息实时显示等等内容。利用 Eclipse 强大编辑以及调试功能,可以使用户花很短的时间完成 C/C++ 程序设计,为 Linux 平台上 C/C++ 编程用户提供更加人性化的设计环境;在文章的最后,我们会介绍最新发布的代号为 Helios(太阳神)的 Eclipse 3.6 在 CDT 上的新特性。


Eclipse CDT 安装功略

安装前准备

安装之前需要准备几个重要的组件:

  1. JRE(Java Runtime Environment)

由于 Eclipse 本身是用 Java 开发的,所以使用 Eclipse,肯定就需要安装 JRE 环境了,一般 Linux 环境中都会有安装好的 JRE 环境,可以 check 一下,万一没有,那么就需要下载一个装上,下载地址如下:

(http://www.oracle.com/technetwork/java/javase/downloads/index.html)

  1. Eclipse
    在安装 CDT 插件之前,选择一个 Eclipse 进行安装是必不可少的步骤,选择 Eclipse version 3.2,可以从 [http://www.eclipse.org] 下载 Eclipse 安装包。
  2. CDT

CDT 是 Eclipse 提供的一个插件,用它能生成 C/C++ 的编译和执行环境,CDT 的版本也有很多,要下载与 Eclipse 相匹配的 CDT,比如安装 eclipse 3.2 以上的版本,就需要安装 CDT 3.1 以上的版本。

安装 JRE

大多数 Linux 环境中都安装了 JRE,在拿到机器以后,我们可以检查一下机器的环境,确保 JRE 的正确运转,检查过程如图 1 所示:


图 1. JRE 下载及安装
图 1. JRE 下载及安装

安装 Eclipse(在 Linux PPC suse10 环境)

到指定网站下载 Eclipse 安装压缩包(注意:Linux 平台上的包也分好几种,一定要根据本身系统的类型下载相应的安装包) :eclipse-SDK-3.2.1-linux-gtk-ppc.tar.gz 建立一个工作目录,并将 Eclipse 安装包进行解压缩,将产生一个新的目录 eclipse. 如图 2 所示 :


图 2. Eclipse PPC 安装包
图 2. Eclipse PPC 安装包

进入 eclipse 目录,可以看到安装的详细内容,如图 3 所示:


图 3. Eclipse PPC 安装解压包
图 3. Eclipse PPC 安装解压包

安装 CDT

  1. 下载匹配于 Eclipse 3.2.1 的 CDT 压缩软件包,下载地址在:http://www.eclipse.org/downloads/download.php?file=/tools/cdt/releases/callisto/dist/3.1.1/。
  2. 将下载的压缩包解压:tar – zxvf org.eclipse.cdt-3.1.1-linux.ppc.tar.gz,解压后的文件会自动存在 eclipse 的安装子目录 plugins 下面,如图 4 所示:


图 4. CDT 解压包
图 4. CDT 解压包

  1. 完成解压缩后,还需要将 cdt 文件拷贝到 /usr/local/eclipse/plugins/ 目录下,才能完成 cdt 的安装。

Eclipse CDT 编辑环境

Eclipse CDT 提供了多功能的编辑器,可以方便用户编写 C/C++ 程序,提供了语法高亮显示、语法即时检测、错误以及警告信息注释、doc 查询、变量检查、模块检查、源码折叠等一系列功能,对于在 Linux 平台上编写程序的工程师,书写 C/C++ 程序是一件很麻烦的事情,我们都希望有这么一个利器,能方便快捷地处理这些工作,很幸运,Eclipse CDT 帮我们实现了这一切。

安装好 Eclipse CDT 以后,可以通过 VNC 来进入其图形化操作界面,为此,我们先在 Linux 机器上启动一个 VNC 的 session,如下图 5 所示:


图 5. 启动 vnc
图 5. 启动 vnc

然后,我们可以在本地 windows 机器上通过 VNC 客户端登陆 Linux 机器,并通过 eclipse 可执行程序打开 Eclipse 编辑环境,如图 6 所示:


图 6. Eclipse 编辑环境
图 6. Eclipse 编辑环境

第一次登陆 eclipse 的时候,会要求输入一个目录作为工作空间,我们可以在 Linux 机器上找一个空间充足的目录作为日后的工作空间(workspace)。


配置 C/C++ 程序运行调试环境

创建工程、文件

  1. 创建一个新工程(也可以在一个已存在的工程中加入你自己的工程)
  2. 在菜单‘ File ’中选择 New ‘ Project ’。

从弹出的列表中选择‘ Managed Make C Project ’(若选择 Managed Make C Project,Eclipse CDT 编译环境会自动为我们建立 make file,若选择 Standard Make C Project,则必须程序员自己写 make file;如图 7 所示:


图 7. 选择编译方式
图 7. 选择编译方式

4. 选择‘ Next ’

5. 在弹出的面板中,输入 Project Name,该工程会放在之前建立的工作空间 (workspace) 目录内。如图 8 所示:


图 8. 工程创建对话框
图 8. 工程创建对话框

6 .选择‘ Next ’,接下来选择项目类型,我们选择默认的可执行即可。如图 9 所示:


图 9. 配置模式选择
图 9. 配置模式选择

7 .单击‘ Finish ’完成当前工作,一个名为 test 的工程就建立了。

接下来,我们可以建立一个 C\C++ 的源程序:

(1). 在菜单'File' 里面选择 NewSource file,在弹出的对话框中输入 C 源程序文件名,如图 10 所示:


图 10. 输入编译源文件
图 10. 输入编译源文件

(2).单击'Finish'完成文件建立工作。

(3).在弹出的对话框里,我们可以编辑 c 程序了,如图 11 所示:


图 11. 程序编辑界面
图 11. 程序编辑界面

配置运行调试对话框

首先,对于要运行调试的工程文件,在 eclipse 主界面上选择菜单‘ Run ‘,并在弹出下拉框中选择’ Debug ’,再修改如下配置(选择工程文件),如图 12 所示:


图 12. 选择工程文件
图 12. 选择工程文件

对于需要添加 Program Argument 的程序,我们可以为新建项目增加 Argument,CDT 插件也提供了这方面的接口,打开 Debug 对话框,并在项目中 argv items in “(x)= Arguments” 添加相应的 Argument。如图 13 所示:


图 13. 选择工程文件
图 13. 选择工程文件


CDT 调试运行过程

任何程序的调试与运行都是密不可分的,从程序工程师的角度来看,一个程序从编写完毕到最后成功完成,都是一个运行、修改、调试、再运行、再修改、再调试。。。的过程。Eclipse CDT 提供了完整的调试运行环境。

CDT 运行程序

对于选中的工程文件,在 Eclipse 主界面上选择菜单‘ Run ‘,并在弹出下拉框中选择’ Run ’,如图 14 所示:红线框住的区域表示程序的整个运行过程和结果都可以看到。


图 14. EPIC 运行程序界面
图 14. EPIC 运行程序界面

Eclipse CDT 调试程序(俗称‘ Debug ’程序)

相比较运行程序而言,这一过程显得复杂得多,这也是这篇文件的精髓所在,前面都是为这一步在做必要地铺垫。对于程序员而言,调试程序是不可避免的,通常将要调试的线程挂起,然后利用单步执行方式来实现对整个程序的一行一行代码地执行,同时,观察每一步运行的结果,以及掌握运行过程中变量的变化情况。

Eclipse CDT 提供了多种调试操作功能以方便用户实现在编程中的切实需求,包括单步执行、跳入子函数、跳出子函数、断点设置、断点取消、直接执行语句段直至断点位置等等。

  1. Step Over– 单步执行函数、循环 loop、或执行其他普通语句。正待执行的代码行在 EPIC 编辑器中会被高亮显示出来,此时,线程处于挂起状态,在 Debug 视图工具条中按下这个功能图标 ()(相应的快捷键是‘ F6 ’)后,该行语句将被执行,完毕后,将自动跳转到下一行待执行语句,并使其呈高亮显示状态,该线程继续挂起等待下一步指令。
  2. Step Into– 可以执行进入函数、循环 loop、或执行其他普通语句。在 Debug 视图工具条中按下这个功能图标 ()(相应的快捷键是‘ F5 ’),该功能类同上述‘ Step Over ’,不同之处在与:如果该语句中含有子函数,循环等结构,‘ Step Over ’是直接后台执行完这些子函数或是循环,并返回结果。但是‘ Step Into ’却会按执行栈的顺序执行方式,依次跳入子函数或循环提供单步执行的功能。
  3. Step Return– 这一功能是针对执行过程已经进入子函数后,可以从当前代码行开始直接后台执行完该子函数剩余代码并返回,不用再单步执行该子函数。在 Debug 视图工具条中按下这个功能图标 ()(相应的快捷键是‘ F7 ’)。

在主界面中选择菜单‘ Run ‘ -> ’ Debug ’ , 就进入程序调试状态了,我们可以选择调试操作方式,包括单步执行、跳到最近的下一个断点再执行,跳入子函数等等,针对这些操作过程中,对于工程师来说,始终关注的都是整个程序的运转情况以及掌握每一步执行操作完成后相关变量的变化情况,为此,我们有必要介绍一些视图,利用这些视图,我们可以更好的掌握程序的调试状况,以利于下一步操作。

首先,进入调试界面接口,可以在主界面中选择:Window-> Show View ->Debug,在弹出来的视图里,可以管理在工作区的正在被调试或是运行程序,它显示了一个工程框架、工作过程中的程序运行状况等等。如图 15 所示:


图 15. CDT 调试窗口
图 15. CDT 调试窗口

变量视图能够显示程序在运行过程中的变量的值以及其实时变化情况,这一功能对于调试工作来说是尤为重要的,变量是程序的‘血液‘,程序代码就是通过变量来连接的,掌握变量的情况,就是掌握整个程序的运行状况。

在变量视图里面,可以看到变量栈的框架结构,它显示变量的原始状态,包括结构体变量、哈希变量、list 变量或是对象等等。

如图 16 所示:


图 16. 变量显示窗口
图 16. 变量显示窗口

断点视图可以显示该程序文件中所有的断点、它们的状态以及位置。在这个视图里,可以通过选择一个或断点,并激活对应断点的程序文本框,来设定、使之无效或是取消断点。如图 17 所示:


图 17. 断点视图
图 17. 断点视图


总结

综上所述,我们已经看到了一个 Linux 平台上集编辑、编译、调试 C/C++ 程序为一体的图形化的工具,它解决了若干年来一直困扰着 Linux 程序员的对于在 Linux 平台上调试运行 C/C++ 语言程序很麻烦的问题,它简洁明了、功能强大的编辑环境也给 C/C++ 语言编程者带来了另外一种享受。最重要的是获取这一切,您都采取的是免费的方式,因为所有的组件都是开源的,所以这是一款非常值得推荐的软件工具。2010 年 6 月 23 日,代号为太阳神的 Eclipse 3.6 正式发布,该版本同步更新的项目将有 39 个,其中就包括对 CDT 的更新,太阳神中包括的 CDT 项目改善了调试(Debug)支持,首先,新的 DSF/GDB 调试接口与现有的 CDI/GDB 接口基本相当,此外,引进了新的 Eclipse C/C++ 调试器(EDC)可选组件,为 Windows 和 Linux 操作系统 API 提供了直接的调试器接口,更为重要的是,引入了新的 Codan 静态分析框架,在编译前提供语义分析错误报告。

<!-- CMA ID: 580195 --><!-- Site ID: 10 --><!-- XSLT stylesheet used to transform this file: dw-article-6.0-beta.xsl -->

参考资料

转自:http://www.ibm.com/developerworks/cn/linux/l-cn-ecl-cdt/index.html?ca=drs-

猜你喜欢

转载自lengjing.iteye.com/blog/910583