我已经构建了一个简单的NaCl应用程序。为了运行应用程序,我使用Nacl Developer's guide中描述的技术2,这意味着我将应用程序加载为chrome的解包扩展,而不是运行本地服务器。到目前为止,该应用程序运行良好。
现在我想尝试使用nacl-gdb并在启动时将我的应用程序附加到它。 在NaCl开发人员指南中,只有关于如何在使用本地服务器运行的应用程序上附加nacl-gdb的说明(技术1)。我搜索到了互联网,我最终得到了以下方法,以便为使用技术2运行的应用程序附加nacl-gdb:
通过这种方法,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。
由于
答案 0 :(得分:1)
我假设您使用的是this guide,我之前也在使用它。它已经过时了。的 These are the real instructions 即可。您附加调试器的方式似乎已完全更改,并且不再可能使用--nacl-gdb
(即planned for removal)。您必须按照以下步骤手动附加调试器。
完整指南是 here ,但我会总结一下:
chrome --enable-nacl --enable-nacl-debug --no-sandbox --disable-hang-monitor
启动Chrome。<NACL_SDK_ROOT>/toolchain/win_x86_newlib/bin/x86_64-nacl-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
。)