2020/11/16更新:
msys2的pacman已更新,现已不需要再自行编译gdb-multiarch,获取方式:
mingw-w64/msys2安装配置,gdb-multiarch安装
编译环境:win10 + MinGW msys
需要自行下载安装MinGW
- 打开msys shell
打开安装路径下的批处理文件:
MinGW\msys\1.0\msys.bat
- 下载并解压
wget http://ftp.gnu.org/gnu/gdb/gdb-9.2.tar.xz # 下载
tar -xJf gdb-9.2.tar.xz # 解压
- 新建文件夹
cd gdb-9.2 # 切换到解压目录
mkdir build output # 新建文件夹,build-用于编译;output-用于安装编译输出文件
- 配置并编译
../configure --enable-targets=all --enable-64-bit-bfd --prefix=e:/gdb-9.2/output/
make
make install
问题
- 使用MinGW不使用Cygwin的原因:
参考:https://stackoverflow.com/questions/32232495/binutils-build-fails-because-of-pex-unix-file
cygwin类型host,编译会出pex-unix file选用的错误。同样的问题,在windows下编译gcc和binutils时也会出现
- 关于all-target和gdb远程调试
- 使用–enable-targets=all选项,使编译生成的GDB可以用于识别所有架构的可执行文件。
- 对于gdbserver + gdb的调试模式,gdbserver是依赖目标架构的,而作为client端的gdb则可以通过编译选项的配置,使其可以用于解析运行在所有target的可执行文件。
- 对于Linux端,
参考:https://stackoverflow.com/questions/25143757/arm-linux-gnueabihf-gdb-versus-gdb-multiarch
以Ubuntu为例,可以直接安装sudo apt-get install -y gdb-multiarch。
使用gdb-multiarch作为gdb client调试多种目标程序。