三、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. Ubuntu You don't have permission to access解决方案!

    最近对Linux越来越喜欢了,就直接安装了一个Ubuntu,配制好LAMP后,在做小项目时,出现了下面的问题:Ubuntu You don't have permission to access ** ...

  2. python模块之re正则表达式

    41.python的正则表达式      1. python中re模块提供了正则表达式相关操作 字符: . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字      \W大写代表非\w ...

  3. django访问sqlserver中的坑

    首先不用说先安装django-sqlserver    pip install django-sqlserver 然后在settings.py中修改'ENGINE': 'sqlserver_ado', ...

  4. bzoj3140: [Hnoi2013]消毒

    Description 最近在生物实验室工作的小T遇到了大麻烦. 由于实验室最近升级的缘故,他的分格实验皿是一个长方体,其尺寸为a*b*c,a.b.c 均为正整数.为了实验的方便,它被划分为a*b*c ...

  5. 转:六百字读懂Git

    原文来自于:http://www.techug.com/git-in-600-words 译注:来自 Hacker School 的 Mary Rose Cook 最近实现了一个纯 JavaScrip ...

  6. Hybrid UI framework shootout: Ionic vs. Famo.us vs. F7 vs. OnsenUI

    1 Introduction In the past 2 years I’ve been working intensively on mobile applications, mostly hybr ...

  7. 几个国外FMX网站 good

    FireMonkey X –  Amazing overview of FireMonkey FMX Feeds – All your FireMonkey news in one place FMX ...

  8. 9.DataPager

    ListView搭配DataPager控件实现分页.有两种使用方式:一是将DataPager声明到ListView中:一种是DataPager\ListView没有嵌套关系,然后将DataPager的 ...

  9. Java中的属性与字段的区别

    Java中属性和字段的区别  Java中的属性,通常可以理解为其属名性时根据get和set方法名得出的. 其规则是:去掉get或set后其剩余的字符串,如果第二个字母是小写的,则把第一个字母也变成小写 ...

  10. 快速创建php server

    mkdir testmv test.html testphp -S localhost:8082http://localhost:8082/test.html