2012-03-10 53 views
2

我正在嘗試使用最新的Google NaCl SDK。在https://developers.google.com/native-client/pepper18/devguide/tutorial樣品在Google NaCl中不起作用rev 18

依照指示操作,我從他們的網站下載的naclsdk工具,跑了更新,並得到了pepper_18文件夾。

我將NACL_SDK_ROOT設置爲pepper_18文件夾,進入「示例」並運行make。一切似乎編譯得很好。

我開始使用Chrome瀏覽器,查看about:flags和about:插件,並驗證NaCl已啓用。我安裝了SDK示例應用程序(來自:https://developers.google.com/native-client/pepper18/sdk/examples),並且工作得很好。

然後我試圖運行我的本地製造和託管的例子,要http://localhost:5301的HTML加載罰款,但NaCl含量不加載。在hello world的例子中,它永遠說「Status:LOADING ...」。

我仔細檢查了HTTP服務器日誌,我沒有看到任何錯誤。是否有另一個地方我應該尋找記錄錯誤?

回答

2

檢查版本不匹配

在Chrome中瀏覽到關於:版本,並檢查瀏覽器的主版本至少是你用來建立自己的例子辣椒版本。

檢查JavaScript控制檯在Chrome中的任何錯誤

您可以通過點擊右上角的角落裏的扳手圖標,在Chrome和選擇工具找到它 - > JavaScript控制檯。

檢查用於進一步信息

NaCl的模塊中的JavaScript控制檯,還可以檢查的NaCl模塊的嵌入元件。例如,如果嵌入標籤有id="nacl_module"您可以通過鍵入

檢查它

theModule =的document.getElementById( 'nacl_module');

theModule.lastError;

檢查Chrome輸出到標準輸出/標準錯誤

在Mac或Linux從終端開始的Chrome,並期待在控制檯上的輸出。例如,在Mac上,你通常去

/應用/谷歌\ Chrome.app/Contents/MacOS/Google \鉻--enable-NaCl的

在Windows,Chrome不如果從命令提示符啓動,則寫入終端。出於這個原因,您需要通過設置環境變量NACLLOG,NACL_EXE_STDOUT和NACL_EXE_STDERR來從Chrome重定向stdout/stderr。它們指向不同文件,例如,

NACLLOG = C:\ MY_PROJECT \ NaCl中。登錄

NACL_EXE_STDOUT = C:\ MY_PROJECT \ nacl_stdout.log

NACL_EXE_STDERR = C:\ MY_PROJECT \ nacl_stderr.log

然後(重新)啓動瀏覽器(確保這些環境變量在影響)。

連接調試器使用調試支持(目前只有64位Windows和64位Linux)可在https://developers.google.com/native-client/pepper18/beta-docs/debugging

說明。

重新啓動瀏覽器的封閉裝置,所有窗口

當Native Client的一個發展往往會重新啓動瀏覽器。關閉所有Chrome窗口非常重要;否則它實際上沒有重新啓動。

+1

感謝您的真棒答案!事實證明,它與Chrome 17的版本不匹配。我切換到pepper_16並且工作正常。 – andy 2012-03-13 01:33:20

+0

@West,我看到這個http://i.stack.imgur.com/l47Sg.png但爲什麼'document.getElementById('nacl_module');'給null? – Pacerier 2016-08-08 12:00:42

0

你確定你已經從示例文件夾運行httpd.py了嗎?該腳本創建可以從中運行應用程序的localhost:5103服務器。

此外,您使用的是什麼操作系統?

〜主要

1

我通過,我將在案例文檔中的幾個問題懵懵懂懂,他們幫助別人:

  • 忽略了「讓」的例子(得到線索,從提問者的描述讓他們)。
  • Chrome不會讓我運行非商店Chrome應用程序。去到chrome://flags並啓用Native ClientNative Client GDB-based debugging
  • JavaScript控制檯表示在.../debug /下缺少demo的nmf文件。我根據this更改了make config以構建Debug而不是Release。
  • Chrome控制檯抱怨NativeClient: NaCl module load failed: ServiceRuntime: failed to start; NaCl's GDB debug stub requires --no-sandbox flag on Windows. See crbug…。嘗試從cmd運行Chrome瀏覽器--no-sandbox。這導致了一個警報You are using an unsupported command-line flag: --nosandbox. Stability and security will suffer.上述錯誤消失了,但例子仍然不會運行 - 沒有用戶界面。
  • 回到chrome://flags並禁用Native Client GDB-based debugging

然後大部分的例子工作。 Google Drive演示投訴Error: must be run as a packged app.