Nada é impresso NSLog
no Xcode 8.0 beta (8S128d). printf
está inalterado
Este é meu código:
NSLog(@"hello from NSLog");
printf("hello from printf");
Aqui está o resultado do simulador iOS 9:
2016-06-17 09:49:10.887 calmapp-dev[28517:567025] hello from NSLog
hello from printf
Aqui está o resultado do simulador iOS 10:
hello from printf
Respostas:
Pode ser que você tenha adicionado a propriedade "OS_ACTIVITY_MODE": "disable" nas variáveis de ambiente do Scheme (para ocultar a saída do sistema operacional do simulador) e se esqueceu dela, e agora está executando em um dispositivo real.
No Xcode 8:
Apenas adicione
OS_ACTIVITY_MODE
e marque (Não adicione um valor)Resumo: Este é um bug do Xcode 8 + iOS10, podemos resolvê-lo desta forma:
Ao usar o simulador, adicione o Nome "OS_ACTIVITY_MODE" e o Valor "desabilitar" e marque-o.
Quando em um dispositivo real, apenas adicione "OS_ACTIVITY_MODE" e marque (Não adicione o valor). Você verá o NSLog no console Xcode8.
fonte
disable
pordefault
.Se você verificar as notas de lançamento do Xcode 8 beta , verá que diz:
fonte
o NSlog ou print realmente é executado, mas está oculto entre muitas outras saídas de depuração do console para resolver esse problema. Abra o Xcode8:
adicione "OS_ACTIVITY_MODE" e defina o valor para "desativar" e verifique-o.
clique em fechar
xcode9
adicione "OS_ACTIVITY_MODE" e defina o valor como "padrão" e verifique-o.
fonte
disable
pordefault
.Também não consigo ver a saída NSLog no dispositivo iOS 10 real. Se estiver usando dispositivos reais, você pode abrir a janela Dispositivos do Xcode (Shift + Command + 2) e ver os registros do dispositivo lá, mas é difícil olhar os registros do seu aplicativo porque o console mostra os registros do sistema e de todos os aplicativos.
(Estou usando o Xcode 7, então pode não ser um problema do Xcode, mas sim do iOS 10)
fonte
os_log
.Além disso, certifique-se de que o console esteja realmente visível no Xcode (ou seja, certifique-se de que o ícone do lado direito esteja destacado em azul, conforme a imagem abaixo). Depois de atualizar o Xcode, ele escondeu o console e me mostrou apenas a visualização Variáveis. Isso fez com que parecesse que
NSLog()
não estava funcionando corretamente, embora estivesse funcionando corretamente, eu simplesmente não conseguia ver a saída.fonte
Shift + ⌘ + C
Xcode versão 8.3.3Hmmm ... parece que a propriedade "OS_ACTIVITY_MODE": "disable" IMPEDE que o NSlog apareça no log do Xcode 9.
Desmarcar este valor em meu esquema restaurou meus logs.
fonte
Para qualquer um que vier a fazer isso no futuro. O motivo pelo qual o NSLog não imprime no syslog no iOS 10 e iOS 11 é devido à mudança da Apple para o registro unificado.
Você pode ver o WWDC falar sobre isso aqui: https://developer.apple.com/videos/play/wwdc2016/721/
Documentação aqui: https://developer.apple.com/documentation/os/logging
De 10 em diante, você deve usar os_log em vez de NSLog.
Como localizar os logs no disco: https://www.blackbagtech.com/blog/2017/09/22/accessing-unified-logs-image/
Para resumir, os logs estão localizados nos
/var/db/diagnostics
quais podem ser encontrados para uma VM em/Users/USERNAME/Library/Developer/CoreSimulator/Devices/SIMULATOR-GUID/data/var/db/
Copie todos os itens dentro
diagnostics
euuidtext
em uma única pasta (não inclua as pastas diagnósticos ou uuidtext apenas o que está dentro).Renomeie essa pasta
foldername.xarchive
.Abra-o em Console.app ou use o utilitário OSX
log
:log show <path to archive> --info --predicate <options>
fonte
Estou usando o Xcode 8, então também encontrei o mesmo problema. E resolvi esse problema adicionando
value = disable
o simulador, mas em uma máquina real eu não agrego valor.fonte
disable
pordefault
.OS_ACTIVITY_MODE
comdisable
oudefault
é diretoNSLog
mensagens não são mais exibidas quando eu atualizei para o Xcode 9.1 + iOS 11.1. Inicialmente, a resposta aceita me deu uma maneira de contornar isso usando o aplicativo Console e habilitando o Simulador ( veja a resposta de Lucas ).No aplicativo Console em
Action
Eu tentei selecionarInclude Debug Messages
e desmarcarInclude Info Messages
(para que o Console não seja inundado com mensagens do sistema).NSLog
as mensagens apareceram na janela do console no Xcode, mas não no aplicativo do console.Percebi que deveria haver uma maneira mais direta de
disable
ou habilitar (isto édefault
)NSLogs
graças ao comentário de Coeur em resposta a essa resposta. Na minha opinião é a melhor resposta porque configurarOS_ACTIVITY_MODE
paradisable
oudefault
fará mais sentido para iniciantes.fonte