三、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. SQL 测试

    1.SQL 指的是? 您的回答:Structured Query Language 2.哪个 SQL 语句用于从数据库中提取数据? 您的回答:SELECT 3.哪条 SQL 语句用于更新数据库中的数据 ...

  2. [前端笔记]第三篇:JavaScript

    JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理. 一.代码存放位置 J ...

  3. 在uboot上创建菜单

    一.原理 菜单其实就是一个uboot中的命令,和其他的命令没有什么差别.  uboot启动时,如果进入uboot命令模式,先运行这个命令,就会打印出一个菜单界面. 在uboot的命令模式,通过键入“m ...

  4. 为什么Tomcat的webapps目录下新建的目录不能访问html文件?

    在Tomcat安装目录中,webapps默认为部署网站用的目录.webapps/ROOT是网站的根目录,其它目录都是网站的子目录,如webapps\jsp-examples目录.但是,当我们新建一个子 ...

  5. [BZOJ 1068] [SCOI2007] 压缩 【记忆化搜索】

    题目链接:BZOJ - 1068 题目分析 这种记忆化搜索(区间 DP) 之前就做过类似的,也是字符串压缩问题,不过这道题稍微复杂一些. 需要注意如果某一段是 S1S1 重复,那么可以变成 M + S ...

  6. Arrays常用API的事例

    import java.util.ArrayList;import java.util.Arrays;import java.util.List; public class TestArrays { ...

  7. hiho #1055 : 刷油漆

    上回说到,小Ho有着一棵灰常好玩的树玩具!这棵树玩具是由N个小球和N-1根木棍拼凑而成,这N个小球都被小Ho标上了不同的数字,并且这些数字都是处于1..N的范围之内,每根木棍都连接着两个不同的小球,并 ...

  8. UVA-11983-Weird Advertisement(线段树+扫描线)[求矩形覆盖K次以上的面积]

    题意: 求矩形覆盖K次以上的面积 分析: k很小,可以开K颗线段树,用sum[rt][i]来保存覆盖i次的区间和,K次以上全算K次 // File Name: 11983.cpp // Author: ...

  9. 测试使用wiz来发布blog

    晚上尝试了下用wiz写随笔并发布,貌似成功了,虽然操作体验和方便性上不如word,但起码它集成了这个简单的功能可以让我用:如果能让我自动新建blog文章并自动定时更新发布就完美了.2013年7月5日1 ...

  10. 将汉字转化为拼音,正则表达式和得到汉字的Unicode编码

    一:上图,不清楚的看代码注解,很详细了 二:具体代码 窗体代码 using System; using System.Collections.Generic; using System.Compone ...