赞
踩
目录
- 程序在发布时会有两种版本:Debug版本和Release版本。
- Debug版本和Release版本其实就是优化级别的区别
- Debug称为调试版本,编译的结果通常包含有调试信息,没有做任何优化,方便开发人员进行调试。
- Release称为发布版本,不会携带调试信息,同时编译器对代码进行了很多优化,使代码更小,速度更快,发布给用户使用,给用户使用以更好的体验。
- 在我们申请内存时,Debug模式会多申请一部分空间,分布在内存块的前后,用于存放调试信息。
- 在Release模式下,编译器会对代码进行很多的优化操作,所以Release模式比Debug模式花的时间也会更多。
而在Linux下 gcc/g++ 下生成的二进制程序默认是Release版本。要想进行调试操作就得要在源代码生成二进制程序时加上 -g 选项,将其改为Debug模式。
在接下来使用gdb调试时以以下代码为样例进行演示:
#include <stdio.h> int Sum(int n) { int i = 1, sum = 0; for (; i <= n; i++) { sum += i; } return sum; } int main() { printf("%d\n", Sum(100)); return 0; }
list 指令可以在命令行显示源文件对应的代码,一次显示十行,可以简写成l,有两种用法:
1:l 行号 (从对应行号开始在命令行输出源文件代码,一次显示十行)
2:l 函数名 (在命令行中输出对应函数的源代码)
run指令可以直接运行程序,如果程序没有断点则将程序运行到结束
info break(可简写为:i b)查看断点:
break 行号(可简写为:b 行号)
例如:分别在14、15、16行处打一个断点
break 函数名(可简写为:b 函数名)
例如:在函数Sum处打一个断点
删除指定断点:delete Num(可简写为d Num)Num为断点的序号
删除全部断点:delete break(可简写为d break)
禁用指定断点:disable Num Num为断点的序号
启用指定断点:enable Num Num为断点的序号
step(可以简写为s)
next(可以简写为n)
display 变量名 / 地址 每次执行语句时都会在命令行中打印常显示变量的值
undisplay 对应的编号
p 变量名 在命令行中打印对应变量的值
until 指定行
quit(可简写为q)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。