gdb-multiarch 分段错误

逆向工程 数据库 奇木
2021-06-14 23:08:31

我已经按照使用 QEMU/工具链交叉调试 MIPS ELF的指南来交叉编译一个简单的 hello world 应用程序,但是由于某种原因,我在使用 gdb-multiarch 打开它时遇到了分段错误。

我从指南中遵循的确切步骤

$ sudo apt-get install libc6-mipsel-cross      # For MIPS-EL
$ sudo apt-get install gcc-mipsel-linux-gnu     # For MIPS-EL on Ubuntu 16.04
$ sudo mkdir /etc/qemu-binfmt
$ sudo ln -s /usr/mipsel-linux-gnu /etc/qemu-binfmt/mipsel # MIPSEL
$ mipsel-linux-gnu-gcc -xc -static -o mipsel-test hello.c
$ gdb-multiarch mipsel-test

运行文件

mipsel-test: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), statically linked, for GNU/Linux 3.2.0, BuildID[sha1]=27b56a9e12c8e083759f25699b624a87e8c3d86a, not stripped

运行 gdb-multiarch 的输出

$ gdb-multiarch ./mipsel-test 
GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.5) 7.11.1
版权所有 (C) 2016 Free Software Foundation, Inc.
许可证 GPLv3+:GNU GPL 版本 3 或更高版本 
这是免费软件:您可以自由更改和重新分发它。
在法律允许的范围内,不提供任何保证。输入“显示复制”
和“显示保修”了解详情。
这个 GDB 被配置为“x86_64-linux-gnu”。
键入“show configuration”以获取配置详细信息。
有关错误报告的说明,请参阅:
.
在线查找 GDB 手册和其他文档资源:
.
如需帮助,请键入“帮助”。
输入“apropos word”以搜索与“word”相关的命令...
从 ./mipsel-test...读取符号...分段错误(核心转储)

输出运行 gdb

$ gdb mipsel-test 
GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.5) 7.11.1
版权所有 (C) 2016 Free Software Foundation, Inc.
许可证 GPLv3+:GNU GPL 版本 3 或更高版本 
这是免费软件:您可以自由更改和重新分发它。
在法律允许的范围内,不提供任何保证。输入“显示复制”
和“显示保修”了解详情。
这个 GDB 被配置为“x86_64-linux-gnu”。
键入“show configuration”以获取配置详细信息。
有关错误报告的说明,请参阅:
.
在线查找 GDB 手册和其他文档资源:
.
如需帮助,请键入“帮助”。
输入“apropos word”以搜索与“word”相关的命令...
从 mipsel-test 读取符号...(未找到调试符号)...完成。
1个回答

gdb 中似乎存在一些错误,导致它在从文件中读取符号时崩溃。您可以尝试调试崩溃(例如gdb --args gdb-multiarch ./mipsel-test),但这更多是编程问题而不是 RE,因此我建议您为此使用 GDB 支持渠道,或者至少在 SO 上而不是在此处询问。