红联Linux门户
Linux帮助

Linux下C/C++程序调试基础(GCC,G++,GDB,CGDB,DDD)

发布时间:2015-11-18 10:32:20来源:linux网站作者:bendanban

在写程序的时候,经常会遇到一些问题,比如某些变量计算结果不是我们预期的那样,这时我们需要对程序进行调试。本文主要介绍调试C/C++在Linux操作系统下主要的调试工具。

在Linux下写程序,C/C++主要的编译器有GCC/G++,ICC等,像我等穷码农,最喜欢GCC了,很大原因是他免费!所以,我们以GCC/G++为例介绍主要的调试工具。


分以下几个内容介绍:

1、调试之前的工作

2、选择调试工具

3、调试步骤


调试之前的工作

编译器在编译阶段需要产生可供调试的代码,才能被调试器调试。可以如下做:

gcc -g -ggdb ./yourcode.c -o yourapp.exe 

这样编译代码可以产生供gdb调试的符号信息。


选择调试工具

gdb当时我们要使用的调试工具,不过他是命令行中使用的,多少有点不方便。

CGDB和DDD都是基于GDB开发的,他们只是增加了更加容易交互的界面。其中CGDB也是在命令行中使用的,使用方式与GDB一样,只是增加了代码显示的界面。

DDD也是GNU开发的,他也是基于GDB的,只是使用了可视化界面,比CGDB更加容易操作。

在有些情况下,我的Linux上可能没有装X-Sever,这样就没有图形显示功能,此时我们只能用命令行方式使用调试工具,所以gdb和cgdb应用更广泛些。一般我会使用CGDB,他的操作跟gdb完全类似,很容易上手。


调试

使用下面的命令启动程序。

cgdb ./youapp.exe 

注意,这里我们使用的是cgdb,如果你没有安装cgdb,首先应该安装它!ubuntu用户的安装方式如下:

sudo apt-get install cgdb 


启动软件后,常用的几个命令因该熟练掌握:

1、设置断点命令,程序在执行时遇到断点会停下来,执行停止后可以进行变量值的检查。

break [line_number] 

例如:break youcode.cpp:32,这个命令是说在youcode.cpp第32行代码处设置断点,程序运行至此时会停下来。
2、显示变量的值,程序在断点处停止时可以打印变量的值。

print [var] 

例如:print a,这句命令表示打印变量a的值。print也可以缩写成p。

3、单步执行,程序在断点处停止后,使用单步调试命令让程序一步步往下执行。使用next命令可以完成这个任务,可以缩写为n。

4、进入内部,在调试过程中,如果想进入某个函数的内部,则可使用step命令。

5、继续执行到下一个断点处。使用continue命令可以完成这个任务。

以上命令是gdb调试时常用的命令,也是应该必须掌握的命令。如果你想知道更多如何使用这些命令,使用help command查看相关的帮助。


几款好的C/C++编译器(编译器而非IDE):http://www.linuxdiyf.com/linux/14086.html

Linux下搭建C/C++开发环境(GTK):http://www.linuxdiyf.com/linux/11185.html

Linux中安装Eclipse进行C/C++开发:http://www.linuxdiyf.com/linux/10129.html