这篇文章主要介绍了Linux调试工具GDB使用简易教程,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
本文所述主要是Linux调试工具GDB的使用教程,具体如下。 声明:本博客内容是由本人经过实验楼教程整理得来。 GDB的相关概念
GDB, 是 The GNU Project Debugger 的缩写, 是 Linux 下功能全面的调试工具。GDB 支持断点、单步执行、打印变量、观察变量、查看寄存器、查看堆栈等调试手段。在 Linux 环境软件开发中,GDB 是主要的调试工具,用来调试 C 和 C++ 程序。 GDB的相关操作
下面给出一个具有buging.c的程序:
[yqtao@localhost linux]$ cat buging.c
#include <stdio.h>
int getSum(int n) {
int sum=0,i;
for (i=1;i<=n;i++)
sum+=i;
return sum;
}
int main(){
int res=getSum(100);
printf("1+2+...+100=%d\n",res);
}
// 查看源码
// 查看第几行附近
// 可简写成l 2
(gdb) list 2
1 #include <stdio.h>
2 int getSum(int n) {
3 int sum=0,i;
4 for (i=1;i<=n;i++)
5 sum+=i;
6 return sum;
7 }
// 查看main函数附近的源码
(gdb) list main
3 int sum=0,i;
4 for (i=1;i<=n;i++)
5 sum+=i;
6 return sum;
7 }
8 int main(){
9 int res=getSum(100);
10 printf("1+2+...+100=%d\n",res);
11 }
// 设置断点
// break +n在第几行设断点
(gdb) break 8
Breakpoint 1 at 0x4004fa: file buging.c, line 8.
// break +函数名 ,在函数名处设断点
(gdb) break getSum
Breakpoint 2 at 0x4004cb: file buging.c, line 3.
//查看断点信息
(gdb) info breakpoints
Num Type Disp Enb Address What
1 breakpoint keep y 0x00000000004004fa in main at buging.c:8
2 breakpoint keep y 0x00000000004004cb in getSum at buging.c:3
// 删除断点
// delete +n 或 d +n
// 如果不加数字则删除全部的断点
(gdb) d 2
(gdb) info breakpoints
Num Type Disp Enb Address What
1 breakpoint keep y 0x00000000004004fa in main at buging.c:8
// 进入gdb
[yqtao@localhost linux]$ gdb buging
// 在main()函数处设断点
(gdb) info breakpoints
// 运行程序
(gdb) run
Breakpoint 1, main () at buging.c:9
9 int res=getSum(100);
(gdb) step
getSum (n=100) at buging.c:4
4 for (i=1;i<=n;i++)
// 查看代码
(gdb) l
1 #include <stdio.h>
2 int getSum(int n) {
3 int sum=0,i;
4 for (i=1;i<=n;i++)
5 sum+=i;
6 return sum;
7 }
8 int main(){
9 int res=getSum(100);
10 printf("1+2+...+100=%d\n",res);
// 下一步
(gdb) s
5 sum+=i;
// 打印sum的值
// 看到sum是为赋初值的
(gdb) p sum
$1 = 4195633
// info locals
//打印当前断点处所在函数的所有局部变量的值,不包括函数参数。
(gdb) info locals
sum = 4195635
i = 3
其余的一些命令:
finish
执行程序到当前函数结束
continue
执行程序到下个断点
until
until N,执行程序到源代码的某一行 总结
以上就是本文关于Linux调试工具GDB使用简易教程的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
原文链接:http://blog.csdn.net/taoyanqi8932/article/details/53385022