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

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

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

分以下几个内容介绍:

1、调试之前的工作

2、选择调试工具

3、调试步骤


调试之前的工作

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

[html]  view plain copy
  1. 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完全类似,很容易上手。


调试

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

[html]  view plain copy
  1. cgdb ./youapp.exe  

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

[html]  view plain copy
  1. sudo apt-get install cgdb  

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

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

[html]  view plain copy
  1. break [line_number]  

例如:break youcode.cpp:32,这个命令是说在youcode.cpp第32行代码处设置断点,程序运行至此时会停下来。


    2、显示变量的值,程序在断点处停止时可以打印变量的值。

[html]  view plain copy
  1. print [var]  

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


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


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


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


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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值