Pergunta

Estou tentando usar o Symbolicatecrash e tendo resultados interessantes. Um colega de trabalho construiu nossa distribuição construída em outra máquina, então ele me enviou o arquivo DSYM. Depois de executar o arquivo symbolicatecrash encontrado em

/Developer/platforms/iphoneos.platform/developer/library/privateframeworks/dtdevicekit.framework/versions/a/resources/symbolicatecrash

Ele preenche todas as funções da Apple, mas não as minhas. O problema parece ser que ele não pode (ou não) localizar o arquivo DSYM, potencialmente porque possui as informações da máquina do meu colega de trabalho. Quando copio o endereço hexadecimal do relatório do acidente, posso usar o Dwarfdump assim:

Dwarfdump -LOOKUP 0X0001F892 -ARMA ARMV6 PATH/TO/MYAPP.APP.DSYM

Isso me dá o número da linha dessa chamada correta corretamente. Além disso, o Symbolicatecrash é capaz de descobrir os números de linha do jogo do nosso código, mas não da Apple. Não sei por que ele não pode ver as coisas da Apple, mas tudo isso me leva a acreditar que o problema é encontrar o DSYM, como mencionado anteriormente.

Então. Existe alguma maneira de passar o caminho do DSYM para o comando Symbolicatecrash ou alguma outra maneira de fazê -lo funcionar? Porque, sério, é completamente burro criar uma ferramenta que faça algum tipo de "pesquisa" mágica pelo seu arquivo, apenas para não encontrá -lo porque não deseja.

Além disso, alguma idéia de por que a construção do meu colega de trabalho não mostrará nenhuma das funções da Apple? E enquanto estou aqui, o que o "+" significa no arquivo de falha? Assim:

0x00059F8C -[UIWindow sendEvent:] + 108

Foi útil?

Solução

Symbolicatecrash é um hack gigante, o melhor que você pode fazer é aprender a fazer as coisas exatamente como espera de você. Ou leia seus internos e conserte, mas você teria que prepará-lo novamente para a próxima atualização do SDK ...

Nesse caso, acho que seu problema é que você não colocou o arquivo DSYM na mesma pasta que o pacote de aplicativos. Tem que ser exatamente como o Xcode deixou -o e deve estar em um local onde o Spotlight o encontrará. Além disso, verifique se os nomes são exatamente como o esperado - o invólucro exato de "dsym" é importante e ouvi dizer que nenhum ponto é suportado no nome do aplicativo devido a um bug.

Em caso de dúvida, tente sempre a opção -v para obter uma mensagem de erro mais detalhada.

Não há informações sobre o número de linha para os binários da Apple, pessoalmente estou super feliz em obter pelo menos os nomes de funções. Poderia ter sido pior.

Em "-[uiwindow sendEvent:] + 108" significa 108 bytes desde o início da função. A única interpretação útil desses dados é que, se o número for pequeno, provavelmente será preciso, se o número for grande, sua simbolicação estiver fora de controle.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top