1

我已经构建了一个简单的NaCl应用程序。为了运行应用程序,我使用了Nacl开发人员指南中描述的技术2,这意味着不是运行本地服务器,而是将我的应用程序作为chrome的解压缩扩展加载。该应用程序运行良好。Chrome:将nacl-gdb附加到作为未打包的扩展程序加载的打包应用程序

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

  1. 我启用了“基于本地GDB客户端调试”标志的Chrome。
  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无法附加到我的应用程序。我尝试执行“目标exec /path/to/my.nexe”,但没有任何改变。 我在这里错过了什么吗?有没有其他的方式来调试应用程序加载为nacl-gdb的解压缩扩展?

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

感谢

+0

我得到了完全相同的问题与新建的Chrome/NaCl SDK与辣椒29.没有解决方案。 – mgiuca

+0

您是否在使用[本指南](http://www.chromium.org/nativeclient/how-tos/debuggingtips/debugging-with-nacl64-gdb/getting-started-with-x86-64-nacl-gdb)?我也是,但事实证明它已经过时了。 – mgiuca

回答

1

我假设你正在使用this guide,这让我更早使用为好。它已经过时了。 These are the real instructions。看起来,您连接调试器的方式已经完全更改,并且不再可以使用--nacl-gdb(即planned for removal)。您必须按照以下步骤手动连接调试器。

全指南here,但我会总结:

  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。)

+0

本指南是最新版本,但不包括正在作为解压缩扩展加载的应用程序的说明。例如,第三个项目符号((gdb)target remote localhost:4014)中的步骤不适用,因为我没有运行任何服务器来加载我的应用程序。 – user2433974

+0

它确实适用于打包的应用程序(实际上我是用它来做的)。我链接到的指南使用两个本地主机地址:4014和另一个;我编辑了另一个,因为它不适用于打包的应用程序。 localhost:4014是连接GDB客户端的GDB服务器的地址。它使用--enable-nacl-debug自动运行。 – mgiuca

+0

它似乎工作!谢谢mgiuca! – user2433974

相关问题