三、gdb调试(上)
01.gdb:gdb是GNU debugger的缩写,是编程调试工作。
功能:
  启动程序,可以按照用户自定义的要求随心所欲的运行程序;
  可让被调试的程序在用户所指定的调试的断点处停住(断点可以是条件表达式);
  当程序停住时,可以检测此时程序中所发生的事;
  动态改变量程序的执行环境。
#vi smiple.c
#include<stdio.h>
#include<stdlib.h>
long func(int n);
int main(int argc, char *argv[])
{
printf("Entering main ...\n");
int i;
long result = 0;
for(i=1;i<=100;i++)
{
result += i;
}
printf("result[1-100] = %ld\n",result);
printf("result[1-10]",func(10));
return 0;
}
long func(int n)
{
long sum = 0;
int i;
for(i=1;i<n;i++)
{
sum+=1;
}
return sum;
}
:wq
#gcc -Wall -g(以便生成调试,将源文件显示出来) simple.c -o 
simple
#./simple
#gdb simple
(gdb)list(显示所有源代码)
(gdb) l(同上)
(gdb)break 10(在第10行设置断点)
(gdb)info break(查看断点信息)  --ib(简写)
(gdb)b func(在函数入口设置断点)
(gdb)run --r(运行到断点处)
(gdb)step --s(单步跟踪)
(gdb)print i --p i(打印出i的当前值)
(gdb)p result
result=3
(gdb)p i
(gdb)s
(gdb)until(跳出for循环,循环的下一条语句)
(gdb)c(continue运行到下一个断点处)
(gdb)直接按回车,使用上一次的命令
(gdb)finish(结束单步调试)
#vi Makefile
.PHONY:clean all
CC=gcc
CFLAGS=-Wall -g
BIN=simple main
all:$(BIN)
$(CC) $(CFLAGS) -c $< -o $@
main:main.o search.o
$(CC) $(CFLAGS) &^ -o $@
clean:
rm -f *.o $(BIN)
:wq
#gdb simple
(gdb)r a b c(给程序加上启动参数)
(gdb)list fun(查看fun的函数源码)
(gdb)list file:fun(查看file文件中的fun函数源码)
02.设置断点与观察点
break 行号
break fun
break file:行号
break file:fun
break if<condition>-条件成立时程序停住
info break(i b)-查看断点
watch expr -变量expr值发生改变,程序停住
delete n - 删除断点
03.单步调试
continue(c)-运行至下一个断点
step(s)- 单步跟踪,进入函数,类似于VC中的step in
next(n)-单步跟踪,不进入函数,类似于VC中的step out
finish - 运行程序,直到当前函数完成返回。并打印函数返回时的堆栈地址和返回值及参数等信息。
until - 当厌倦了在一个循环体内单步跟踪时,这个命令可以运行程序直到退出循环体
print(p)查看运行时的变量以及表达式

Linux开发工具之gdb(上)的更多相关文章

  1. Linux开发工具之gdb(下)

    三.gdb调试(下) 01.查看运行时数据 print - 查看变量值 ptype - 查看类型 print array - 查看数组 print *array@len - 查看动态内存 print ...

  2. Linux开发工具的使用

    1.   Linux开发工具的使用 Vim编译的使用 Gdb调试工具的使用 Makefile的编写 linux跟踪调试 SSH的使用 subversion的使用 1.   Linux开发工具的使用 V ...

  3. Linux开发工具教程

    今天把上个星期写的Linux开发工具相关的教程整理一下,方便阅读: 1.第一课 GCC入门: 2.第二课 GCC入门之静态库以及共享库: 3.第三课 Makefile文件的制作(上) : 4.第四课 ...

  4. 基于AM3352/AM3354/AM3358/AM3359的Linux 开发环境搭建(上)

    遇到不少人新手小白问,前辈如何搭建一个优良的Linux 开发环境?之前一直都是在用win开发,现在想要尝试用Linux做开发等等一系列的问题.开源一直是给电子行业工作者提供了一种向技术更深处进发的机遇 ...

  5. Linux开发工具之Makefile(上)

    二.makefile(上) 01.make工具   利用make工具可以自动完成编译工作.这些工作包括:如果修改了某几 个源文件,则只重装新编译这几个源文件:如果某个头文件被修改了,则 重新编译所有包 ...

  6. 蜂鸟E203系列——Linux开发工具

    欲观原文,请君移步 Vivado安装 vivado是运行工程的工具,所以必须安装 后台回复[vivado2017]可获取vivado 2017.4 | 后台回复[vivado2020]可获取vitis ...

  7. Linux开发工具之gcc

    一.gcc入门(上)   1.gcc相关概念   gcc(GNU C Compiler)编译器,最初支持C语言,现已支持C.C++.Java.Pascal.Ada.COBOL语言等:支持多种硬件平台: ...

  8. Linux小工具:文件上传ftp服务器

    工作期间,每次将文件上传至ftp服务器时,均需要手工输入ip.用户名.密码等,因此,考虑编写脚本完成文件的上传任务.具体的脚本sync.sh如下: #!/bin/bash source ~/.bash ...

  9. Linux开发工具之Makefile(下)

    二.Makefile(下) 01.make常用内嵌函数 函数调用   $(function arguments) $(wildcard PATTERN)   当前目录下匹配模式的文件   例如:src ...

随机推荐

  1. 百度的一个Ajax跨域方法 JavaScript是没有域的限制

    baidu的通行证处理都是在二级域名passport.baidu.com中处理的,但是baidu很多地方登录都好像是用ajax处理的,他是怎么做的呢?研究了一下,发现一个小技巧. 在http://zh ...

  2. Android输入法开发

    1. 概念 * IMF: 输入法框架(Input Method Framework) * IM: 输入法(Input Method) * IMS: 输入法服务(Input Method Service ...

  3. 那些年被我坑过的Python——道阻且长(第五章实用模块讲解)

    random模块 我的随机验证吗程序: 首先保证了字母和数字出现的概率是50% VS 50%,其次是可以订制输出多少位 def Captcha(size): Captcha_list = [] for ...

  4. hadoop 2.2.0 集群部署 坑

    注意fs.defaultFS为2..0新的变量,代替旧的:fs.default.name hadoop 2.2.0 集群启动命令:bin/hdfs namenode -formatsbin/start ...

  5. wildcard 处理全部文件

    Makefile如果想取得文件夹下全部文件 $(wildcard $(PATH)/*.c) 即可

  6. BZOJ 1588 营业额统计

    Description 营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司的账本,账本上记录了公司成立以来每 ...

  7. [BZOJ 2004] [Hnoi2010] Bus 公交线路 【状压DP + 矩阵乘法】

    题目链接: BZOJ - 2004 题目分析 看到题目完全不会..于是立即看神犇们的题解. 由于 p<=10 ,所以想到是使用状压.将每个连续的 p 个位置压缩成一个 p 位 2 进制数,其中共 ...

  8. 【Java】Hibernate4实战 之 第一部分Hibernate入门

    Hibernate是什么:ORMapping的原理 Hibernate是轻量级的ORMapping框架. ORMapping基本规则: 类和表映射. 实例和数据库表中的一条数据映射. 实例的属性和数据 ...

  9. 【枚举】Vijos P1012 清帝之惑之雍正

    题目链接: https://vijos.org/p/1012 题目大意: 给n个坐标(n<=100 000),求直线距离最短是多少.数据较大用long long 或 double 题目思路: [ ...

  10. 80 多个 Linux 系统管理员的监控工具

    原文出处: serverdensity   译文出处:Linux中国 随着互联网行业的不断发展,各种监控工具多得不可胜数.这里列出网上最全的监控工具.让你可以拥有超过80种方式来管理你的机器.在本文中 ...