Gdb 在MAC上调试32位NACL exe?

Gdb 在MAC上调试32位NACL exe?,gdb,google-nativeclient,Gdb,Google Nativeclient,我希望在mac平台上调试32位nacl exe。我无法调试它,因为在mac平台上我找不到32位的nacl gdb。有人成功地做到了吗?GDB for Native Client是在Pepper 23中发布的,因此首先检查您是否正在使用Pepper 23版本的NaCl SDK或更新版本。(要下载SDK的任何新版本,请从nacl_SDK目录下发布/naclsdk update。下载完成后,您应该看到pepper_23目录(或更新的目录)。使用该目录中的工具。) 在SDK中,GDB二进制文件位于以下位

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

GDB for Native Client是在Pepper 23中发布的,因此首先检查您是否正在使用Pepper 23版本的NaCl SDK或更新版本。(要下载SDK的任何新版本,请从
nacl_SDK
目录下发布
/naclsdk update
。下载完成后,您应该看到
pepper_23
目录(或更新的目录)。使用该目录中的工具。)

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

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

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


这里有一些额外的指导。最重要的是将标志
--enable nacl debug
传递给Chrome,或者在Chrome中的about:标志下激活它。这将导致Chrome在执行本机客户端内容之前等待调试器连接。

您好,感谢您的快速回复。我之前已经遵循了这些步骤,但我遇到了一些问题。我使用的是1)chrome版本25.0.1364.5开发版2)NACL pepper_24 3)Newlib工具链4)创建的NACL和pnacl调试EXE。问题是1)我在我的机器上的任何地方都找不到本机客户端集成运行时(irt)文件。2) 我刚开始调试时提到了“target remote localhost:4014”,这给出了一个奇怪的输出,就像在中使用localhost:4014 0x0fc00200进行远程调试一样??()3)如果我按下一步,它会说“找不到当前函数的边界”这里出了什么问题?程序可能在IRT(NaCl的集成运行时)的某个地方。您应该仍然能够在自己的代码中设置断点、获取堆栈跟踪等。IRT附带了Chrome,因此请查看/Applications/Google Chrome.app/Contents/Versions/25.0.1364.4/Google Chrome Framework.Framework/Internet Plug-Ins/nacl_IRT_x86_32.nexe。使用命令
nacl-IRT
使调试器知道IRT。请参阅上面链接的调试指南中的步骤6。非常感谢您。。。这非常有帮助。圣诞快乐:-)
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