0

我希望在 mac 平台上调试 32 位 nacl exe。我无法调试它,因为在 mac 平台上我找不到 32 位 nacl-gdb。有没有人成功做到过?

4

1 回答 1

1

GDB for Native Client 是在 Pepper 23 中发布的,所以首先检查您使用的是 NaCl SDK 的 Pepper 23 版本或更高版本。(要下载任何新版本的 SDK,./naclsdk update请从您的nacl_sdk目录发出。完成后,您应该会看到一个pepper_23目录(或更新的目录)。使用该目录中的工具。)

在 SDK 中,GDB 二进制文件位于以下位置(基于 Pepper 23 的示例):

nacl_sdk/pepper_23/toolchain/mac_x86_glibc/bin/i686-nacl-gdb
nacl_sdk/pepper_23/toolchain/mac_x86_glibc/bin/x86_64-nacl-gdb
nacl_sdk/pepper_23/toolchain/mac_x86_newlib/bin/i686-nacl-gdb
nacl_sdk/pepper_23/toolchain/mac_x86_newlib/bin/x86_64-nacl-gdb

这两者i686-nacl-gdb实际上只是两者的符号链接x86_64-nacl-gdb。二进制文件将x86_64-nacl-gdb允许您调试 32 位和 64 位 x86 NaCl 目标。但是,在 Mac 上,Chrome 始终是 32 位的,并且将始终运行 32-bit .nexe,即使您的操作系统或机器是 64 位的。

newlib 和 glibc 工具链都包含一整套工具;这就是为什么你有两个x86_64-nacl-gdb二进制文件。目前,这两者没有区别,但为了您自己的理智,在与构建所用工具相同的目录中使用 GDB 可能是最简单的。

https://developers.google.com/native-client/devguide/devcycle/debugging#gdb有一些额外的指导。最重要的是将标志传递--enable-nacl-debug给 Chrome 或在 Chrome 中的 about:flags 下激活它。这将导致 Chrome 在执行 Native Client 内容之前等待调试器连接。

于 2012-12-24T10:47:50.267 回答