1. 安装GDB
sudo apt install gdb-multiarch
2. 安装GEF(GDB Enhanced Features)
官网地址:https://github.com/hugsy/gef
2.1 安装2021.10版本
但是在Ubuntu 16.04上,bash -c "$(curl -fsSL https://gef.blah.cat/sh)"
等命令不好使,应该是因为Ubuntu版本太旧而无法与最新版GEF适配
需要旧的GEF
实测这个版本可以:https://github.com/hugsy/gef/releases/tag/2021.10
安装步骤:
wget https://github.com/hugsy/gef/archive/refs/tags/2021.10.tar.gz
tar -xzvf 2021.10.tar.gz
mkdir ~/.gef
sudo cp -r gef-2021.10/gef.py ~/.gef/
echo "source ~/.gef/gef.py" >> ~/.gdbinit
输入 gdb-multiarch
- 如果开头是
gef
说明GEF安装成功 - 如果开头是
(gdb)
说明GEF安装失败
我这里显示(gdb)
,并且输入gef
之后显示报错:
Python Exception <class 'UnicodeEncodeError'> 'ascii' codec can't encode character '\u27a4' in position 12: ordinal not in range(128):
(gdb)
说明GEF安装失败了
2.2 解决 Python Exception <class ‘UnicodeEncodeError’> ‘ascii’ codec
输入gef
之后显示报错:
Python Exception <class 'UnicodeEncodeError'> 'ascii' codec can't encode character '\u27a4' in position 12: ordinal not in range(128):
(gdb)
临时解决办法:
改用:LC_ALL=en_US.UTF-8 gdb
永久解决办法:
echo "export LC_ALL=en_US.UTF-8" >> ~/.bashrc
source ~/.bashrc
这样之后,直接输入gdb就可以
3. 参考链接:
https://github.com/hugsy/gef/issues/195
https://www.uf4te.cn/posts/2b805828.html#%E5%AE%89%E8%A3%85-gef