Chrome: подключение nacl-gdb к упакованному приложению, загружаемому как распакованное расширение

Я создал простое приложение NaCl. Для запуска приложения я использую метод 2, описанный в руководстве разработчика Nacl, что означает, что вместо запуска локального сервера я загружаю свое приложение как распакованное расширение для chrome. Приложение работает нормально до сих пор.

Теперь я хочу поэкспериментировать с nacl-gdb и подключить к нему свое приложение при запуске. В руководстве разработчика NaCl есть только инструкции о том, как подключить nacl-gdb к приложению, которое запускается с локальным сервером (метод 1). Я провел поиск в Интернете и пришел к следующему подходу, чтобы подключить nacl-gdb для приложения, которое запускается с помощью метода 2:

  1. Я включил флаг «Отладка на основе Native Client GDB» в Chrome.
  2. Я запустил хром из терминала следующим образом:
  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 не может подключиться к моему приложению. Я попытался выполнить «target exec /path/to/my.nexe», но ничего не изменилось. Я что-то упустил здесь? Есть ли другой способ отлаживать приложения, загруженные как распакованные расширения с помощью nacl-gdb?

Моя ОС — Ubuntu 12.04, и я использую перец_27 из nacl_sdk. Версия Chrome — 27.0.1453.93.

Спасибо


person user2433974    schedule 29.05.2013    source источник
comment
У меня возникла точно такая же проблема со свежесобранным Chrome/NaCl SDK с Pepper 29. Пока нет решения.   -  person mgiuca    schedule 04.06.2013
comment
Используете ли вы это руководство? Я тоже был, но оказалось, что он устарел.   -  person mgiuca    schedule 04.06.2013


Ответы (1)


Я предполагаю, что вы использовали это руководство, которым я также пользовался ранее. Это устарело. Это настоящие инструкции. Похоже, способ подключения отладчика полностью изменился, и больше нельзя использовать --nacl-gdb (то есть запланировано к удалению). Вы должны вручную подключить отладчик, выполнив следующие действия.

Полное руководство находится здесь, но резюмирую:

  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. Enter these commands into the gdb prompt:
    • (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.)

person mgiuca    schedule 04.06.2013
comment
Это руководство актуально, но не содержит инструкций для приложения, которое загружается как распакованное расширение. Например, шаг в третьей пуле ((gdb) target remote localhost: 4014) неприменим, потому что я не запускаю сервер для загрузки своего приложения. - person user2433974; 08.06.2013
comment
Это работает для упакованных приложений (на самом деле я использовал его для одного). В руководстве, на которое я ссылался, используются два адреса локального хоста: один 4014 и другой; Я отредактировал другой, потому что он не применяется к упакованным приложениям. localhost:4014 — это адрес сервера GDB, к которому подключается клиент GDB. Он запускается автоматически с --enable-nacl-debug. - person mgiuca; 09.06.2013