1.使用命令:gcc demo.c -o app -g 生成app
2.gdb app
3.list命令,列出代码,后面可以使用l代替list
4.输入b + 行号,在对应的行号设置断点,b + 行号 if 。。。设置条件断点
5.info b 可以查看断点信息
(gdb) list 1 #include <stdio.h> 2 3 int add(int a,int b) 4 { 5 return a + b; 6 } 7 8 void main() 9 { 10 int i; (gdb) l 11 int sum[10] = {0}; 12 int arr1[10] = {11,22,33,44,55,66,77,88,99,100}; 13 int arr2[10] = {1,2,3,4,5,6,7,8,9,10}; 14 15 for ( i = 0; i < 10; i ++ ) 16 { 17 sum[i] = add(arr1[i],arr2[i]); 18 } 19 20 }(gdb) l Line number 21 out of range; demo1.c has 20 lines. (gdb) b 5 Breakpoint 1 at 0x400550: file demo1.c, line 5. (gdb) b 17 if i = 5 Breakpoint 2 at 0x40063a: file demo1.c, line 17. (gdb) info b Num Type Disp Enb Address What 1 breakpoint keep y 0x0000000000400550 in add at demo1.c:5 2 breakpoint keep y 0x000000000040063a in main at demo1.c:17 stop only if i = 5 (gdb)
6.可以取消断点 disable + 断点号,或delete + 断点号
7.命令run,让程序跑起来,在断点处停下
8.命令s,(step)单步执行,p + 变量名,打印变量的值
9.display + 变量名 ,每次都显示变量的值
10.ptype 变量名——查看变量类型11.bt 查看当前程序函数栈帧使用基本情况 函数的栈帧保存局部变量和临时值,形参,与局部变量等价。
12. info locals 查看当前栈帧上变量的存储值。
13.frame 栈帧编号查看变量的值
s——step
n——next 14. finish 终止当前函数 15.continue 结束当前断点调试 16. p *数组名@10 列出数组前10个元素值 p 数组名[n]@m 从下标n开始向后打印m个元素。