Linux 下常用gdb的快捷键全

        所谓gdb,是Linux下一种常见的调试工具,在写一些简单的项目的时候还是很有益处的,但是如果项目较大,设计到很多进程之类的,不建议用gdb,而建议用printf函数来检测问题所在。使用gdb调试,需要在gcc编译时加上-g,例如gcc  file.c -g -o app.下面是gdb的一些常用的快捷键,仅供大家参考。

       (以下括号内均代表简称,若快捷键后面没有跟括号,则代表此快捷键暂无简称)

         help(h),    按模块列出命令行。

         list(l),     显示代码,查看当前代码。

         start,开始运行。

         run(r), 全速运行。

         next(n),下一步,此下一步是指逐过程的下一步,相当于vs里面的F10快捷键,调试时把一个函数当成一步。

         step(s), 下一步,此下一步是逐语句的下一步。相当于vs里面的F11快捷键,调试时进入函数一步一步调试,但是仅可以跳进自己写的函数里面,不能跳进c标准库函数                                里面,例如fopen函数等等。

          print(p),打印

         break(b)+行号/函数名,在gdb里分配的行号里设置断点,此行号不是你自己写的函数所对应的行号。

         info(i),查看gdb内部局部变量的数值。

         info  breakpoints, 显示断点。

         enable breakpoints,启用断点。

          disable breakpoints,禁用断点,一般都直接退出了,所以很少用。

          continue(c),继续,在断点前停下来。

         breaktrace(bt),显示函数调用的栈桢和层级关系,(回调函数里面观察的最为明显)。

         frame(f)+栈桢号(此栈桢号通过breaktrace得来),切换函数的栈桢。虽然此时切换了栈桢,但若此时执行下一步,仍然是原来栈桢执行的下一步,而不是切换后的下                                  一步。

          set  var n=100.设置变量的值。

          Ctrl+p,上翻命令。

          quit,结束gdb。

          finish,结束当前函数,返回到函数的调用点。

          display,设置观察变量,此后每次下一步都会显示设置的变量的值。

          watch,被设置观察点上的变量发生修改时,打印显示。

          info(i) watch, 显示观察点。

          undisplay+编号,取消观察变量。

           x,查看内存。

           core文件,可以看到程序断之前执行到哪儿了,进而找出出错的原因。但是Ubuntu里面默认的core文件大小为0,所以无法往里面写东西,如果想要打开它,只需要用 

                    ulimit -c  1024(给文件设置大小)开启core文件即可,调试时用gdb app core.

           在fork()中,既有父进程又有子进程时,用set follow_fork_mode child来跟踪子进程,用set follow_fork_mode parent来跟踪父进程,但是这种在多进程里面不是很好                    用,如果程序里面是一个死循环的话,可能会导致无法结束,这时只能用kill来杀死进程号可以解决。


          

           

       

         

        

        


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章