实际上,GDB 依靠 GNU binutils 来打开和反汇编二进制文件。因此,二进制格式的管理是通过libbfd.so
.
通常,MacOS X binutils 带有 Mach-O 管理,但也可能是您使用了有问题的包。或者,您也可以尝试在 MacOS X 以外的其他系统上打开 Mach-O,而在其他系统上,Mach-O 支持极少添加到默认包中。
获得 Mach-O 支持(以及 GNU binutils 中所有可能的格式和体系结构)的最佳方法是使用选项--enable-targets=all
.
就个人而言,我使用的是 Debian 不稳定版。我习惯于重新编译从源代码中获取的整个包。以下是要遵循的步骤:
将以下行添加到您的/etc/apt/sources.list
:
deb-src ftp://ftp.debian.org/debian/ unstable main contrib
更新您的软件包列表:
su -c 'apt-get update'
获取编译包所需的binutils
包:
su -c 'apt-get build-dep binutils'
获取binutils
包的来源:
apt-get source binutils
进入binutils
源码目录:
cd binutils-x.x.x/
在binutils-x.x.x/debian/rules
改写下面一行像这样(去除所有其他目标):
multiarch_targets = all
构建包(这可能需要很长时间):
dpkg-buildpackage -rfakeroot -us -uc
安装binutils-multiarch
软件包:
dpkg -i binutils-multiarch_x.x.x_amd64.deb