GDB调式工具学习笔记---单步执行和跟踪函数调用
简介
在使用图形化ide进行程序开发时,通常编辑工具都会自带调试功能,可以打断点,一步一步的执行代码并随时查看每个变量的实时数值,但是在进行c和c++开发时,常常是在linux系统下进行,并且是通过vim或vi编辑器,没有图形化的界面,这是gdb调试工具就会派上了用场,它提供了我们日常调试程序时需要的大多功能,本篇文章是作者在阅读《Linux C编程:一站式学习》一书中关于GDB工具使用这一章节的学习笔记。
1.单步执行和跟踪函数调用
1.1 示例程序
首先阅读以下代码,该代码的主要功能是实现数的累加
#include <stdio.h>
int add_range(int low, int hight)
{
int i, sum;
for(i = low; i <= hight; i++)
{
sum += i;
}
return sum;
}
int main()
{
int res1, res2;
res1 = add_range(1, 10);
res2 = add_range(1, 100);
printf("res1 = %d, res2 = %d\n", res, res2);
return 0;
}
以下是书中给出的运行结果
res1 = 55, res2 = 5105
但是,有意思的是,作者亲自运行之后,发现并没有出现原书作者给出的输出结果,作者也知道不会出现,因为变量sum定义之后,没有初始化,书中的结果可能是作者为了将gdb调试专门设置的输出结果吧,不妨碍学习。以下是作者运行程序输出结果
zz@ubuntu:~/Project/gdb_study$ ./demo1
res1 = 21911, res2 = 26961
zz@ubuntu:~/Project/gdb_study$ ./demo1
res1 = 22009, res2 = 27059
zz@ubuntu:~/Project/gdb_study$ ./demo1
res1 = 22012, res2 = 27062
zz@ubuntu:~/Project/gdb_study$ ./demo1
res1 = 22051, res2 = 27101
zz@ubuntu:~/Project/gdb_study$ ./demo1
res1 = 22155, res2