iOS (iPhone, iPad, iPodTouch) visualiza o terminal de registro do console em tempo real

123

Existe uma maneira de visualizar o log do console em tempo real para exibir o NSLog e outras mensagens de depuração de maneira em tempo real, como o adb logcat?

Arunabh Das
fonte
1
Você está dizendo que deseja um equivalente IOS Utilities/Console.app?
BryanH 01/09/11

Respostas:

155

A solução documentada pela Apple nas Perguntas e respostas técnicas QA1747 Depurando aplicativos iOS implantados para Xcode 6 é:

  1. Escolha Janela -> Dispositivos no menu Xcode.
  2. Escolha o dispositivo na coluna esquerda.
  3. Clique no triângulo superior na parte inferior esquerda do painel direito para mostrar o console do dispositivo.

Captura de tela com triângulo superior

Marián Černý
fonte
4
Na minha opinião, esta é a solução mais fácil.
Bart van Kuik
No Xcode 6.4, vejo um botão dizendo "Exibir registros do dispositivo", mas que me fornece registros de falhas. Não vejo uma maneira de obter o log do console.
Chris Prince
4
Eu adicionei uma captura de tela com o ícone de triângulo para cima.
Marián Černý
1
printinstruções não vão para o log, apenas para stdout. Use em NSLogvez disso. Ou talvez seja possível redirecionar stdoutpara um arquivo com algum código adicionado. Os travamentos são registrados e podem ser acessados ​​usando o botão "Exibir registros do dispositivo".
Marián Černý
3
Este botão foi desativado no xCode 9.3. Agora ele tem um botão "Console.app", que faz muito mais sentido.
RustyMagnet 9/04
79

EDIT: Use a solução @cbowns - o deviceconsole é compatível com iOS9 e muito mais fácil de usar.

Este é um programa de código aberto que exibe o log do sistema do iDevice no Terminal (de maneira semelhante à cauda -F). Não é necessário jailbreak, e a saída é totalmente aceitável, para que você possa filtrar para ver apenas a saída do seu programa. O que é particularmente bom nessa solução é que você pode visualizar o log, independentemente de o aplicativo ter sido iniciado ou não no modo de depuração do XCode.

Aqui está como:

Pegue o binário libimobiledevice para Mac OS X na minha conta do github em https://github.com/benvium/libimobiledevice-macosx/zipball/master

Siga as instruções de instalação aqui: https://github.com/benvium/libimobiledevice-macosx/blob/master/README.md

Conecte seu dispositivo, abra Terminal.app e digite:

idevicesyslog

Up exibe uma exibição em tempo real do log do sistema do dispositivo.

Por ser um aplicativo de console, você pode filtrar o log usando comandos unix, como grep

Por exemplo, veja todas as mensagens de log de um aplicativo específico:

idevicesyslog | grep myappname

Retirado do meu blog em http://pervasivecode.blogspot.co.uk/2012/06/view-log-output-of-any-app-on-iphone-or.html

Ben Clayton
fonte
4
Parece que isso não funciona com o simulador do iOS. Vadio. No device found, is it plugged in?
precisa saber é o seguinte
Não pode funcionar no iOS10. "usbmuxd_send: Erro -1 ao enviar: Tubo quebrado" Como resolvê-lo?
Victor Choy
2
Quando executo o idevicesys sem o sudo, recebo um erro enigmático sobre "Não foi possível iniciar o serviço com.apple.syslog_relay". Talvez dependa de como você o instala ou algo assim.
Bjorn Roche
Faça isso se ele não está funcionando para você ...brew uninstall libimobiledevice ideviceinstaller && brew install --HEAD libimobiledevice ideviceinstaller
Akshet
77

Duas opções:

O libimobiledevice é instalável via homebrew e funciona muito bem. Sua idevicesyslogferramenta funciona de maneira semelhante a deviceconsole(abaixo) e suporta a exibição sem fio do syslog do seu dispositivo (!)

Eu escrevi mais sobre isso no Tumblr tl; dr:

brew install libimobiledevice
idevice_id --list // list available device UDIDs
idevicesyslog -u <device udid>

com o dispositivo conectado via USB ou disponível na rede local sem fio.

A partir de 2013: deviceconsole de rpetrich é uma solução muito menos wacked-out do que ideviceconsole acima. Meu fork é compilado e executado no Xcode 5 imediatamente, e a ação Build instala o binário /usr/local/binpara facilitar o uso.

Como informações adicionais úteis, eu as uso no seguinte estilo, o que facilita a localização do dispositivo que desejo no meu histórico de shell e remove as >linhas desnecessárias que são deviceconsoleimpressas.

deviceconsole -d -u <device UDID> | uniq -u && echo "<device name>"
cbowns
fonte
Obrigado por este post. É exatamente o que eu estava procurando. Mal posso esperar para adicionar o iOS à minha ferramenta LogCat móvel da GUI: github.com/yepher/LogCat
Yepher
2
Isso é incrível - levou 2 minutos para compilar e executar. Essa deve ser a resposta aceita.
Nick Farina
Esta é uma solução adorável. E só queria acrescentar que a coleção ainda trabalha para iOS8 (como deveria!)
Kelly
1
@BugaBuga Verifique se você está usando as últimas libimobiledevice. (Wired e visualização de log sem fios estão a trabalhar com o meu Mac em 10.11 e meu iPhone no iOS 10.2)
cbowns
1
github.com/libimobiledevice/libimobiledevice/issues/356 . Use: brew install --HEAD libimobiledevice. Trabalhou para mim.
RustyMagnet # 9/18
21

Basta abrir o aplicativo Console.appno mac osX.

Você pode encontrá-lo em Applications> Utilities> Console.

No lado esquerdo do aplicativo, todos os seus dispositivos conectados estão listados.

einsA
fonte
2
Esta é uma otima soluçao. Eu posso usar o recurso Pesquisar para basicamente "grep" os registros ao vivo / "Agora" do meu dispositivo.
28418 Rob
14

Experimente o console iOS gratuito . Basta baixar, iniciar, conectar seu dispositivo - e pronto!

Peter Gluck
fonte
1
é interessante, mas não me permite escolher qual dispositivo exibir o log do console se eu tiver vários conectados ao Mac.
leolobato
tão simples e funciona muito bem no iOS 12, fico frustrado ao saber como o registro deve ser simples para um desenvolvedor e acabo aqui. Obrigado Peter
FreeAppl3 13/03/19
por que não Console.app[que é lançado originalmente no macOS]?
rustyMagnet 25/06
6

Pode ser o que você está procurando: Xcode Organizer

BryanH
fonte
Sim ... mas, por algum motivo, o console no Xcode Organizer é menos em tempo real porque está dentro de uma janela da GUI. Eu estava esperando por uma maneira de invocar o shell no dispositivo diretamente para tail -f <logfilename>
Arunabh Das
Você só pode obter um shell no dispositivo se estiver com jailbreak.
progrmr 02/09
Obrigado progrmr. Gostaria de aceitar sua resposta como a resposta correta. Você também pode postar links para obter instruções sobre como obter um shell em um dispositivo com jailbreak? Obrigado!!
Arunabh Das
@ArunabhDas Por favor, considere alterar a resposta aceita pela resposta idevicesyslog de Ben Clayton. Sua solução era exatamente o que eu procurava para depurar compras no aplicativo com um aplicativo iOS usando a plataforma CoronaSDK. O Xcode Organizer era lento e complicado para visualizar informações de log.
Anthony F
5

dispositivo> a saída do terminal está no aplicativo de configuração do iPhone

aqui: http://support.apple.com/kb/DL1465

cozinha
fonte
1
Esse link não é mais válido. Acredito que o nome atualizado do aplicativo é Apple Configurator e está disponível aqui: itunes.apple.com/us/app/apple-configurator/id434433123?mt=12 No entanto, é OS X 10.10+.
Thomasw
1
@ ThomasW: Infelizmente, o Apple Configurator parece não ter a capacidade de visualizar os logs do dispositivo, como o iPhone Configuration Utility faz / fez.
newenglander
1
Faz. Basta instalar ferramentas de automação no menu. krypted.com/iphone/…
Sune Kjærgård
2

Você tem três opções:

  • Xcode Organizer
  • Dispositivo jailbreak com syslogd + openSSH
  • Use o dup2 para redirecionar todos os STDERR e STDOUT para um arquivo e, em seguida, "tail -f" (esse último é mais um simulador, pois você fica com o mesmo problema de seguir um arquivo no dispositivo).

Portanto, para obter o 2º, você só precisa instalar o syslogd e o OpenSSH a partir do Cydia, reinicie o necessário após a inicialização do syslogd; Agora, basta abrir uma sessão ssh no seu dispositivo (via terminal ou massa no Windows) e digite "tail -f / var / log / syslog". E pronto, log do sistema sem fio em tempo real.

Se você quiser experimentar o 3º basta pesquisar on-line por "dup2", é uma chamada do sistema.

fbernardo
fonte
0

Para visualizar o console do seu dispositivo iOS no Safari no seu Mac (apenas Mac aparentemente):

  1. No seu dispositivo iOS, vá para Configurações> Safari> Avançado e ative o Web Inspector
  2. No seu dispositivo iOS, carregue sua página da web no Safari
  3. Conecte seu dispositivo diretamente ao seu Mac
  4. No seu Mac, se você ainda não tiver o menu Desenvolvedor do Safari ativado, vá para Preferências> Avançado e selecione "Mostrar menu Desenvolvimento na barra de menus"
  5. No seu Mac, vá para Desenvolver> [nome do seu dispositivo iOS]> [sua página da web]

O Inspetor do Safari aparecerá mostrando um console para o seu dispositivo iOS.

usuario
fonte
3
nós podemos ver o log do console do safari e não o log do aplicativo.
Gamma-Point
Isso funciona para o emulador ... Ainda não tentei com um dispositivo real.
sketchthat
0

Como alternativa, você pode usar uma ferramenta de log na tela , como ticker-log, para visualizar logs sem ter acesso (conveniente) ao console.

Jonathan.Brink
fonte