• 【Linux】gdb调试器


    一、gdb调试器背景

    程序的发布方式有两种,debug模式和release模式

    Linux gcc/g++出来的二进制程序,默认是release模式

    要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项

    二、安装gdb 

    yum install gdb
    

    三、使用gdb

    在Linux当中gcc/g++默认生成的可执行程序是release版本的,是不可被调试的。如果想生成debug版本,就需要在使用gcc/g++生成可执行程序时加上-g选项。

    我们可以使用readelf指令查看ELF格式的文件信息:

     我们先写一个代码

     使用gdb + file命令进入调试:

    1. l指令(显示代码)

    l 0从第一行开始输入

    2. b指令(设置断点) 

    上面的意思是在21行设置一个断点 

    3. info b(显示断点)

    4. disable num(禁用断点) 

    当Enb一栏为n是断点被禁用

    5. enable num(启用断点) 

    6. d num(删除断点) 

    7. r指令(运行代码) 

    运行代码在断点处停下。

    8. n指令(逐过程运行代码)  

    9. s指令(逐语句运行代码)  

     10. c指令(运行到下一个断点)  

    11. bt指令(查看函数调用堆栈)

    12. finish指令(执行完当前函数) 

    13. p指令(临时查看变量) 

    14. display指令(监视)

    15. undisplay(取消监视) 

    16. until指令(跳转) 

    17. set var指令(修改变量的值)

     

    四、指令总览 

    【进入gdb】
    指令: gdb 文件名

    【调试】
    1)「run/r」:运行代码(启动调试)。
    2)「next/n」:逐过程调试。
    3)「step/s」:逐语句调试。
    4)「until 行号」:跳转至指定行。
    5)「finish」:执行完当前正在调用的函数后停下来(不能是主函数)。
    6)「continue/c」:运行到下一个断点处。
    7)「set var 变量=x」:修改变量的值为x。

    【显示】
    1)「list/l n」:显示从第n行开始的源代码,每次显示10行,若n未给出则默认从上次的位置往下显示.。
    2)「list/l 函数名」:显示该函数的源代码。
    3)「print/p 变量」:打印变量的值。
    4)「print/p &变量」:打印变量的地址。
    5)「print/p 表达式」:打印表达式的值,通过表达式可以修改变量的值。
    6)「display 变量」:将变量加入常显示(每次停下来都显示它的值)。
    7)「display &变量」:将变量的地址加入常显示。
    8)「undisplay 编号」:取消指定编号变量的常显示。
    9)「bt」:查看各级函数调用及参数。
    10)「info/i locals」:查看当前栈帧当中局部变量的值。

    【断点】
    1)「break/b n」:在第n行设置断点。
    2)「break/b 函数名」:在某函数体内第一行设置断点。
    3)「info breakpoint/b」:查看已打断点信息。
    4)「delete/d 编号」:删除指定编号的断点。
    5)「disable 编号」:禁用指定编号的断点。
    6)「enable 编号」:启用指定编号的断点。

    【退出gdb】
    1)「quit/q」:退出gdb。

  • 相关阅读:
    Java(面试题20220822)
    使用Three.js实现炫酷的赛博朋克风格3D数字地球大屏 🌐
    基于时间的盲注
    职业教育数字化成行业发展新方向
    亨元模式 结构型模式之六
    利用概率学实现组合优化层,新研究构建Julia开源包InferOpt.jl
    vue框架学习-----vue简介&vue.js安装&第一个vue程序&部分vue指令
    力扣题解12-15
    Java:升序数组插入一个元素,结果依旧是升序
    supOS APP开发者课程练习册
  • 原文地址:https://blog.csdn.net/m0_72651735/article/details/139986763