2

编译并链接了一个 NaCl 模块后,我现在正在尝试调试它为什么似乎无法运行。不幸的是,该平台没有传递任何关于为什么什么都没有发生的信息。

我不敢相信我在问这个基本的问题,但是你必须做什么才能让一个 printf() 语句出现在 stdout/stderr 中?还是在 Javascript 控制台中?

是的,我已经阅读了有关调试的 SDK 页面并启用了所有数十个环境变量和标志,我已经将日志记录的详细程度提高到了最大值,而且绝对没有一个会产生最明显的差异。任何信息都不会出现在任何地方。

JS 控制台偶尔会打印“ServiceRuntime::Start (start failed)”行(也出现在标准输出中),但更多时候我什么也得不到。

NaCl SDK 版本是 28,我在 OS X Mavericks 上运行 Chrome 30。

用于使用 SDK 中的 Graphics 3D 示例启动 Chrome 的命令:

export NACL_EXE_STDERR=~/nacl_stderr.log
export NACL_EXE_STDOUT=~/nacl_stdout.log
open -a "Google Chrome" http://localhost:5103/api/graphics_3d/ --args --enable-logging --no-sandbox --vmodule=ppb*=4

这应该会生成大量日志记录,但永远不会创建日志文件。

4

1 回答 1

2

正如邮件列表中所讨论的那样,解决方案是确保您使用 Chrome 二进制文件的实际路径(例如,)调用 chrome(例如,从命令行),"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"而不是使用openshell 命令,因为open不给您标准输出/stderr 从它启动的应用程序中流式传输。

于 2013-11-04T17:31:09.753 回答