用gdb调试C程序的简单介绍
1.安装gdb
引用
# yum install gbd
这里用的是CentOS或者RedHat的yum来安装,如果是Ubuntu的话就可以用apt-get来安装。
2.编译可调试的C程序
要用gdb调试C程序,在编译C程序的时候就要变成成debug的本版,很简单在gcc编译的时候加上“-g”的参数就可以了(trig.c代码请参考前一篇文章
http://lveyo.iteye.com/blog/240578)
引用
# gcc -o trig -g trig.c
3.用gdb调试
引用
# gdb trig
GNU gdb Red Hat Linux (6.5-37.el5_2.2rh)
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...Using host libthread_db library "/lib/libthread_db.so.1".
(gdb)
GDB显示其默认提示符并等待你的命令。首先使用list命令来查看这次调试会话的一部分源代码:
引用
(gdb) list
13 if(!fgets(input, MAX_INPUT, stdin)){
14 perror("an error occurred.\n");
15 }
16 angle = strtod(input, NULL);
17
18 printf("sin(%e) = %e\n", angle, sin(angle));
19
20 return 0;
21 }
(gdb)
在mian函数入口设置断点,然后用run命令运行程序
引用
(gdb) break main
Breakpoint 1 at 0x80484c5: file trig.c, line 12.
(gdb) run
Starting program: /tmp/cpro/trig
Breakpoint 1, main () at trig.c:12
12 printf("Give me an angle (in radians) ==>");
(gdb)
运行到main函数的第一条指令时暂停程序,此时程序暂停在第12行。可以使用list命令来显示main函数中的源代码。每一行代码可以使用step和next命令来单步执行——前者会在执行每一条机器指令之后暂停,后者的执行方式类似,但它不会进入外部函数的内部,而是把函数调用语句当作一条普通语句来执行。
先执行next命令运行printf语句
引用
(gdb) next
13 if(!fgets(input, MAX_INPUT, stdin)){
(gdb)
Give me an angle (in radians) ==>3.14
16 angle = strtod(input, NULL);
(gdb)
gdb在它调用库函数strtod()将字符串转换为双精度浮点数之前暂停了程序的运行。你可以使用gdb的print命令在调用这个函数前后查看angle变量的值:
引用
(gdb) print angle
$1 = 1.9580527709081361e-305
可以用contuinue命令完成程序运行,知道遇到下一个断点,continue命令简写为c
引用
(gdb) c
Continuing.
sin(3.140000e+00) = 1.592653e-03
Program exited normally.
用q命令推出gdb。
分享到:
相关推荐
1. 正确表述Linux环境下C语言编译的过程; 2. 熟练运用GDB命令调试C语言程序
9.2 Linux下USB系统文件结点 9.3 USB主机驱动结构 9.3.1 USB数据传输时序 9.3.2 USB设备连接/断开时序 9.4 主要数据结构及接口函数 9.4.1 数据传输管道 9.4.2 统一的USB数据传输块 9.4.3 USBD数据描述 9.4.4...
3.1.1 C语言简单回顾 3.1.2 Linux下C语言编程环境概述 3.2 常用编辑器 3.2.1 进入vi 3.2.2 初探emacs 3.3 gcc编译器 3.3.1 gcc编译流程解析 3.3.2 gcc编译选项分析 3.4 gdb调试器 3.4.1 gdb使用流程 3.4.2 gdb基本...
2.2 熟悉Linux操作系统下的C/C++应用程序开发环境,掌握linux系统下开发工具vi、gcc 和gdb的使用,以及makefile的写法; 2.3 掌握Linux环境下图形工具包GTK和网络编程中socket“套接字”的使用;
4.掌握在Linux操作系统环境上编辑、编译、调试、运行一个C语言程序的全过程。 实验要求 1.熟悉使用Linux字符界面、窗口系统的常用命令。 2.熟悉运用Linux常用的编程工具。 3.熟悉运用Linux的在线求助系统。 4....
2.6 GDB调试器 2.6.1 GDB基本使用方法 2.6.2 GDB基本命令 2.6.3 GDB典型实例 2.7 Make工具的使用 2.7.1 Makefile基础知识 2.7.2 Makefile应用 2.7.3 使用autotools自动生成Makefile文件 2.8 嵌入式交叉编译...
一、前置知识——gcc/g++的编译链接过程 在Windows下,如果你用Visual Studio进行开发,C/C++的编译器一般采用微软提供的MSBuild;在Linux下C/C++的编译器大多采用gcc/g++。既然要在Linux下进行C++开发,很有必要...
3.1.1 C语言简单回顾 61 3.1.2 Linux下C语言编程环境概述 62 3.2 进入Vi 63 3.2.1 Vi的模式 63 3.2.2 Vi的基本流程 63 3.2.3 Vi的各模式功能键 65 3.3 初探Emacs 66 3.3.1 Emacs的基本操作 ...
Linux程序设计 分卷文件共有以下2个: Linux程序设计 第4版.haozip01.zip Linux程序设计 第4版.haozip02.zip 基本信息 原书名: Beginning Linux Programming 原出版社: Wrox 作者: (英)Neil Matthew Richard ...
2.1 嵌入式linux下c语言概述 32 2.1.1 c语言简史 33 2.1.2 c语言特点 33 2.1.3 嵌入式linux c语言编程环境 34 2.2 嵌入式linux编辑器vi的使用 35 2.2.1 vi的基本模式 35 2.2.2 vi的基本操作 36 ...
Linux程序设计 分卷文件共有以下2个: Linux程序设计 第4版.haozip01.zip Linux程序设计 第4版.haozip02.zip 基本信息 原书名: Beginning Linux Programming 原出版社: Wrox 作者: (英)Neil Matthew Richard ...
7.4 gdb调试工具 第8章 Bourn Again Shell编程 8.1 bash脚本的建立和运行 8.2 shell的变量 8.3 shell脚本位置参数的传递 8.4 控制结构语句 8.5 其他几个有用的语句 8.6 数值处理 8.7 数组 8.8 函数 8.9 here文档 ...
D.2 Linux上的C/C++编译器和调试器 238 D.2.1 运行gcc/egcs 238 D.2.2 gcc/egcs的主要选项 240 D.2.3 gdb简介 240 D.2.4 gdb的常用命令 241 D.2.5 gdb使用示例 242 D.3 GNU make和makefile 243 D.3.1 GNU make 243 D...
项目在Linux操作系统下实现,实现语言为C,代码用Vim编辑,GCC编译,GDB调试,使用ncurses图形库。 Myvi和vim的基本功能类似,分为三种模式:插入模式、命令模式、保存模式。 它具有VI/Vim的基本特性——所有命令...
8.2 用GDB调试二进制文件 133 8.2.1 准备进行文件调试 133 8.2.2 跟踪前的准备 138 第9章 Linice内核调试基础 141 9.1 系统要求 142 9.2 编译与配置Linice 143 9.3 引导系统与启动调试器 144 9.4 Linice的...
8.2 用GDB调试二进制文件 133 8.2.1 准备进行文件调试 133 8.2.2 跟踪前的准备 138 第9章 Linice内核调试基础 141 9.1 系统要求 142 9.2 编译与配置Linice 143 9.3 引导系统与启动调试器 144 9.4 Linice的...
文章目录一, vim常用命令二, gcc基本用法三, gdb基本使用 这篇博客是小黑总结出来查询用的功能文档,适合已经对Linux系统有所了解的小白,喜欢的同学可以收藏。希望能帮到大家提高效率。 一, vim常用命令 命令/...
6.12.2 一个简单的inetd 使用的服务器程序hello inet service...... 199 6.12.3 /etc/services 和 /etc/inetd.conf 文件.................. 200 6.12.4 一个复杂一些的inetd 服务器程序................... 201 6.12...