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
gdb调试程序的更多相关文章
- 用GDB调试程序(一)
http://blog.csdn.net/haoel/article/details/2879 用GDB调试程序 GDB概述———— GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或 ...
- Linux下使用GDB调试程序
问题描述: Linux下使用GDB调试程序 问题解决: (1)生成调试文件 注: 使用命令 gdb IOStream.c -o IOStre ...
- 用gdb调试程序笔记: 以段错误(Segmental fault)为例
用gdb调试程序笔记: 以段错误(Segmental fault)为例[转] 1.背景介绍2.程序中常见的bug分类3.程序调试器(如gdb)有什么用4.段错误(Segmental fault)介绍5 ...
- 用GDB调试程序
转自:http://blog.csdn.net/haoel/article/details/2879 是一篇从基础讲gdb的博文 用GDB调试程序 GDB概述---- GDB是GNU开源组织发布的一个 ...
- gdb调试程序函数名为问号,什么原因?step by step解决方案
gdb调试程序函数名为问号,什么原因? http://bbs.chinaunix.net/thread-1823649-1-1.html http://www.bubuko.com/infodetai ...
- 用gdb调试程序(Linux环境)
一般来说,GDB主要帮忙你完成下面四个方面的功能: 1.启动你的程序,可以按照你的自定义的要求随心所欲的运行程序. 2.可让被调试的程序在你所指定的调置的断点处停住.(断点可以是条件表达式) ...
- [Z] 用GDB调试程序
原文:http://blog.csdn.net/haoel/article/details/2879 用GDB调试程序 GDB概述———— GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工 ...
- 用 GDB 调试程序
Linux 包含了一个叫 gdb 的 GNU 调试程序. gdb 是一个用来调试 C 和 C++ 程序的强力调试器. 它使你能在程序运行时观察程序的内部结构和内存的使用情况. 以下是 gdb 所提供的 ...
- 转载 gdb调试程序
转载自csdn,作者haoel,链接http://blog.csdn.net/haoel/article/details/2879 用GDB调试程序 GDB概述———— GDB是GNU开源组织发布的一 ...
- Linux高级编程--04.GDB调试程序(查看数据)
查看栈信息 当程序被停住了,你需要做的第一件事就是查看程序是在哪里停住的.当你的程序调用了一个函数,函数的地址,函数参数,函数内的局部变量都会被压入"栈"(Stack)中.你可以用 ...
随机推荐
- Ember.js demo3
<!DOCTYPE html> <html> <head> <script src="http://code.jquery.com/jquery.j ...
- in on at 总结
in,on,at的时间用法和地点用法 一.in, on, at的时间用法 ①固定短语: in the morning/afternoon/evening在早晨/下午/傍晚, at noon/night ...
- 【HDOJ】4516 威威猫系列故事——因式分解
可解的算法太多了,采用的算法是试x的值.注意题目的输入x^3-2x^2不会写成x^3+-2x^2.一直RE在这儿. /* 4516 */ #include <iostream> #incl ...
- IPv6 tutorial 3 New features: IPsec and LAN features
https://4sysops.com/archives/ipv6-tutorial-part-3-new-features-ipsec-and-lan-features/ In the last p ...
- Good vs Evil
Good vs Evil Description Middle Earth is about to go to war. The forces of good will have many battl ...
- bzoj2259
这道题很不错,首先读入方式有一种跳跃的既视感:读入Si之后,我们可以直接往后跳Si,可以想到最短路,设序列为a[],我们设n+1是终点如果i+a[i]<=n+1 那么i-->i+a[i] ...
- Wordpress prettyPhoto插件跨站脚本漏洞
漏洞名称: Wordpress prettyPhoto插件跨站脚本漏洞 CNNVD编号: CNNVD-201311-413 发布时间: 2013-11-28 更新时间: 2013-11-28 危害等级 ...
- [light oj 1013] Love Calculator
1013 - Love Calculator Yes, you are developing a 'Love calculator'. The software would be quite comp ...
- web.xml配置详解之欢迎页面和错误页面
<!-- 应用的欢迎页面 采用list的方式罗列欢迎页面, 系统会从第一个找到最后一个,找到了文件就不继续往下找了.优先显示前边的. --> <welcome-file-list& ...
- LinkedHashSet的实现原理
1. LinkedHashSet概述 LinkedHashSet是具有可预知迭代顺序的Set接口的哈希表和链接列表实现.此实现与HashSet的不同之处在于,后者维护着一个运行于所有条目的双重链接列表 ...