您的位置:首页 > 运维架构 > Linux

Linux下gdb调试程序及举例

2016-07-09 11:21 776 查看
1、三大功能:①启动被调试程序

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

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

2、调试:

   <1>运用gcc调试时,在编译时用gcc -g demo.c -o demo将demo.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__,则会出现打印信息:

 


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

     所在地,而不用在代码中慢慢寻找
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: