Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2445279
  • 博文数量: 328
  • 博客积分: 4302
  • 博客等级: 上校
  • 技术积分: 5486
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-01 11:14
个人简介

悲剧,绝对的悲剧,悲剧中的悲剧。

文章分类

全部博文(328)

文章存档

2017年(6)

2016年(18)

2015年(28)

2014年(73)

2013年(62)

2012年(58)

2011年(55)

2010年(28)

分类: C/C++

2012-09-25 17:32:25

编写代码过程中少不了调试。在windows下面,我们有visual studio工具。在linux下面呢,可以用GNU组织开发的一套C语言编译器(Gcc)和调试工具(Gdb)。在哟个gdb进行调试的过程中,有几点是需要注意的:
  1. Gdb进行调试的是可执行文件, 而不是".c"源文件, 因此, 需要先通过Gcc编译生成可执行文件才能用Gdb进行调试.
  2. 一定要加上选项"-g", 这样编译出的可执行代码中才包含调试信息, 否则Gdb无法载入该可执行文件.
  3. 不能使用 -O2选项对可执行文件进行优化, 因为优化之后可执行文件里的符号表信息将被删除, 这样Gdb就无法找到使可执行文件与源文件之间的关联了, 也就不能调试了.
首先生成可执行文件,输入命令之后,如果没有编译和链接方面的错误,你就可以看到 可执行文件test了。
  1. gcc test.c -g -o test

    调试的步骤基本如下所示,

(01) 首先,输入gdb test
(02) 进入到gdb的调试界面之后,输入list/l,即可看到test.c源文件
(03) 设置断点,输入 b main
          如果程序需要参数,就运行 run args <原来程序需要的参数>
          或者 r <原来程序需要的参数>

(04) 启动test程序,输入run/r
(05) 程序在main开始的地方设置了断点,所以程序之后断住
(06) 这时候,可以单步跟踪。s单步可以进入到函数,而n单步则越过函数
(07) 如果希望从断点处继续运行程序,输入c
(08) 希望程序运行到函数结束,输入finish
(09) 查看断点信息,输入 info break
(10) 如果希望查看堆栈信息,输入bt
(11) 希望查看内存,输入 x/64xh + 内存地址
(12) 删除断点,则输入delete break + 断点序号
(13) 希望查看函数局部变量的数值,可以输入print/p + 变量名
(14) 希望修改内存值,直接输入 print  + *地址 = 数值
(15) 希望实时打印变量的数值,可以输入display + 变量名
(16) 查看函数的汇编代码,输入 disassemble + 函数名
(17) 退出调试输入quit即可

阅读(2301) | 评论(0) | 转发(0) |
0

上一篇:GCC 参数详解

下一篇:设置Linux的swap分区

给主人留下些什么吧!~~