原始的 GDB 并不好用,为了提高效率通常装一些辅助性插件如 peda, gef, pwndbg 等。同时安装多个很是常见,但是如何选择启用某一个确实值得好好琢磨琢磨。

通常情况我们知道 gdb 通过寻找 ~/.gdbinit 文件来加载插件,不同的插件势必要修改此文件来达成目的。假设我们在 /usr/local/bin 下创建 gdb-peda、gdb-gef,很容易想象其内容是替换 .gdbinit 的内容,一段 shell 脚本确实就能搞定。

但是这里我将采用另外一种方法。gdb 还能通过命令行参数来选择加载位置,个人觉得更加优雅,下面我将演示 peda 和 gef 共存的配置:

/usr/local/bin 下 gdb-peda 内容如下:

1
2
3
#!/bin/sh

gdb --init-command=<path to peda.py>

gdb-gef 内容如下:

1
2
3
#!/bin/sh

gdb --init-command=<path to gef.py>

两个文件添加执行权限,即可通过 gdb-peda / gdb-gef 命令来启动对应插件的 gdb 了。对于 debian 系列系统还可以利用 update-alternatives 命令来管理,选取某个插件作为默认 gdb,大家可以自行尝试。