当前位置:   article > 正文

【Linux】调试工具 - gdb_gdb工具

gdb工具

目录

一、gdb概述:

二、list(查看源文件代码):

三、run(运行程序):

​四、断点相关操作:

1、查看断点:

2、在指定行设置断点:  

3、在函数入口处设置断点: 

4、删除断点

5、禁用断点 / 启用断点

五、逐过程调试 / 逐语句调试:

1、逐过程调试:

2、逐语句调试:

六、常显示 / 去除常显示 :

1、常显示:

2、去除常显示:

3、打印变量名:

七、跳转至指定行与退出gdb:

1、跳转至指定行:  

2、退出gdb:


一、gdb概述:

  • 程序在发布时会有两种版本:Debug版本和Release版本。
  • Debug版本和Release版本其实就是优化级别的区别
  • Debug称为调试版本,编译的结果通常包含有调试信息,没有做任何优化,方便开发人员进行调试。
  • Release称为发布版本,不会携带调试信息,同时编译器对代码进行了很多优化,使代码更小,速度更快,发布给用户使用,给用户使用以更好的体验。
  • 在我们申请内存时,Debug模式会多申请一部分空间,分布在内存块的前后,用于存放调试信息。
  • 在Release模式下,编译器会对代码进行很多的优化操作,所以Release模式比Debug模式花的时间也会更多

而在Linux下 gcc/g++ 下生成的二进制程序默认是Release版本。要想进行调试操作就得要在源代码生成二进制程序时加上 -g 选项,将其改为Debug模式。

在接下来使用gdb调试时以以下代码为样例进行演示:

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

二、list(查看源文件代码):

list 指令可以在命令行显示源文件对应的代码,一次显示十行,可以简写成l有两种用法:

1:l 行号  (从对应行号开始在命令行输出源文件代码,一次显示十行)

2:l 函数名   (在命令行中输出对应函数的源代码)

 

三、run(运行程序):

run指令可以直接运行程序,如果程序没有断点则将程序运行到结束

四、断点相关操作:

1、查看断点:

info break(可简写为:i b)查看断点:

 

2、在指定行设置断点:  

break 行号(可简写为:b 行号) 

例如:分别在14、15、16行处打一个断点 

3、在函数入口处设置断点: 

break 函数名(可简写为:b 函数名)

 例如:在函数Sum处打一个断点

4、删除断点

删除指定断点:delete Num(可简写为d Num)Num为断点的序号

删除全部断点:delete break(可简写为d break)

5、禁用断点 / 启用断点

禁用指定断点:disable Num      Num为断点的序号

 

启用指定断点:enable Num       Num为断点的序号

五、逐过程调试 / 逐语句调试:

1、逐过程调试:

step(可以简写为s) 

2、逐语句调试:

next(可以简写为n)

六、常显示 / 去除常显示 :

1、常显示:

display 变量名 / 地址       每次执行语句时都会在命令行中打印常显示变量的值

2、去除常显示:

undisplay 对应的编号

3、打印变量名:

p 变量名        在命令行中打印对应变量的值

七、跳转至指定行与退出gdb:

1、跳转至指定行:  

until 指定行

2、退出gdb:

quit(可简写为q)

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号