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

相關問題