用C++语言做Linux开发工具之编译器和调试器选择要素

系统 Linux
之前报道讲到了用C++语言做Linux开发工具编辑器的选择,今天我们继续看看用C++语言做Linux开发工具编译器和调试器选择要素

编译和调试往往成为编辑中重要的两点,所以对于编译器和调试器的选择就变得至关重要了,今天我们就告诉大家用C++语言做Linux开发工具之编译器和调试器选择要素,以便大家更效率的进行开发

编译器

用C++语言做Linux开发工具编译器首选GCC(GNU COMPILER COLLECTION)。原因有两个,它是GNU开源的,同时它对标准C++的支持度高达96.15%。而VC++6.0的支持度只有83.43%。 GCC不仅是通常意义上的C或C++的编译器,它还可以编译java等其它语言。gcc是gnu c的编译器,g++是gnu c++的编译器, 而EGCS(Enhanced GNU Compiler Suite)可以认为是gcc的改进版。

编译语言从源程序到目标代码会经过如下几个阶段:源程序->汇编程序->编译成obj程序->链接成最终可执行程序。我们可以通过一条编译指令来完成所有步骤。也可以分步执行。gcc有三个重要选项-E(只进行预处理), -S(生成汇编代码), -g(生成带原代码调试符号的可执行文件,如果想用gdb调试的话,就应该在编译时打开这个选项)。

用C++语言做Linux开发工具GCC可以看作一个软件包,除了编译工具,它还集成了调试器gdb,性能分析工具gcov, gprof。只要我们装好了GCC,这些强大工具就可以直接使用了。

通过gcov,我们可以查看一个程序,源代码中每行代码的运行次数。我们优化运行次数最多的代码,那么就可以大大优化程序。使用gcov时,需要打开 GCC的fprofile-arcs和ftest-coverage两个选项。gcov中常用的选项有-b分支统计信息。

通过gprof工具,我们可以查看函数之间的调用顺序,及各个函数运行的时间。我们可以将gprof理解为linux/unix自带工具time的加强版。使用gprof时,需要打开GCC的pg选项。

gcov和 gprof的共同点是在编译程序时,加入自己的一些辅助信息,由此来进行程序诊断。除了,这些优化手段,我们还可以使用一些内存泄漏工具,来减少野指针,未释放的内存空间。

调试器

用C++语言做Linux开发工具GDB即GNU的调试器,它是GCC附带的一个性能优质的调试器。通过GDB和脚本结合,我们可以很好的实现回归测试。

用C++语言做Linux开发工具GDB可以运行于CLI和GUI两种模式。默认GDB是CLI模式的,我们可以去下载和安装GUI模式的GDB,例如xxgdb, ddd等。一个更好的方式是在 EMACS中使用GDB。GDB包括visual studio工具的所有调试功能,还包括它没有的功能。它除了支持,我们一般的设置断点,单步跟踪,step in, step out, step over等,还有一些强大的功能。在gdb中,我们可以有以下几种暂停方式:断点(BreakPoint)、观察点(WatchPoint)、捕捉点(CatchPoint)、信号(Signals)、线程停止(Thread Stops)。

下面列举几个让我印象深刻的功能。1)通过 watch指令,可以让程序在某个变量的值发生变化时,暂停下来。2)通过print指令,在程序运行时,设置变量的值,运行一个程序自身支持的一个方法。3)通过until指令,我们可以让程序在运行到某个程序时暂停下来。4)通过break.. if指令,使得程序在满足某个bool表达式时,暂停下来。

【编辑推荐】

  1. Novell裁掉部分openSUSE Linux开发者
  2. 腾讯Linux QQ团队现招聘:Linux开发与测试工程师
  3. IBM呼吁Linux开发者勿模仿Windows用户界面
  4. 开源大师齐聚京城 Linux开发者研讨会开幕
  5. 国际Linux开发者盛会在中国召开
     
责任编辑:chenqingxiang
相关推荐

2010-05-28 13:53:41

Linux开发工具

2010-05-28 14:34:17

Linux开发工具

2010-12-21 10:16:53

2010-05-28 14:44:42

Linux开发工具

2010-05-28 14:55:17

Linux编程工具

2010-06-04 17:37:45

Linux编程工具

2013-12-02 09:34:58

工具火狐Web

2010-01-18 10:34:21

C++编译器

2010-01-21 09:11:38

C++编译器

2023-08-22 08:00:00

编译器开发RustOCaml

2010-01-18 10:28:15

C++编译器

2010-05-28 15:34:14

Linux编程工具

2010-10-20 13:43:37

C++编译器

2014-03-03 10:00:53

编译器集成开发环境

2010-02-03 13:14:03

C++编译器命令

2010-01-14 15:29:44

C++编译器

2023-11-13 22:03:34

IDEC语言编译器

2010-01-12 16:42:59

C++编译器

2010-01-27 13:53:40

强大的CC++编译器

2020-03-16 10:05:13

EmacsGUDLinux
点赞
收藏

51CTO技术栈公众号