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

Depuração no iOS/macOS

Aqui descrevemos como depurar um build usando o Xcode, a IDE preferida da Apple para desenvolvimento em macOS e iOS.

Xcode

$ 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)"
  • Instale o app, seja com Xcode, iTunes ou ios-deploy
$ ios-deploy -b <AppName>.ipa
  • Obtenha a pasta .dSYM (isto é, os símbolos de debug)

    • Se não estiver usando extensões nativas, você pode baixar o arquivo .dSYM de d.defold.com

    • Se você estiver usando uma extensão nativa, a pasta .dSYM é gerada quando você compila com bob.jar. Apenas o build é necessário (sem archive ou empacotamento):

$ 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>

Criar projeto

Para depurar corretamente, precisamos ter um projeto e o código-fonte mapeado. Não estamos usando este projeto para compilar coisas, apenas para depurar.

  • Crie um novo projeto Xcode, escolha o template Game

    project_template

  • Escolha um nome (por exemplo, debug) e as configurações padrão

  • Escolha uma pasta onde salvar o projeto

  • Adicione seu código ao app

    add_files

  • Certifique-se de que “Copy items if needed” esteja desmarcado.

    add_source

  • Este é o resultado final

    added_source

  • Desative a etapa Build

    edit_scheme

    disable_build

  • Defina a versão de Deployment target para que ela não seja maior que a versão do iOS do seu dispositivo

    deployment_version

  • Selecione o dispositivo de destino

    select_device

Iniciar o depurador

Você tem algumas opções para depurar um app

  1. Escolha Debug -> Attach to process... e selecione o app ali

  2. Ou escolha Attach to process by PID or Process name

    select_device

  3. Inicie o app no dispositivo

  4. Em Edit Scheme, adicione a pasta .app como executável

Símbolos de debug

Para usar lldb, a execução precisa estar pausada

  • Adicione o caminho .dSYM ao lldb
(lldb) add-dsym <PathTo.dSYM>
![add_dsym](/manuals/images/extensions/debugging/ios/add_dsym.png)
  • Verifique se o lldb leu os símbolos com sucesso
(lldb) image list <AppName>

Mapeamentos de caminho

  • Adicione o código-fonte da engine (altere conforme sua necessidade)
(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
  • É possível obter a pasta de job a partir do executável. A pasta de job se chama job1298751322870374150, a cada vez com um número aleatório.
$ dsymutil -dump-debug-map <executable> 2>&1 >/dev/null | grep /job

  • Verifique os mapeamentos de código-fonte
(lldb) settings show target.source-map

Você pode verificar de qual arquivo-fonte um símbolo se originou usando

(lldb) image lookup -va <SymbolName>

Breakpoints

  • Abra um arquivo na visualização de projeto e defina um breakpoint

    breakpoint

Observações

Verificar UUID do binário

Para que o depurador aceite a pasta .dSYM, o UUID precisa corresponder ao UUID do executável sendo depurado. Você pode verificar o UUID assim:

$ dwarfdump -u <PathToBinary>