【1000个GDB技巧之】GDB如何配置启动自动执行脚本以及.gdbinit的3种工程用法?(~/.gdbinit、source、define、end、set)

要点

  • .gdbinit 文件是一个全局配置文件,用于自定义 GDB(GNU Debugger)的行为。启动 GDB 时,在当前工作目录和用户的主目录中查找 .gdbinit 文件,并执行其中的命令。
  • 可配置点:默认选项、定义宏、配置环境变量、加载附加
  • 工程上可以将多个gdb的组合需求用define 定义为命令,这样gdb中可以直接调用

比如一些配置:
set print repeat-off
set print pretty on
break my_function
watch my_variable
set environment myvalue value

以及一些常用的需要加载的

实战举例

~/.gdbinit

cat ~/.gdbinit 

可以添加通用区,以及source各种依赖的gdb配置,这样不同cfg就能放在不同文件维护,提高迭代效率
在这里插入图片描述

~/.gdbvmlinux

这里自定义了一个gdbvmlinux用于调试vmlinux的,只是举例一个用法用来打印一个全局变量
在这里插入图片描述
其他用途

  • 还可以添加一些source的python仓库,能够提供一些高阶用法的库
  • 还可以添加一些example仓库,未来使用新开发会比较方便
  • 还可以结合linux内核态ko,能够动态抓取内核中的一些数据的地址,标准化提供出来提高观测的灵活性

运行后效果

在这里插入图片描述

3种工程用法:

  • cfg:配置
  • source:添加子域命令
  • define:通过define定义命令方便实操使用

综述

  • 结合.gdbinit能够进行启动自动加载,把一些每次需要调试添加的命令可以放入其中,但最好的方式是放入一个source中,提高代码的可维护性
  • .gdbinit可以不断地迭代,能够作为一个方便的命令集合,如果做一些合理的架构设计,能够提供通用的调试方式
### 如何编辑和配置 GDB 的 `.gdbinit` 文件 `.gdbinit` 是 GDB 启动时会自动加载的一个初始化文件,用于设置调试环境或自定义功能。以下是关于如何编辑和配置此文件的相关说明: #### 编辑 `.gdbinit` 文件 可以通过任何文本编辑器来修改 `.gdbinit` 文件。通常情况下,该文件位于用户的主目录下(即 `~/.gdbinit`)。如果不存在,则可以创建一个新的文件。 示例命令如下: ```bash touch ~/.gdbinit # 创建新的 .gdbinit 文件 nano ~/.gdbinit # 使用 nano 编辑器打开并编辑 ``` #### 配置 `.gdbinit` 文件的功能 `.gdbinit` 文件支持多种配置选项,可以根据需求添加不同的指令或脚本来增强 GDB 功能。以下是一些常见的用途及其配置方式: 1. **手动加载特定的 GDB 脚本** 可以通过 `-x` 参数在启动时指定 `.gdbinit` 文件的位置[^1],或者直接将 `source` 命令写入 `.gdbinit` 中以便自动加载其他脚本。 示例代码: ```bash source ~/stl_views_1.0.3.gdb ``` 2. **自定义命令** 用户可以在 `.gdbinit` 文件中定义自己的快捷命令。例如,清屏命令可以通过以下方式实现[^2]: ```bash define cls shell clear end ``` 3. **STL 容器查看工具** 对于 C++ STL 类型的数据结构(如 `std::vector`),可以直接利用现成的辅助脚本简化打印过程[^3]。例如,在 `.gdbinit` 文件中加入以下内容即可启用 `pvector` 命令: ```bash python import sys sys.path.insert(0, '/path/to/gdb_printers') from libstdcxx.v6.printers import register_libstdcxx_printers register_libstdcxx_printers(None) end ``` 4. **多项目管理下的灵活配置** 在复杂的工程项目中,可能需要针对不同目标提供独立的 GDB 设置。这时可以通过条件判断或其他机制动态调整行为[^4]。比如: ```bash set auto-load safe-path /project/specific/path/ ``` 以上方法能够显著提升开发体验,并使调试工作更加高效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值