1

我已经构建了一个简单的 NaCl 应用程序。为了运行应用程序,我使用 Nacl Developer's guide 中描述的技术 2,这意味着我不是运行本地服务器,而是将我的应用程序加载为 chrome 的解压缩扩展。到目前为止,该应用程序运行良好。

现在我想试验 nacl-gdb 并在启动时将我的应用程序附加到它。在 NaCl 开发人员指南中,只有关于如何将 nacl-gdb 附加到使用本地服务器运行的应用程序的说明(技术 1)。我在互联网上进行了搜索,最终采用了以下方法,以便为使用技术 2 运行的应用程序附加 nacl-gdb:

  1. 我启用了 Chrome 的“基于本机客户端 GDB 的调试”标志。
  2. 我从这样的终端启动 chrome: ./chrome "--nacl-gdb=gnome-terminal -- /media/sdb1/leonidasbo/AncientRoot/nacl_sdk/pepper_27/toolchain/linux_x86_glibc/bin/x86_64-nacl-gdb"
  3. 当 Chrome 启动时,我导航到我的应用程序。

使用这种方法,当我打开我的应用程序时,Chrome 会自动启动 nacl-gdb。但是 nacl-gdb 尝试附加但没有成功。输出如下:

*此 GDB 配置为“--host=x86_64-unknown-linux-gnu --target=x86_64-nacl”。从 /opt/google/chrome/nacl_irt_x86_64.nexe 读取符号...(未找到调试符号)...完成。不知道怎么贴。尝试“帮助目标”。(gdb)*

似乎 gdb 无法附加到我的应用程序。我尝试执行“target exec /path/to/my.nexe”,但没有任何改变。我在这里错过了什么吗?有没有其他方法可以调试使用 nacl-gdb 作为解压扩展加载的应用程序?

我的操作系统是 Ubuntu 12.04,我使用的是 nacl_sdk 的pepper_27。Chrome 版本是 27.0.1453.93。

谢谢

4

1 回答 1

1

我假设您使用的是本指南,我之前也使用过。它已经过时了。这些是真正的指示。看来你附加调试器的方式已经完全改变了,再也不能使用了--nacl-gdb(即计划移除)。您必须按照以下步骤手动附加调试器。

完整指南在这里,但我会总结一下:

  1. 使用 启动 Chrome chrome --enable-nacl --enable-nacl-debug --no-sandbox --disable-hang-monitor
  2. 运行<NACL_SDK_ROOT>/toolchain/win_x86_newlib/bin/x86_64-nacl-gdb(不带参数)。
  3. 在 gdb 提示符中输入以下命令:
    • (gdb) nacl-manifest <path-to-your-.nmf-file>
    • (gdb) nacl-irt <CHROME-DIR>/nacl_irt_x86_64.nexe
    • (gdb) target remote localhost:4014

现在您可以正常使用 gdb 了。(如果您只想运行应用程序直到它崩溃,请键入 开始continue。)

于 2013-06-04T06:10:22.273 回答