• Linux下的的GDB调试技巧二 —— 基本功能


    GDB安装

    • 在系统上安装gdb(以Ubuntu为例)
    sudo apt install gdb
    • 离线安装gdb deb包
    https://pkgs.org/download/gdb

    之后通过dpkg -i命令进行安装(注意使用sudo或者root)。 

    • 下载源码手动编译安装gdb
    http://ftp.gnu.org/gnu/gdb/

    之后根据指导进行configure和make。

    GDB常用功能概览

    GDB常用功能如下表所示:

    支持的功能

    描述

    启动调试与执行逐过程、逐语句执行等
    断点管理设置断点、查看断点等
    查看修改、自动显示、动态打印变量的值在调试状态下查看、修改及内存数据等操作
    显示源代码 显示源代码
    查看调用栈查看堆栈信息
    线程管理调试多线程程序,查看线程信息
    其它

    包括搜索源代码、查看变量类型、窗口管理、调用shell命令、gdb自定义宏的使用、信号(signals)、commands等命令

    可被GDB调试的程序

    GDB可以调试的程序包括以下几类:

    1. 自己编译的程序

    • cmake带“-DCMAKE_BUILD_TYPE=Debug”参数的程序。
    • makefile中带“-g”参数的,并添加-O0选项的程序。

    注:

    -O0不进行优化处理。

    -O或-O1优化生成代码。

    -O2进一步优化。

    -O3比-O2更进一步优化,包括inline函数

    2. 非自己编译的程序

    • 使用readelf -S 程序名称 | grep debug命令,能够输出调试信息的程序;如果没有任何的debug信息,则不能被调试。
    • 使用file命令查看strip的情况,没有显示stripped资阳的程序;如果最后显示stripped,则不能被调试。

    注:

    (1)gdb如果调试不可被调试的程序时,会报"Reading symbols from XXX...(no debugging symbols found)...done"错误。

    (2)一般deb打包之后的可执行程序都是被strip处理过的。

  • 相关阅读:
    Jetson Orin NX 开发指南(6): VINS-Fusion-gpu 的编译和运行
    2311rust,到60版本更新
    PT_参数估计_最大似然法
    APISIX 成为 Apache 项目两周年!
    uni-app图片保存到手机
    stable diffusion绘制汉服美女
    TCP/IP(七)TCP的连接管理(四)全连接
    使用BigDecimal的坑
    Conda 创建、激活、克隆、删除虚拟环境
    基于单片机超声波测距语音播放
  • 原文地址:https://blog.csdn.net/phmatthaus/article/details/127955276