编译并链接了一个NaCl模块后,我正在尝试调试它为什么看起来不会运行。不幸的是,平台没有传递任何关于为什么没有发生任何事情的信息。
我无法相信我会问这个基本的东西,但你需要做些什么才能让一个printf()语句出现在stdout / stderr中?或者在Javascript控制台中?
是的我已经阅读了SDK page about Debugging并启用了所有数十个环境变量和标志,我已经将日志记录详细程度提高到最大值,并且绝对没有一个使得最明显的差别。任何地方都没有任何信息。
有时JS控制台会打印“ServiceRuntime :: Start(start failed)”这一行(也出现在stdout中),但更常见的是我什么都没得到。
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
这应该会产生大量的日志记录,但永远不会创建日志文件。
答案 0 :(得分:2)
正如mailing list所讨论的,解决方案是确保使用Chrome二进制文件的实际路径(例如,"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
)而不是使用Chrome来调用chrome(例如,从命令行) open
shell命令,因为open
没有从它启动的应用程序中提供stdout / stderr流。