O Xcode mostra um erro ao tentar imprimir um objeto po <objectName>
, mas apenas para um projeto.
erro: Não foi possível materializar struct: size da variável <varName> discorda do tamanho do ValueObject Ocorreu um erro no Execute, não pôde PrepareToExecuteJITExpression
O depurador do Xcode também mostra TODOS os objetos como nil
( self
excluídos), quando não são ( NSLog
mostra a saída correta, como visto na imagem). Não sei o que há de errado com o projeto. Todos os outros projetos funcionam bem.
Alguma idéia do que poderia ser? (A limpeza do projeto não teve efeito.)
ios
objective-c
xcode
debugging
Binariano
fonte
fonte
NSString
s criou uma linha acima do ponto de interrupção!Respostas:
Tem certeza de que não está no "Modo de liberação"?
Para ver os valores das variáveis, você deve estar no "Modo de depuração" (clique no nome do seu projeto no canto superior esquerdo, perto dos botões iniciar / parar, depois em "Editar esquema ...", depois em "Executar" configurações e " Info ", depois" Build Configuration ". Aqui, defina" Debug ". Se estava em" Release ", é isso que você vê todos os nada).
fonte
debug configuration
?Build Settings
propriedade de implantaçãoStrip debug symbols during copy
definida como YES.Strip debug symbols during copy
toNO
e oOptimization Level
toNone -O0
no projeto #Build Settings
Eu configurei "Nível de otimização" para a configuração de depuração como "Nenhum" e resolveu o problema.
fonte
Fastest, Smallest[-Os]
e funcionou.Verifique se o Address Sanitizer está desativado nas configurações do seu esquema. O Sanitizer de endereço não funciona bem com o depurador.
fonte
Parece que todo mundo tem sua própria solução.
Para mim, eu uso
Objective-C
eSwift
ao mesmo tempo.Primeiro de tudo, vá
TARGETS -> Build Settings
e pesquise ocode generation
Você encontrará
Apple LLVM 6.0
eSwift Compiler
Mude
Optimization Level
tudo paraNone
, então Debug, você pode encontrar o valor nãonil
Surpreendentemente, depois de ver o valor, você resolve esse problema permanentemente e pode mudar o
Optimization Level
que costumava ser.fonte
Existem outras maneiras de isso ocorrer. Para mim, foi porque o valor "Other C Flags" foi definido como "-O2", mesmo para a compilação de depuração. Desativar isso para a compilação de depuração resolveu o problema.
fonte
Para mim, o Xcode estava filtrando a saída do depurador. Verifique se a configuração de saída é Saída do depurador ou Todas as saídas
fonte
Acabei de encontrar esse problema e descobri que era por causa
Deployment Postprocessing = YES
das configurações de compilação.Alterando isso para
NO
corrigi-lo, como visto na captura de tela abaixo:Versão Xcode: 6.0.1 (6A317) no OSX 10.9.5
fonte
Acabei de encontrar um problema semelhante: a certa altura, o depurador do Xcode imprimiu alguns tipos de objetos, especialmente os NSStrings como (null), embora tenham sido inicializados com um valor. Impresso via
o valor correto para o objeto foi mostrado.
Confuso! Resolver o problema foi bastante fácil: desliguei o Xcode e reiniciei o computador. Depois que reiniciei o Xcode, tudo funcionou bem novamente :).
fonte
Verifique se o
Link-Time Optimization = No
modo de depuração nas configurações de compilação.fonte
Isso é tudo o que preciso para mim.
fonte
As soluções aqui também corrigem o erro que você vê
error: <EXPR>:1:1: error: use of unresolved identifier
toda vez que tentapo
uma variável.Para mim, a solução foi
Build Settings
procurarOptimization Level
e garantir que cadaDebug
configuração estivesse definidaNone
.fonte
Vá para "Outros sinalizadores C" na configuração de compilação e defina o valor de depuração de -o2 a -O0
fonte
Eu corri para isso também e quando descobri que estava no modo de lançamento, mudei para depuração ... sem correção. Acontece que eu tive que fazer uma limpeza primeiro (cmd + shift + k).
Então, acho que o que acontece é que, depois do modo de lançamento integrado, nem tudo é recompilado no desenvolvimento e, portanto, o lldb não consegue ler corretamente os símbolos. Depois de limpar e recompilar o desenvolvimento, funcionou para mim.
fonte
A realidade é que o sistema deve funcionar imediatamente e não devido a links para uma quantidade múltipla de configurações diferentes, a um ponto em que as coisas podem funcionar para você ou não.
Por que o sistema não permite sempre a depuração quando no modo de depuração é um mistério que apenas a Apple pode responder (se eles se importaram, o que ultimamente eu duvido).
Afinal, a diferença entre depuração / não depuração seria tabelas extras com metadados que preenchem apenas memória / espaço em disco.
Se você estiver compilando diretamente com o simulador ou um dispositivo, não se importará com esses megabytes extras.
Portanto, precisamos executar loops extras para fazer uma coisa muito básica e simples que todos os ides que eu conheço desde o século passado funcionam bem.
E para adicionar, para mim, o que funcionou foi alterar em "Depurar" a Otimização do Tempo de Link de "Monolítico" para "Não" (xcode 8).
fonte