• 【Linux】[gdb]Linux环境下如何调试代码


    一、code.c文件

    我们首先创建一个code.c文件,写一段简单代码,用于测试。

     

    二、makefile文件

    然后,我们可以编写makefile文件,使得code.c文件能够进行编译。(当然也可以不写makefile文件,直接对code.c进行编译)

     如果没有-g ,则是以release模式编译该程序

    三、使用gdb调试

    一般情况下,gdb是默认安装好了的。

    1、 生成mybin文件(可执行程序)

    2、gdb打开关闭

    (1)gdb 可执行程序

     

    (2)quit/q

    使用quit或者q退出

     

     

    3、调试 

     (1)list/l (显示代码)

    功能:打开代码,显示代码及行号

    注意:一次list 可能不能完整显示所有代码,所以需要多次回车(直接回车就是上一个命令)(也可以再次使用list命令,效果一样)。

    此外,我们还可以使用  l 数字(比如: l 1),使得从第1行开始显示

     (2)run/r(执行)

    功能:执行(若不打断点,则直接运行到结束)

    以下即为不打断点的结果

    (3)break/b 数字(行号)等(例:b 5) (打断点)

    功能;打断点

    也可以使用 b 函数名 来打断点

     比如: b main 

    就是在main函数入口处打断点

     

    (4)info b(显示断点)

    功能:显示断点

     

     

    (5)d 编号(删除断点)

    功能:删除断点

    注意:删除断点只能通过Num列的序号来删除

    即使删除断点,断点的编号也会一直增加

    而退出gdb,重新进入时,则之前的断点全部清空

     

     (6)disable 编号(禁用断点)

    例:disable 1

    若不禁用断点1,则是以下执行结果:

    我们此时禁用断点1,则执行结果如下: 

    由于调试已经开始,它问我们是否从头开始执行,我们输入:y(表示yes) 

     

     再次输入r命令,执行结果如下:

    (7)enable 编号(启用断点)

    例:enable 1 

     

    (8)next/n (逐过程调试(类似于VS中的F10))

    注: 如果遇到有调用函数时,则不会跳到该函数处。

     

    (9)step/s (逐语句调试(类似VS中的F11))

     注: 如果遇到有调用函数时,则会跳到该函数处。

    (10)p 变量名/地址等(显示)

    例:p i   

    p &i

     

    (11)display  变量名/地址(长显示)

    例:display i

    display &i 

     

    当我们 调试时,display的变量会一直显示

    (12)undisplay 编号(取消长显示)

     

    (13)until 行号 (运行到指定的位置)

     

    (14)finish (运行至该函数结束)

    功能:运行至当前函数的结尾

    (15)continue/c (运行至下一断点处)

    我们首先增加一个断点

     然后使用continue:

    (16)bt  : 查看调用堆栈

     

     

    (17)set var (更改变量的值)

    例:set var i = 9

     

  • 相关阅读:
    CASS11.0.0.4 for AutoCAD2010-2023免狗使用方法
    [mockjs]Mock使用过程中的坑
    string类模拟实现(c++)(学习笔记)
    mysql 数据库使用分享(多图解析)
    Fast DDS之Subscriber
    使用 Bitnami PostgreSQL Docker 镜像快速设置流复制集群
    信号完整性(SI)电源完整性(PI)学习笔记(二十五)差分对与差分阻抗(五)
    pdf如何盖电子骑缝章?
    微信小程序 电影院售票选座票务系统5w7l6
    习题6-3 使用函数输出指定范围内的完数 (20分)
  • 原文地址:https://blog.csdn.net/m0_71071692/article/details/133550131