1.查看代码:l :依次显示十行代码
(gdb) l
1 #include <stdio.h>
2 #include <string.h>
3 int main()
4 {
5 char a[1000],b[1000];
6 int i,j,k,l,n;
7 for(i=0;;i++)
8 {
9
10 l=0;
2.设置断点 b +数字/函数名
(gdb) b 7
Breakpoint 1 at 0x11c7: file 5.8.c, line 7.
(gdb) break func
Breakpoint 2 at 0x8048456: file tst.c, line 5.
即在第七行设置断点 在func 函数处设置断点
(gdb) b 10
Breakpoint 2 at 0x11d1: file 5.8.c, line 10.
即可以设置多个断点
3. 查看断点 i b
(gdb) i b
Num Type Disp Enb Address What
1 breakpoint keep y 0x00000000000011c7 in main at 5.8.c:7
2 breakpoint keep y 0x00000000000011d1 in main at 5.8.c:10
可以看到我们刚才设置的两个断点
4. 使断点无效 disable +数字
(gdb) disable 1
再次使用i b 查看
(gdb) i b
Num Type Disp Enb Address What
1 breakpoint keep n 0x00000000000011c7 in main at 5.8.c:7
2 breakpoint keep y 0x00000000000011d1 in main at 5.8.c:10
我们看到,第一个断点显示n , 即第一个断点无效。
5. 使断点有效 : enable +数字,并查看断点
(gdb) enable 1
(gdb) i b
Num Type Disp Enb Address What
1 breakpoint keep y 0x00000000000011c7 in main at 5.8.c:7
2 breakpoint keep y 0x00000000000011d1 in main at 5.8.c:10
我们看出第一个断点重新显示y.
6.删除断点 d+数字
(gdb) d 1
(gdb) i b
Num Type Disp Enb Address What
2 breakpoint keep y 0x00000000000011d1 in main at 5.8.c:10
我们看到第一个断点直接消失。
7. 用r 运行代码
在设置完一个断点后,按r运行程序,直到该断点
(gdb) r
Starting program: /home/sss/learngit/a.out
Breakpoint 2, main () at 5.8.c:10
10 l=0;
直接运行到了第十行
8. 下一行操作 :n;
(gdb) n
11 while((a[l]=getchar())!='\n')
即到了第11行
继续按n 继续下一步操作
9. 查看某个变量的值: p 或 display
(gdb) p l 或display l
$1 = 1
这里的$1先不用关他,只知道在这里l的值是1 即可。
10. 给变量赋值 p 变量=数字
(gdb) p l=0
$2 = 0
这就成功的将0赋给l
11. 退出调试 :q
(gdb) q
A debugging session is active.
Inferior 1 [process 9525] will be killed.
Quit anyway? (y or n)
再输入y即可