2

我正在 ARMv5 板上开发,我正在尝试使用 intel Mac OS X 在其上调试程序,

我在 Linux 上尝试没有任何问题(我使用 gnueabi 工具链编译了二进制文件),我在板上运行了一个 gdbserver 并在主机上连接到它,一切都很好。

但是在 Mac OS X 上似乎要棘手得多,我想我也需要一个交叉编译的 gdb 用于 ARM 目标,但我不想安装所有工具链。

既然 Mac OS 支持 iOS 远程调试,难道没有一个 gdb 可以用于 ARM 远程调试吗?

还有一个问题:为什么我们需要一个交叉编译的调试器来进行远程调试?不依赖于架构,服务器和客户端不能简单地通过网络进行通信吗?

谢谢你。

4

2 回答 2

3

gdb不仅需要为正确的架构配置构建,而且还需要对象文件类型:请记住,MacOSX/Darwin 使用 MachO 对象文件,而 GNU/Linux 系统使用 ELF。

使用时gdbservergdb在开发主机上运行,​​并读取可执行文件和库以构建与目标对应的符号映射。正是出于这个原因,gdbApple 发布的为 Darwin 和 MachO 二进制文件构建的版本无法正常工作。

至于为什么事情是这样的,这是一个架构限制gdbbinutils顺便说一句gcc- 所有这些都只能一次处理一个目标环境。
对于远程调试场景,通常需要最小化链接流量和目标内存占用。请记住,通信链路有时是低速串行线路。出于这个原因,尽可能在开发主机上完成gdbserver非常低级别的操作。

为 MacOSX 构建跨 gdb 环境不应该带来任何特殊问题。

于 2013-02-06T23:57:29.413 回答
1

除非您使用 Mach-O 对象格式,否则 Apple 工具对您几乎没有用处。您将需要构建自己的工具链。如果您安装了 Macports,这将很容易,因为它包含 arm-elf-eabi 工具链的一个端口。见http://www.macports.org/ports.php?by=name&substr=eabi

于 2013-02-07T03:06:09.610 回答