Falha do Xcode 4 para simbolizar o Crash Log

Acabei de atualizar meu Xcode para 4.0.1. Agora eu tenho um problema com a simbolização dos logs de travamento recebidos do meu testador e até do meu celular também.

Quando eu construo a distribuição AdHoc eu estou usando o esquema “Arhive”, então eu crio o arquivo * .ipa cantando com minhas credenciais de desenvolvedor.

É este o problema? E não consigo encontrar os arquivos dSym para essas construções AdHoc.

Além da resposta do coob, acho que adicionar esses diretórios à lista de ignorados do Spotlight (Preferências do Sistema → Spotlight → Privacidade) ajuda:

  • ~/Library/Developer/Xcode/DerivedData/ (artefatos de compilation do Xcode 4)
  • ~/Library/Application Support/iPhone Simulator/ (sistema de arquivos para o iPhone Simulator)

Como isso:

Configurações do Spotlight para suprimir arquivos .app inúteis

(Veja este post para mais detalhes.)

Atualização : de um comentário de joerick : “Isso funciona, mas também significa que o Instruments.app não conseguiu encontrar os símbolos de debugging, então eu tive que remover o DerivedData da lista de Privacidade para fazer alguns perfis.” – tenha isso em mente se você usar os Instrumentos.

Para mim, nem a linha 323 nem as exclusões do Spotlight corrigiram. Então eu rastreei os problemas em symbolicatecrash e publiquei uma versão corrigida no github . Basta replace / usr / local / bin / symbolicatecrash e seus relatórios de falhas do iOS começarão a simbolizar novamente.

Esse patch pode não funcionar em aplicativos para Mac, já que faz suposições sobre a estrutura do diretório .xcarchive que não parece conter aplicativos de desktop.

Edit : você ainda pode ter problemas se o Spotlight não tiver indexado seus arquivos. Você pode forçar um índice executando o seguinte em um terminal:

 mdimport ~/Library/Developer/Xcode/Archives/ 

Mais informações sobre solução de problemas aqui .

O script de simbolização está tendo um problema ao encontrar o binário / dSYM correto. Ele usa o Spotlight para fazer isso e frequentemente se conecta. Veja algumas coisas para tentar:

  1. Certifique-se de que o seu .app não tenha espaço nele.

  2. Pode ser encontrar a versão do seu aplicativo instalado no simulador (para trás, mas às vezes isso é feito para mim). Redefina seu simulador.

  3. Limpe seu diretório de construção.

Eu tive o mesmo problema hoje. Da minha pesquisa na web, há um problema com as bibliotecas armv6 que fazem com que o processo de simbolização falhe. Eu encontrei a resposta nos fóruns de desenvolvedores aqui .

Para aqueles sem access, você precisa criar uma cópia do script symbolicatecrash em /Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/ . Edite o arquivo e substitua o ‘die’ na linha 323 por um ‘print’ (é por isso que ele não está funcionando, o script falha aqui).

Em seguida, execute symbolicatecrash no seu log de falhas. Você verá o erro da linha 323, mas então simbolizará todas as suas linhas e variables. Ele ainda falha nas bibliotecas do sistema, mas fornece informações suficientes para corrigir seus próprios erros.

Espero que isto ajude.

Eu acho que tive esse problema, ou algo similar. O Xcode 4.0 não estava mostrando os símbolos de uma falha que eu tive de um testador. Pareceu-me corrigir isso abrindo o xarchive que eu havia criado e copiando o arquivo dsym de dentro dele (clique com o botão direito e ‘visualizar conteúdo do pacote’) para se sentar ao lado dele na pasta de arquivos. Não posso garantir que esta foi a solução – eu estava tentando várias outras soluções na época, mas sei que agora tenho os símbolos e não o fiz antes. Vale a pena tentar?

Para localizar um arquivo dSYM com base em seu ID em um log de falhas semelhante a este:

Imagens binárias: 0x100000000 – 0x100021ff7 + com.developer.foobar 1.1 (2) /Applications/FooBar.app/Contents/MacOS/FooBar

você pode fazer:

mdfind com_apple_xcode_dsym_uuids == D1B7F956-7D79-3D4D-BA53-E9EBB368A9F8

Para aplicativos OSX criados com “DWARF com dSYM”, você não precisa realmente do arquivo dSYM e pode usar a abordagem manual em https://developer.apple.com/library/content/technotes/tn2151/_index.html#//apple_ref / doc / uid / DTS40008184-CH1-SYMBOLICATE_WITH_ATOS

Além disso, para verificar o UID de um binário, você pode fazer algo como

 dwarfdump --uuid /Users/valexa/Desktop/GPSnote.app/GPSnote 

UUID: 6194D2B0-4E61-3834-AD15-C279EB1848XX (armv7)
UUID: D1B7F956-7D79-3D4D-BA53-E9EBB368A9F8 (armv7s)