Linux的调试工具 - gdb(超详细)

Linux的调试工具 - gdb

  • 1. 背景
  • 2. 开始使用
    • 指令的使用都用下面这个C语言简单小代码来进行演示:
    • 1. list或l 行号:显示文件源代码,接着上次的位置往下列,每次列10行。
    • 2. list或l 函数名:列出某个函数的源代码。
    • 3. r或run: 运行程序。
    • 4. break或b 行号:在某一行设置断点
    • 5. n或next:单条执行(类似vs中的F10)
    • 6. s或step:进入函数调用(类似vs中的F11)
    • 7. break 函数名:在某个函数开头设置断点
    • 8. info break或info b:查看断点信息。
    • 9. finish:执行到当前函数返回,然后挺下来等待命令
    • 10. p 变量:打印变量值。
    • 11. continue或c:从当前位置开始连续而非单步执行程序
    • 12. run或r:从开始连续而非单步执行程序
    • 13. delete breakpoints:删除所有断点
    • 14. delete breakpoints n:删除序号为n的断点
    • 15. disable breakpoints:禁用断点
    • 16. enable breakpoints:启用断点
    • 17. display 变量名:跟踪查看一个变量,每次停下来都显示它的值
    • 18. undisplay:取消对先前设置的那些变量的跟踪
    • 19. until X(行号):跳至X行
    • 20. breaktrace或bt:查看各级函数调用及参数
    • 21. q或quit:退出gdb

1. 背景

  • 程序的发布方式有两种,debug模式和release模式
  • Linux gcc/g++出来的二进制程序,默认是release模式
  • 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项,发布成debug模式
    Linux的调试工具 - gdb(超详细)_第1张图片

2. 开始使用

指令的使用都用下面这个C语言简单小代码来进行演示:

  1 #include <stdio.h>
  2 
  3 int SumAdd(int x)
  4 {
  5     int i=1;
  6     int sum=0;
  7     for(i=1;i<=x;i++)
  8     {
  9         sum+=i;
 10     }
 11     return sum;
 12 }
 13 
 14 int main()
 15 {
 16     printf("%d \n",SumAdd(100));
 17     return 0;
 18 }            

1. list或l 行号:显示文件源代码,接着上次的位置往下列,每次列10行。

例:l 0

Linux的调试工具 - gdb(超详细)_第2张图片


2. list或l 函数名:列出某个函数的源代码。

例:l SumAdd

Linux的调试工具 - gdb(超详细)_第3张图片


3. r或run: 运行程序。

注: 如果没有断点,程序将运行到底

例:r

Linux的调试工具 - gdb(超详细)_第4张图片


4. break或b 行号:在某一行设置断点

例:b 3

在这里插入图片描述


5. n或next:单条执行(类似vs中的F10)

注: 单条执行需要在调试启动的情况下进行,需要先打断点,然后r执行到断点位置

例:n

Linux的调试工具 - gdb(超详细)_第5张图片


6. s或step:进入函数调用(类似vs中的F11)

例:s

Linux的调试工具 - gdb(超详细)_第6张图片


7. break 函数名:在某个函数开头设置断点

例:break SumAdd

Linux的调试工具 - gdb(超详细)_第7张图片


8. info break或info b:查看断点信息。

例:info b

Linux的调试工具 - gdb(超详细)_第8张图片


9. finish:执行到当前函数返回,然后挺下来等待命令

例:finish

Linux的调试工具 - gdb(超详细)_第9张图片


10. p 变量:打印变量值。

例:p sum

Linux的调试工具 - gdb(超详细)_第10张图片


11. continue或c:从当前位置开始连续而非单步执行程序

例:c

Linux的调试工具 - gdb(超详细)_第11张图片


12. run或r:从开始连续而非单步执行程序

r

Linux的调试工具 - gdb(超详细)_第12张图片

13. delete breakpoints:删除所有断点

例;delete breakpoints

Linux的调试工具 - gdb(超详细)_第13张图片


14. delete breakpoints n:删除序号为n的断点

delete breakpoints 5

Linux的调试工具 - gdb(超详细)_第14张图片


15. disable breakpoints:禁用断点

例:disable breakpoints

Linux的调试工具 - gdb(超详细)_第15张图片


16. enable breakpoints:启用断点

例:enable breakpoints

Linux的调试工具 - gdb(超详细)_第16张图片


17. display 变量名:跟踪查看一个变量,每次停下来都显示它的值

例:display sum

Linux的调试工具 - gdb(超详细)_第17张图片


18. undisplay:取消对先前设置的那些变量的跟踪

例:undisplay

Linux的调试工具 - gdb(超详细)_第18张图片


19. until X(行号):跳至X行

例:until 11

Linux的调试工具 - gdb(超详细)_第19张图片


20. breaktrace或bt:查看各级函数调用及参数

例:bt

Linux的调试工具 - gdb(超详细)_第20张图片


21. q或quit:退出gdb

例:q

Linux的调试工具 - gdb(超详细)_第21张图片

(本章完)

你可能感兴趣的:(linux,运维,服务器)