Manuals
Manuals




This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English

Отладка на iOS/macOS

Здесь мы описываем, как отлаживать сборку с помощью Xcode, предпочитаемой компанией Apple IDE для разработки под macOS и iOS.

Xcode

  • Соберите бандл приложения с помощью утилиты bob с ключом --with-symbols
$ cd myproject
$ wget http://d.defold.com/archive/<sha1>/bob/bob.jar
$ java -jar bob.jar --platform armv7-darwin build --with-symbols --variant debug --archive bundle -bo build/ios -mp <app>.mobileprovision --identity "iPhone Developer: Your Name (ID)"
  • Установите приложение с помощью Xcode, iTunes или ios-deploy
$ ios-deploy -b <AppName>.ipa
  • Получите папку .dSYM (т.е. отладочные символы)

    • Если приложение не использует нативные расширения, вы можете скачать файл .dSYM с сайта d.defold.com

    • Если вы используете нативные расширения, то папка .dSYM генерируется при сборке с помощью утилиты bob.jar. Требуется только сборка (без архивации и бандлинга):

$ cd myproject
$ unzip .internal/cache/arm64-ios/build.zip
$ mv dmengine.dSYM <AppName>.dSYM
$ mv <AppName>.dSYM/Contents/Resources/DWARF/dmengine <AppName>.dSYM/Contents/Resources/DWARF/<AppName>

Создание проекта

Для правильной отладки нам нужен проект и сопоставленный исходный код. Мы не используем этот проект для сборки, а только для отладки.

  • Создайте новый проект Xcode, выберите шаблон Game

    project_template

  • Выберите имя (например, debug) и настройки по умолчанию

  • Выберите папку для сохранения в неё проекта

  • Добавьте свой код в приложение

    add_files

  • Убедитесь, что флажок «Copy items if needed» снят.

    add_source

  • Таков конечный результат

    added_source

  • Отключите шаг Build

    edit_scheme

    disable_build

  • Установите версию Deployment target, чтобы она была больше, чем версия вашего iOS устройства.

    deployment_version

  • Выберите целевое устройство

    select_device

Запуск отладчика

У вас есть несколько вариантов отладки приложения

  1. Либо выберите Debug -> Attach to process... и выберите оттуда приложение.

  2. Либо выберите Attach to process by PID or Process name.

    select_device

  3. Запустите приложение на устройстве

  4. В Edit Scheme добавьте папку .app в качестве исполняемого файла

Отладочные символы

Чтобы использовать lldb, выполнение должно быть приостановлено

  • Добавьте путь .dSYM к lldb
(lldb) add-dsym <PathTo.dSYM>
![add_dsym](/manuals/images/extensions/debugging/ios/add_dsym.png)
  • Убедитесь, что lldb успешно прочитал символы
(lldb) image list <AppName>

Сопоставления путей

  • Добавьте исходный код движка (подправьте путь по своему усмотрению)
(lldb) settings set target.source-map /Users/builder/ci/builds/engine-ios-64-master/build /Users/mathiaswesterdahl/work/defold
(lldb) settings append target.source-map /private/var/folders/m5/bcw7ykhd6vq9lwjzq1mkp8j00000gn/T/job4836347589046353012/upload/videoplayer/src /Users/mathiaswesterdahl/work/projects/extension-videoplayer-native/videoplayer/src
  • Возможно получить папку с задачами из исполняемого файла. Папка задачи называется job1298751322870374150, каждый раз это имя со случайным номером. ```sh $ dsymutil -dump-debug-map 2>&1 >/dev/null | grep /job

* Проверьте сопоставления исходников

(lldb) settings show target.source-map


Вы можете проверить, из какого исходного файла происходит отладочный символ, используя команду

(lldb) image lookup -va


### Точки останова

* Откройте файл в project view и установите точку останова 

	![breakpoint](/manuals/images/extensions/debugging/ios/breakpoint.png)

## Примечания

### Проверка UUID бинарного файла

Чтобы отладчик пустил папку `.dSYM`, UUID должен совпадать с UUID отлаживаемого исполняемого файла. Вы можете проверить UUID так:

```sh
$ dwarfdump -u <PathToBinary>