我正在开发ARMv5主板,我正在尝试使用英特尔Mac OS X调试程序,
我在Linux上尝试没有任何问题(我使用gnueabi工具链编译了二进制文件),我在主板上运行了一个gdbserver并在主机上连接它,一切都很好。
但是在Mac OS X上它看起来要复杂得多,我想我也需要一个交叉编译的gdb用于ARM目标,但我不想安装所有的工具链。
由于Mac OS支持iOS远程调试,是否有可用于ARM远程调试的gdb?
还有一个问题:为什么我们需要一个交叉编译的调试器来进行远程调试?服务器和客户端不能简单地通过网络进行通信而不依赖于体系结构吗?
谢谢。
答案 0 :(得分:2)
您需要构建gdb
,不仅要为正确的体系结构配置,还要配置对象文件类型:请记住,MacOSX / Darwin使用MachO对象文件,而GNU / Linux系统使用ELF。
使用gdbserver
时,gdb
在开发主机上运行,并读取可执行文件和库,以构建与目标对应的符号映射。正是由于这个原因,Apple发布的gdb
- 为Darwin和MachO二进制文件构建 - 不起作用。
至于为什么事情是这样的,这是gdb
,binutils
和偶然gcc
的架构限制 - 所有这些都只能同时处理一个目标环境。
使用远程调试方案时,通常需要最小化链接流量和目标内存占用量。请记住,通信链接有时是低速串行线。出于这个原因,尽可能在开发主机上进行gdbserver
处理非常低级别的操作。
为MacOSX构建跨gdb环境不应构成任何特定问题。
答案 1 :(得分:1)
除非您使用Mach-O对象格式,否则Apple工具对您没用。您需要构建自己的工具链。如果您安装了Macport,这将很容易,因为它包含arm-elf-eabi工具链的端口。见http://www.macports.org/ports.php?by=name&substr=eabi