gdb调试
Posted 狂奔~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gdb调试相关的知识,希望对你有一定的参考价值。
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 查看当前程序函数栈帧使用基本情况
11.bt 查看当前程序函数栈帧使用基本情况
函数的栈帧保存局部变量和临时值,形参,与局部变量等价。
12. info locals 查看当前栈帧上变量的存储值。
13.frame 栈帧编号查看变量的值
s——step
n——next
12. info locals 查看当前栈帧上变量的存储值。
13.frame 栈帧编号查看变量的值
s——step
n——next
14. finish 终止当前函数
15.continue 结束当前断点调试
16.
p *数组名@10 列出数组前10个元素值
p 数组名[n]@m 从下标n开始向后打印m个元素。
以上是关于gdb调试的主要内容,如果未能解决你的问题,请参考以下文章