0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是GDB?GDB的基本功能和命令总结

strongerHuang 来源: strongerHuang 2023-11-07 09:15 次阅读

GDB是嵌入式软件工程师调试用的比较多的一种工具,今天就来简单分享一下GDB相关命令。

什么是GDB?

GDB, 又称GNU调试器,是用来帮助调试我们程序的工具。

GDB有几个基本功能:

给程序设置断点;

当程序停在断点处时,我们查看所有变量、寄存器的值;

当程序停在断点处时,我们除了能查看所有变量、寄存器的值以外,还能在不改变源代码的情况下改变这些值;

GDB命令总结

在我们学习使用GDB调试程序之前,我们先看看GDB有哪些命令。

命令 功能
r run, 直接调到断点处,没有设置断点的话直接运行程序
b fun 设置一个断点breakpoint在函数”fun”的最开始
b N 在当前运行源文件的第N行设置断点
b file.c:N 在当前源文件file.c的第N行设置断点
d N 删掉delete第N行的断点
info break 显示所有断点信息
c 继续(continue)运行程序,一直到下一个断点或程序结束
f 运行直到当前函数(function)结束
s 按step调试1行,会进入函数体
s N 按step调试接下来的N行
n 调试1行,与按s命令不同的是此处不进入函数体
p var 输出(print)变量”var”的值
set var=val 设置变量”var”的值
bt 打印调用堆栈(stack trace)
q‍ 退出gdb

GDB使用说明

GDB有如下两种使用方式

调试会崩溃、有逻辑错误的程序

调试程序崩溃时自动生成的coredump

下面说明如何GDB调试

编译并构建程序,加上调试选项-g,e.g. gcc -g main.cpp -o test.out

用GDB来运行程序,gdb test.out

使用GDB命令来分析、调试程序

退出GDB

举例:

//main.c
#include 
int main()
{ 
    int balance=100;
    int target=1000;
    float rate = 0.1;
    int year = 0;
    do
    {
        float interest = balance * rate;
        balance = balance + interest;
        year++;
    } while ( balance >= target );
    printf("%d No. of years to achieve target balance.
", year);
    return 0;
}
步骤1:编译并构建程序,加上调试选项-g
gcc -g main.c -o test.out
步骤2:用GDB来运行程序
gdb test.out

步骤3:在main函数入口处设置一个断点
b main

步骤4:运行程序
run

步骤5:使用step调试到13行
s

步骤6:查看balance, rate, interest的值
p balance
p rate
p interest

步骤7:使用step调试到15行

步骤8:查看balance, rate, interest的值(发现没有循环,表明while条件出错,应该是balance < target)  

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    4983

    文章

    18286

    浏览量

    288494
  • 调试
    +关注

    关注

    7

    文章

    527

    浏览量

    33625
  • 命令
    +关注

    关注

    5

    文章

    638

    浏览量

    21849
  • gdb
    gdb
    +关注

    关注

    0

    文章

    60

    浏览量

    13160
收藏 人收藏

    评论

    相关推荐

    进入gdb后可使用的gdb命令

    gdb-optionsexecutable-file 进入gdb后可使用的gdb命令: File:装入想要调试的可执行文件 Cd:改变工作目录。 Pwd:返回当前工作目录
    发表于 07-03 05:26

    GDB定义命令无响应

    GDB定义命令无响应以上来自于谷歌翻译以下为原文 GDB define command not responsive
    发表于 04-10 10:02

    ubuntu下GDB调试GDB简介

    操作系统,GDB可以运行在UNIX、Linux甚至Microsoft Windows。GDB可以调试C、C++、Objective-C、Pascal、Ada等语言编写的程序;被调试的程序可以跟GDB运行于同一台电脑,也可运行于不
    发表于 12-21 08:20

    GDB的常用命令是什么?

    GDB的常用命令是什么?GDB的使用条件是什么?GDB如何调试?
    发表于 12-24 07:08

    gdb的基本工作原理

    gdbGNUdebugger。 gdb的主要功能救死扶伤。 gdb的主要用途修复bug;分析程序结构。 gdb官方网址http://www.gnu.org/software/
    发表于 04-18 21:18 35次下载

    GDB调试命令手册

    GDB调试命令手册,感兴趣的可以下载看看。
    发表于 11-05 16:36 9次下载

    GDB调试命令总结

    gdb attach pid //用gdb调试已经开始运行的程序,指定pid即可2.调试命令(1)执行命令模式-batch选项。比如:打印$pid进程所有线程的堆栈并退出。
    发表于 04-02 14:31 1009次阅读

    实例演示GDB的使用

    GDB简介 GDB(GNU Debugger)是一个强大的命令行调试工具。一般的,在Windows下进行开发,很少操控命令行调试,调试器大多与编译器都集成在IDE里了。 当然,在Win
    的头像 发表于 10-19 09:58 2354次阅读
    实例演示<b class='flag-5'>GDB</b>的使用

    GDB串行协议概述 GDB Server的作用

    1.概述做嵌入式开发时,很多时候都会使用到GDB,从底层去理解GDB的调试过程,将更加容易的理解调试的过程。 在做嵌入式开发调试时,可理解为两个部分 嵌入式系统平台,启动一个debug stub
    的头像 发表于 08-10 10:10 4815次阅读
    <b class='flag-5'>GDB</b>串行协议概述 <b class='flag-5'>GDB</b> Server的作用

    嵌入式Linux GDB调试环境搭建与使用

    这里写目录标题简介在Ubuntu下简单体验GDB嵌入式GDB移植GDB 常用命令参考网络通信设置注意事项简介Linux系统常用GDB调试C代
    发表于 11-01 17:59 8次下载
    嵌入式Linux <b class='flag-5'>GDB</b>调试环境搭建与使用

    GDB命令脚本做一个粗浅的介绍

    在shell下敲gdb命令即可启动gdb,启动后会显示下述信息,出现gdb提示符。
    的头像 发表于 02-06 11:41 1785次阅读

    什么是GDB?GDB基本功能命令总结

    GDB有几个基本功能: 1. 给程序设置断点; 2. 当程序停在断点处时,我们查看所有变量、寄存器的值; 3. 当程序停在断点处时,我们除了能查看所有变量、寄存器的值以外,还能在不改变源代码的情况下改变这些值
    发表于 11-07 09:16 313次阅读

    如何使用GDB调试工具

    在对应程序目录中使用下面的命令 gdb test 2、调试已经开始运行的程序进程 调试已经开始运行的程序进程,首先先用top命令查看运行的程序进程的pid如下: 比如我要加载的程序
    的头像 发表于 11-09 17:17 340次阅读
    如何使用<b class='flag-5'>GDB</b>调试工具

    简述GDB调试器提供的基本功能

    GDB是一个功能强大的源代码级调试工具,它提供了多种基本功能,帮助程序员** **更好地理解程序的运行机制和定位问题** **。
    的头像 发表于 01-28 17:44 748次阅读

    如何使用linux下gdb来调试python程序

    中,我们将介绍如何在Linux中使用GDB来调试Python程序。 一、安装GDB和Python调试符号 在使用GDB调试Python程序之前,需要安装GDB和Python调试符号。首
    的头像 发表于 01-31 10:41 472次阅读