gdb调试程序
一、准备好内容vim test3.c 输入如下即可
#include <stdio.h>
int func(int n)
{
int sum=0,i;
for(i=0; i<n; i++)
{
sum+=i;
}
return sum;
}
main()
{
int i;
long result = 0;
for(i=1; i<=100; i++)
{
result += i;
}
printf("result[1-100] = %d /n", result );
printf("result[1-250] = %d /n", func(250) );
}
准备好的内容2 test4.c
#include<stdio.h>
int get_sum(int n)
{
int sum = 0,i;
for(i=0;i<n;i++)
sum += i;
return sum;
}
int main()
{
int i=100,result;
result =get_sum(i);
printf("1+2+3+...+%d=%d\n",i,result);
return 0;
}
二、编译成
gcc test3.c -o test3
./test3 可以查看结果
gdb test3 出现错误
gdb list 的时候出现如下错误
No symbol table is loaded. Use the "file" command.
---------------------------------
解决方案:
list命令后显示No symbol table is loaded. Use the "file" command.
原来编译用:gcc -o filename filename.c
解决办法,编译时加 一定要加-g:gcc -o filename -g filename.c
或者 比如gcc -g -o test3 test3.c 然后 gdb test3
又例子二:gcc -g test4.c -o test4
gdb list 1 从第一行开始。默认的一次只有10行,直接enter键下10行代码。list 1,17 列出1到17行的代码
gdb enter键 接下来的源码
gdb break 15 15行打断点
gdb r 开始运行
来到断点处
gdb n 下一步,下一步
gdb p i 打印某个变量
gdb watch i 查看某个变量
调试程序的时候,
break 6
run(不然 watch i==99 找不到i)
watch i==99 直接查看循环到99的情况
记得clear 6 与continue才能查看变量的值
print i
print sum
-----------
查看断点信息
info breakpoints
delete 编号。如删除第2个断点 delete 2
clear 6 删除第6行的断点
-----------
调试程序的时候,next和step的区别是。next 把整个函数当做一条语句处理,然后是下一行。
step是进入函数内部,然后执行函数内部一条一条语句。返回之后,继续执行下一条语句。
----------------------------------------------------------------------
一个经典的调试程序:
break 6
run
watch i==99
continue[运行到下一个断点或运行完] 运行到i==99的情况
然后按step进行调试程序即可。或next也可以。
参考网站:
http://blog.csdn.net/haoel/article/details/2879
最新文章
- CH模拟赛 还教室
- 实战 ASP.NET Web API
- 关于轻松安装LNMP和LAMP的编译环境
- 【转】CV_EXPORT定义的作用,lib及dll的区别
- BZOJ 1901 Zju2112 Dynamic Rankings ——树状数组套主席树
- Typescript的面向对象
- HTTP.sys漏洞验证及防护
- 安装nagios出现的两个错误记录
- Windows Phone开发工具初体验【转载】
- yzoi2223集合构造的详细解法
- 颜色空间RGB与HSV(HSL)的转换
- 从0开始用U盘制作启动盘装Windows10系统(联想R720笔记本)并永久激活方法
- mask_rcnn训练自己的数据集
- 常用API2 正则表达式
- Ocelot简易教程(三)之主要特性及路由详解
- SELinux简介(转载)
- mysql判断两个时间段是否有交集
- PHP伪原创同义词替代代码示意
- sqlserver 分区排序之partition
- linux -- ubuntu14.10安装gnome桌面环境和dock工具