O organizador do Xcode 5 tinha uma visão que listaria todos os logs de falhas. e podemos arrastar soltar os logs de falhas aqui. Mas desde o Xcode 6, eu sei que eles tiraram os dispositivos da organização e têm uma nova janela para o mesmo. Mas não encontro um local onde visualizo os logs de falhas que arrastei e soltei no Xcode 5 depois de subir para o Xcode 6. Alguém sabe a resposta?
188
Respostas:
Ok, eu percebi que você pode fazer isso:
Xcode > Window > Devices
, selecione um iPhone / iPad / etc conectado superior esquerdo.Você provavelmente tem muitos logs lá e, para facilitar a localização posterior do log importado, basta seguir em frente e excluir todos os logs neste momento ... a menos que eles signifiquem dinheiro para você. Ou, a menos que você saiba o ponto exato em que a falha ocorreu - ela deve estar escrita no arquivo de qualquer maneira ... eu sou preguiçoso, então apago todos os logs antigos (isso levou um tempo).
fonte
.crash
.Escrevendo esta resposta tanto para a comunidade quanto para mim.
Se houver problemas simbolizando um relatório de falha, é possível superá-los da seguinte maneira:
Crie uma pasta separada, copie
Foo.app
eFoo.app.dSYM
do correspondente.xcarchive
para a pasta. Copie também o.crash
relatório para a pastaAbra o relatório de falha no TextEdit ou em outro local, vá para a
Binary Images:
seção e copie o primeiro endereço (por exemplo0xd7000
).cd
para a pasta Agora você pode executar o seguinte comando:xcrun atos -o Foo.app/Foo -arch arm64 -l 0xd7000 0x0033f9bb
Isso simboliza o símbolo no endereço
0x0033f9bb
. Certifique-se de escolher o valor correto para a-arch
opção (pode ser obtido na primeira linha daBinary Images:
seção ou descobertoHardware Model:
no relatório de falha e nos arcos suportados pelo aplicativo).Você também pode copiar os endereços necessários (por exemplo, uma pilha de chamadas de linha) do relatório de falha diretamente para um arquivo de texto (no TextEdit, mantenha pressionada a tecla Option e selecione o bloco de texto necessário, ou copie e recorte), para obter algo assim:
Agora você pode salvar isso em um arquivo de texto, por exemplo
addr.txt
, e executar o seguinte comando:Isso dará uma boa simbolização para todos os endereços de uma só vez.
PS
Antes de fazer o acima, vale a pena verificar se tudo está configurado corretamente (como
atos
felizmente informará algo para basicamente qualquer endereço fornecido).Para fazer a verificação, abra o relatório de falha e vá para o final da pilha de chamadas para
Thread 0
. A primeira linha do final para listar seu aplicativo (geralmente a segunda), por exemplo:deve ser a
main()
chamada. Simbolizar o endereço (0x0033f9bb
neste caso), como descrito acima, deve confirmar que esse é realmentemain()
um método ou função aleatória.Se o endereço não for esse
main()
, verifique seu endereço de carregamento (-l
opção) e arco (-arch
opção).PPS
Se o procedimento acima não funcionar devido ao código de bit , faça o download do dSYM para sua compilação no iTunes Connect, extraia o binário executável do dSYM (Finder> Mostrar conteúdo do pacote), copie-o no diretório e use-o (por
Foo
exemplo, argumento paraatos
, em vez deFoo.app/Foo
.fonte
xcrun dwarfdump --uuid <path to executable>
./symbolicate.sh mycrash.crash MyApp.app arch64 output.crash
Somente ele simboliza o relatório completo de falha e fornece a versão simbolizada dele. gist.github.com/nathan-fiscaletti/…Você pode consultar este também, eu escrevi o procedimento passo a passo da Re-Simbolização manual de falhas.
Re-simbolização de falhas
PASSO 1
Mova todos os arquivos acima (MyApp.app, MyApp-dSYM.dSYM e MyApp-Crash-log.crash) para uma pasta com um nome conveniente onde quer que você possa usar o Terminal com facilidade.
Para mim, o Desktop é o local mais facilmente acessível;) Então, eu mudei esses três arquivos para uma pasta MyApp no Desktop.
PASSO 2
Agora é a vez do Finder, vá para o caminho a seguir, o que for aplicável à sua versão do XCODE.
Use este comando para encontrar o
symbolicatecrash
arquivo de script,find /Applications/Xcode.app -name symbolicatecrash
Xcode 8, Xcode 9, Xcode 11
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
Xcode 7.3
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
XCode 7
/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash
Xcode 6
/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources
Inferior ao Xcode 6
Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources
Ou
Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources
ETAPA 3
Adicione o diretório do arquivo de script symbolicatecrash encontrado à
$PATH
variável env como esta:sudo vim /etc/paths.d/Xcode-symbolicatecrash
e cole o diretório do arquivo de script e salve o arquivo. Ao abrir um novo terminal, você pode ligarsymbolicatecrash
para qualquer pasta como comandos localizados em/usr/bin
.Ou
Copie o arquivo symbolicatecrash desse local e cole-o no Desktop / MyApp (Aguarde ... Não me siga cegamente, estou colando o arquivo sybolicatecrash na pasta MyApp, que você criou na etapa um do seu local favorito, com três arquivos. )
PASSO 4
Abra Terminal e CD na pasta MyApp.
- Pressione Enter
- Pressione Enter
É isso aí !! Logs simbolizados estão no seu terminal ... agora o que você está esperando? Agora, simplesmente, descubra o erro e resolva-o;)
Feliz codificação !!!
fonte
xcode-select --print-path
Para mim, o arquivo .crash foi suficiente. Sem os arquivos .dSYM e .app.
Eu executei estes dois comandos no mac onde construí o arquivo e funcionou:
fonte
Existe uma maneira mais fácil de usar o Xcode (sem usar ferramentas de linha de comando e procurar endereços um de cada vez)
Pegue qualquer arquivo .xcarchive. Se você tiver um antes, você pode usá-lo. Se você não tiver um, crie um executando o Produto> Arquivar do Xcode.
Clique com o botão direito do mouse no arquivo .xcarchive e selecione 'Mostrar conteúdo do pacote'
Copie o arquivo dsym (da versão do aplicativo que falhou) na pasta dSYMs
Copie o arquivo .app (da versão do aplicativo que falhou) na pasta Produtos> Aplicativos
Edite o Info.plist e edite o CFBundleShortVersionString e CFBundleVersion no dicionário ApplicationProperties. Isso ajudará você a identificar o arquivo posteriormente
Clique duas vezes no arquivo .xcarchive para importá-lo para o Xcode. Deve abrir o Organizer.
Volte para o log de falha (na janela Dispositivos no Xcode)
Arraste o arquivo .crash para lá (se ainda não estiver presente)
Todo o log de falha agora deve ser simbolizado. Caso contrário, clique com o botão direito do mouse e selecione 'Re-simbolizar o log de falhas'
fonte
Siga estas etapas no Xcode 10 para simbolizar um log de falha de uma compilação de aplicativo na mesma máquina:
fonte
Se você tiver o arquivo .dSYM e o arquivo .crash na mesma subpasta, siga estas etapas:
$ atos -arch arm64 -o TheElements.app.dSYM/Contents/Resources/DWARF/TheElements -l 0x1000e4000 0x00000001000effdc -[AtomicElementViewController myTransitionDidStop:finished:context:]
Fonte autorizada: https://developer.apple.com/library/content/technotes/tn2151/_index.html#//apple_ref/doc/uid/DTS40008184-CH1-SYMBOLICATE_WITH_ATOS
fonte
Verifique se o nome do seu aplicativo Xcode não contém espaços. Esta foi a razão pela qual não funcionou para mim. Então
/Applications/Xcode.app
funciona, enquanto/Applications/Xcode 6.1.1.app
não funciona.fonte
Xcode 11.2.1, dezembro de 2019
**
**
Poderemos ver logs de falhas simbolizados por lá
Consulte o link para obter mais detalhes sobre os logs de simbolização de falhas
fonte
Dos documentos da Apple:
Simbolizando relatórios de falhas com o Xcode O Xcode tentará automaticamente simbolizar todos os relatórios de falhas que encontrar. Tudo o que você precisa fazer para simbolizar é adicionar o relatório de falha ao Xcode Organizer.
O Xcode simboliza automaticamente o relatório de falha e exibe os resultados Para simbolizar um relatório de falha, o Xcode precisa localizar o seguinte:
O arquivo binário e dSYM do aplicativo com falha.
Os binários e arquivos dSYM para todas as estruturas personalizadas às quais o aplicativo se vincula. Para estruturas criadas a partir da origem com o aplicativo, seus arquivos dSYM são copiados no arquivo morto ao lado do arquivo dSYM do aplicativo. Para estruturas criadas por terceiros, você precisará solicitar ao autor o arquivo dSYM.
Símbolos para o sistema operacional em que o aplicativo estava sendo executado quando falhou. Esses símbolos contêm informações de depuração para as estruturas incluídas em uma versão específica do sistema operacional (por exemplo, iOS 9.3.3). Os símbolos do SO são específicos da arquitetura - uma versão do iOS para dispositivos de 64 bits não inclui símbolos armv7. O Xcode copia automaticamente os símbolos do SO de cada dispositivo conectado ao seu Mac.
Se algum destes itens estiver ausente, o Xcode pode não ser capaz de simbolizar o relatório de falha ou apenas parcialmente representar o relatório de falha.
fonte
O processo mais fácil para simbolizar os logs de falha:
Aguarde 5 segundos. Bang! as chamadas do aplicativo no rastreamento da pilha serão simbolizadas! Você ainda pode ver muitos símbolos! essas são chamadas de biblioteca e estrutura internas.
Este é o mais fácil, experimentado e testado!
fonte
**
**
Poderemos ver logs de falhas simbolizados por lá
Consulte o link para obter mais detalhes sobre os logs de simbolização de falhas
fonte