Linux下gdb调试程序及举例

1、三大功能:①启动被调试程序

                          ②让被调试的程序在指定位置停止

                          ③当程序被停止时,可以检查程序中所发生的事

2、调试:

   <1>运用gcc调试时,在编译时用gcc -g demo.c -o demodemo.c生成demo文件

       

   <2>调出demo程序:gdb demo

 

   <3>运行:(gdb) run 如果有段错误,则在有段错误的那一行

 

   <4>查看代码:(gdb) list 代码显示不全,只会显示10行,若要继续看,则需要再次运行

 

   <5>设置断点:(gdb) break 20 表示在第20行设置一断点,代码运行停止在第20

 

                (gdb)break 20 if i=10 表示当i=10时,代码运行停在第20

 

                (gdb) break add_sum 表示在调用add_sum 函数时停止

      在断点情况下:

          (gdb)run 表示执行并且停止在断点处

          (gdb)continue表示执行断点之后的代码,并且在遇到下一个断点时停止

          (gdb) finish 表示执行完当前函数

          (gdb)next 表示一步步执行代码,但是不会进入函数

          (gdb)step表示单步执行函数,但是会进入函数

          (gdb)printf i表示查看变量i的值

 

          (gdb)info break 表示查看断点

 

          (gdb)delete 1 表示清除断点1

 

          (gdb) q退出gdb调试        

3、补充:

   在外部补充头文件中:#define debug_msg(fms,args...)  printf(fmt,##args)表示将所有的

   debug_msg替换成printf    (此项功能运用于调试,如软件额内部测试版和发行版)

 

   在编译时,可以在程序外部用-D定义加入一个宏__DEBUG__

   举例:编写一个简单的打印程序


在编译时,不加__DEBUG__编译,则不会出现调试信息ABC

 

在编译时,外部定义加入一个宏__DEBUG__,则会出现打印信息:

 

作用:如果程序出现错误,在运行调试信息时,程序只会打印到错误处,可以直接找出错误

     所在地,而不用在代码中慢慢寻找

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值