`
lveyo
  • 浏览: 915418 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

linux下编译C程序(二)——gdb简单调试

阅读更多
用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
0
分享到:
评论

相关推荐

    建立jlink+arm-linux-insight+GDB Server调试环境

    这里主要聚焦于第四种方案——使用虚拟机搭建Linux GCC编译,通过GDB Server远程调试Win主机的Target的调试环境。具体步骤如下: 1. **安装JLink驱动与GDB Server** 在Windows主机上,首先需安装JLink驱动,这...

    Linux下C语言编程——基础

    在Linux环境下进行C语言编程是许多开发者的基础技能,本文将详细介绍这一主题,包括源程序的编译、Makefile的编写、程序库的链接、程序调试、头文件和系统求助等基础知识。 首先,让我们从源程序的编译开始。在...

    LINUX实验程序——————初学者

    这个名为“LINUX实验程序——初学者”的压缩包显然是一系列针对初学者设计的Linux学习资源,旨在帮助新手掌握Linux的基本概念和系统编程技巧。下面,我们将深入探讨其中可能包含的知识点。 1. **Linux基础**:学习...

    GDB调试程序文档

    ### GDB调试程序知识点 #### 一、GDB概述 - **定义**: GDB(GNU Debugger)是一款由GNU项目开发的开源调试工具,主要用于调试C、C++等语言编写的程序。 - **特点**: - 命令行界面:用户通过命令行交互的方式来控制...

    linux_gdb——sgi_stl——文件锁——程序自动重启

    1. **GDB调试器**:GDB(GNU调试器)是Linux环境下广泛使用的源代码级调试工具。它可以让你在程序运行时查看变量状态、设置断点、单步执行代码,以诊断和修复错误。使用GDB,开发者可以检查内存泄漏、跟踪函数调用、...

    Linux培训-GDB调试

    本篇文章将详细探讨两个常用的调试工具——GDB和KGDB。 首先,GDB(GNU Debugger)是GNU开源组织提供的一款强大的命令行程序调试工具,它支持多种编程语言,如C和C++。GDB的核心功能是帮助开发者找出程序中的错误,...

    Linux下GDB命令经典教程

    本节将通过一个具体的例子——使用GDB调试一个简单的GTK程序(hello_gdb.c),来展示GDB的使用方法。 ##### 4.1 准备工作 首先,确保已经安装了GTK+和GDB。接下来,创建并编译hello_gdb.c程序。 ##### 4.2 编译...

    Linux程序员——C语言源代码

    在Linux环境下,C语言用于编写系统调用、驱动程序、内核模块等,因此,熟悉C语言对于Linux程序员来说至关重要。 在Linux下编写C语言源代码,需要了解以下几点关键知识: 1. **标准输入输出**:C语言提供`stdio.h`...

    GDB调试工具 ——实验报告.pdf

    总结来说,GDB调试工具对于理解和修正C语言程序中的错误至关重要。通过设置断点、观察变量状态、追踪调用栈,开发者可以深入程序内部,找出隐藏的问题。同时,熟悉Linux下的编译过程也是编程实践中不可或缺的基础...

    linux操作系统下c语言编程入门

    在Linux下进行C语言程序的编译通常使用GNU的GCC编译器。编译过程主要包括: 1. 预处理:展开宏定义、处理条件编译指令等。 2. 编译:将预处理后的源码转换成汇编代码。 3. 汇编:将汇编代码转换成机器码。 4. ...

    Linux基本反汇编结构与GDB入门.doc

    在Linux下,我们可以使用GCC开发环境和GDB调试器来编写和调试程序。我们可以使用vi或vim编辑器来编写程序,例如编写一个名为exchange.c的程序文件。然后,我们可以使用gcc编译器来编译该程序文件,例如使用“gcc -o ...

    Debug Hacks中文版 深入调试的技术和工具

    《Debug Hacks中文版》作为一本专注于调试技术的书籍,主要探讨了在Linux操作系统下进行软件调试的各种方法和技术。调试是软件开发过程中不可或缺的一环,它的主要目的是发现、定位并修正程序中的错误和缺陷。由于...

    动态网络爬虫——linux下C

    在IT领域,网络爬虫是一种自动化程序,用于遍历互联网并抓取网页...以上就是关于"动态网络爬虫——Linux下C"的知识点概述,涵盖从网络爬虫的基本原理到具体实现的各个层面。希望对你在开发C语言网络爬虫时有所帮助。

    “中国Linux参考平台”点晴——信息产业部软件与集成电路促进中心.pdf

    6. **Core System DEV模块**:包含了一系列开发工具,如autoconf、automake、CVS、g++、gcc、gdb、libtool等,用于程序的编译和调试。 7. **图形界面相关模块**:XFree86 4.3.0和X.org实现了X服务器和X客户端的功能...

    Linux实验 六 GCC程序编译

    本实验将通过编写一个简单的C语言程序并使用GCC进行编译来实现以下目标: 1. 理解GCC编译器的基本概念及其在Linux环境下的应用。 2. 掌握GCC编译器的基本使用方法。 3. 熟悉GCC编译器中常见的编译选项,并了解这些...

    gdb调试-这些就够了.pdf

    gdb(GNU Debugger)是Linux环境下广泛使用的C/C++程序调试工具,它能够帮助开发者深入理解程序运行过程,定位和修复代码问题。然而,gdb的强大功能往往让初学者感到困惑,因为它包含了大量的命令和选项。本文将针对...

    Linux操作系统下C语言编程入门

    在Linux下,调试C程序可以使用GDB(GNU Debugger)。GDB让你能够单步执行代码、设置断点、检查变量值,帮助找出程序中的错误。 总的来说,Linux操作系统下的C语言编程入门需要掌握基础的C语言语法、Linux环境下的...

    gcc gdb中文手册

    GDB是开发者调试C/C++程序的强大工具,提供了一系列交互式的命令来控制程序的运行。手册中的核心内容可能包括: 1. **启动调试**:如何设置断点,启动调试会话,如`gdb program`,然后`run`执行程序。 2. **单步...

    linux编程——高级编程方法

    - GCC是Linux下使用最广泛的C/C++编译器,支持多种编译优化选项和调试符号,以便于开发者进行程序调试。 - GDB(GNU Debugger)是Linux平台下广泛使用的源代码级调试器,它允许开发者运行程序、设置断点、单步执行...

Global site tag (gtag.js) - Google Analytics