【问题标题】:Debugging 32 bit NACL exe on MAC?在 MAC 上调试 32 位 NACL exe?
【发布时间】:2012-12-24 10:15:39
【问题描述】:

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

【问题讨论】:

    标签: gdb google-nativeclient


    【解决方案1】:

    GDB for Native Client 是在 Pepper 23 中发布的,所以首先检查您使用的是 Pepper 23 版本的 NaCl SDK 或更新版本。 (要下载任何新版本的 SDK,请从您的 nacl_sdk 目录发出 ./naclsdk update。完成后,您应该会看到一个 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 位 .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 内容之前等待调试器连接。

    【讨论】:

    • 嗨克里斯蒂安,感谢您的快速回复。我之前已经遵循了这些步骤,但我遇到了一些问题。我正在使用 1)chrome 版本 25.0.1364.5 开发。 2)NACL Pepper_24 3)Newlib 工具链 4)创建了 nacl 和 pnacl 调试 exe。问题是 1) 我在我的机器上的任何地方都找不到 Native Client 集成运行时 (irt) 文件。 2)我刚刚通过提到“目标远程本地主机:4014”开始调试,这给出了一个奇怪的输出,比如远程调试使用本地主机:4014 0x0fc00200 in ?? () 3) 如果我按下 然后它说“找不到当前函数的边界”这里有什么问题?
    • 该程序可能位于 IRT(NaCl 的集成运行时)内部的某个位置。您仍然应该能够在自己的代码中设置断点、获取堆栈跟踪等。IRT 随 Chrome 一起提供,因此请查看 /Applications/Google Chrome.app/Contents/Versions/25.0.1364.4/Google Chrome Framework.framework/互联网插件/nacl_irt_x86_32.nexe。使用命令nacl-irt 使调试器了解 IRT。请参阅上面链接的调试指南中的第 6 步。
    • 非常感谢...非常有帮助。圣诞快乐 :-)
    猜你喜欢
    • 2012-09-17
    • 2013-06-26
    • 2016-01-29
    • 2013-06-02
    • 2014-12-16
    • 1970-01-01
    • 1970-01-01
    • 2013-03-29
    • 2018-02-03
    相关资源
    最近更新 更多