linux c 小程序 gdb调试命令 例子
2012-10-09 14:56
337 查看
1:调试函数的一系列命令,源代码如下main.c
#include <stdio.h>
int add_range(int low, int high)
{
int i,sum;
for(i=low;i<=high;i++)
sum=sum+i;
return sum;
}
int main(void)
{
int result[100];
result[0]=add_range(1,10);
result[1]=add_range(1,100);
printf("result[0]=%d\nresult[1]=%d\n",result[0],result[1]);
return 0;
}
结果为55 5015 与正确结果不同,调试如下
1步骤: gcc -g main.c -o main linux下c源文件编译(含有源代码,可以调试):
gdb main 进入main函数的调试
help帮助
l 1或者 l main 查看源代码
start开始调试
n(next)下一步
s(step)跳进函数
bt(backtrace)查看函数调用的栈帧
i(info) locals 查看方法的局部变量
f(frame) 1 选择1号栈帧
i locals 查看1号栈帧的局部变量,即main函数的局部变量
p(print) sum 查看sum变量的值
finish 跳出当前函数,回到main函数
set var sum=0 修改变量sum的值为0
p(print) result[2]=33 print也可以像set一样设置变量的值
2
int main()
{
int sum=0,i=0;
char input[5];
while(1)
{
scanf("%s",input);
for(i=0;input[i]!='\0';i++)
sum=sum*10+input[i]-'0';
printf("input=%d\n",sum);
}
return 0;
}
第一次输入123正确,第二次错误
调试命令如下:
start 启动调试
display sum 每次定下来都显示sum的值
undisplay 取消对这个变量的跟踪
b(break) 9 在第9行设置一个断点 参数也可以是函数名
c(continue) 表示连续运行,跳到下一个断点
i breakpoints 显示已经设置的断点
delete breakpoints 2 删除断点2
delete breakpoints 删除所有的断点
disable breakpoints 3 使某个断点失效
break 9 if sum != 0 满足条件才可以使用该断点
r 重新从程序开始连续执行
x 命令打印存储器中的内容 x/7b input 7b是打印格式,b表示每个字节一组,7表示打印7组
watch input[5] 跟踪某变量
#include <stdio.h>
int add_range(int low, int high)
{
int i,sum;
for(i=low;i<=high;i++)
sum=sum+i;
return sum;
}
int main(void)
{
int result[100];
result[0]=add_range(1,10);
result[1]=add_range(1,100);
printf("result[0]=%d\nresult[1]=%d\n",result[0],result[1]);
return 0;
}
结果为55 5015 与正确结果不同,调试如下
1步骤: gcc -g main.c -o main linux下c源文件编译(含有源代码,可以调试):
gdb main 进入main函数的调试
help帮助
l 1或者 l main 查看源代码
start开始调试
n(next)下一步
s(step)跳进函数
bt(backtrace)查看函数调用的栈帧
i(info) locals 查看方法的局部变量
f(frame) 1 选择1号栈帧
i locals 查看1号栈帧的局部变量,即main函数的局部变量
p(print) sum 查看sum变量的值
finish 跳出当前函数,回到main函数
set var sum=0 修改变量sum的值为0
p(print) result[2]=33 print也可以像set一样设置变量的值
2
int main()
{
int sum=0,i=0;
char input[5];
while(1)
{
scanf("%s",input);
for(i=0;input[i]!='\0';i++)
sum=sum*10+input[i]-'0';
printf("input=%d\n",sum);
}
return 0;
}
第一次输入123正确,第二次错误
调试命令如下:
start 启动调试
display sum 每次定下来都显示sum的值
undisplay 取消对这个变量的跟踪
b(break) 9 在第9行设置一个断点 参数也可以是函数名
c(continue) 表示连续运行,跳到下一个断点
i breakpoints 显示已经设置的断点
delete breakpoints 2 删除断点2
delete breakpoints 删除所有的断点
disable breakpoints 3 使某个断点失效
break 9 if sum != 0 满足条件才可以使用该断点
r 重新从程序开始连续执行
x 命令打印存储器中的内容 x/7b input 7b是打印格式,b表示每个字节一组,7表示打印7组
watch input[5] 跟踪某变量
相关文章推荐
- gdb调试命令及程序崩溃时的内核转存core dump
- Linux中gdb程序调试器的命令使用(包括后台进程和多线程的调试)
- 如何利用gdb调试程序之细节(info reg命令以及寄存器地址)
- linux程序调试命令addr2line之入门简单介绍(本文先不聊gdb调试)
- gdb调试命令及程序崩溃时的内核转存core dump
- gdb常用命令及使用gdb调试多进程多线程程序
- Linux下gdb调试程序的常用命令
- 用GDB调试C程序命令集锦
- GDB调试程序常用命令
- linux程序调试命令addr2line之入门简介(本文先不聊gdb调试)
- Linux系统中的gdb程序调试工具的命令知识介绍
- gdb调试多进程和多线程命令(结合例子)
- 用 GDB 调试程序(一)---简单例子
- 用GDB调试程序(六)
- 用GDB调试程序
- 用GDB调试程序
- 用GDB调试程序(七)
- 用GDB调试程序(六)
- 用GDB调试程序(四)
- gdb调试程序