Tentar entrar no código AFNetworking gera o seguinte aviso:
[Project Name] was compiled with optimization - stepping may behave oddly; variables may not be available.
E é claro que não consigo depurar o código. Para ser específico, estou tentando depurar uma UIImageView+AFNetworking
categoria que parece impossível. Alterar o código não tem efeito (tentado NSLog
, etc) e ao tentar entrar em compiladores vai para o código do assembly e mostra UIImageView+TVASTAFNetworking
como nome da categoria que não existe em nenhum lugar da base de código.
Usando o Xcode 7. iOS 9 e 8. Cocoapods (sem Framework)
UPDATE
Esqueci de mencionar que o Optimizer está definido para as configurações de none
liberação e depuração e, de fato, estou usando o Debug
config.
ATUALIZAÇÃO 2
Strip Debug Symbols
Está desligado também.
ios
afnetworking-2
xcode7
Mojtaba
fonte
fonte
Strip Debug Symbols
está desativado.Respostas:
Se o seu projeto estiver usando o Swift, há duas configurações "Nível de otimização" separadas na configuração do projeto / destino.
Certifique-se de definir os dois corretamente:
None [-O0]
para LLVM eNone [-0none]
Swift) para a configuração de compilação em questão.Fazer isso resolveu esse aviso para mim.
fonte
po
,p
,expr
...?Parece que seu projeto está no modo Release. O modo Release compila o aplicativo com muitas otimizações, mas os depuradores odeiam otimizações; portanto, para depurar o aplicativo com confiabilidade, é necessário alterná-lo para o modo Debug, que reduz a otimização e adiciona várias informações de depuração. Para alternar para o modo Debug:
fonte
Esse aviso aparece apenas quando você atinge um ponto de interrupção e a fonte está em um projeto em que a otimização está ativada, impedindo que você observe valores reais de variáveis (cada objeto é mostrado como nulo, mesmo que não seja)
No meu caso, isso só aconteceu ao depurar passo a passo através de uma dependência de cocoapod.
Portanto, mesmo que você tenha suas configurações principais de destino e projeto definidas corretamente (Símbolo de depuração de faixa = DESLIGADO e nível de otimização Nenhum), você precisa garantir que seja o mesmo para o projeto Pod do qual está atingindo o ponto de interrupção.
fonte
None [-O0]
)pod install
novamente. Mude assim .Acontece que, depois de importar um projeto antigo (Xcode 7.x +) para o novo Xcode 8.3 (8E162), provavelmente devido à otimização do compilador, o Swift Compiler - Nível de Otimização foi definido por padrão como Otimização Rápida de Arquivo Único :
Mudando para nenhum, resolveu o problema:
fonte
Editor
->Validate Settings
confirme todas as alterações. Então você deve obterDefina Debug como
None
.fonte
Esta foi a solução para mim ...
Na linha da resposta do gimino, se você estiver usando cocoapods, adicione uma linha como esta ao Podfile:
ou para versões de cocoapods> = 1.0 (obrigado Diejmon)
Onde MyProject possui 'Debug-local', 'Debug-staging', 'Debug-PRODUCTION' como configurações de depuração, além do padrão 'Debug'
Por padrão, os cocoapods geralmente geram configurações de pod como Release, essa linha de Podfile permite que você diga que estão depurando.
fonte
Encontrei o mesmo problema hoje e descobri (pelo menos no meu caso). Também estou usando o CocoaPods e estava tendo esse problema ao executar meu alvo de teste (Swift misturado com ObjC).
Estou usando o Xcode 7.2, com o iOS 9.2 SDK.
Na imagem abaixo, você pode ver as otimizações para o destino e o projeto antes da minha alteração:
O surpreendente é que, embora a otimização resolvida seja None [-O0] , somente após alterar a configuração do projeto de -Os para -O0 o compilador parou de otimizar o destino.
Abaixo, você pode ver minhas configurações finais:
fonte
Já faz muito tempo, mas finalmente resolvi o problema. Há uma terceira bandeira otimização
LTO
ouLink Time Optimization
e Surpreendentemente ninguém ter mencionado aqui e por algum motivo eu não prestei atenção a ela também. Está logo acima daOptimization Level
configuração, como você pode ver em muitas capturas de tela postadas aqui.Portanto, para resumir, existem três sinalizadores de otimização diferentes que você deseja desativar para depuração:
-flto
)-O
)Mais informações sobre o LTO: http://llvm.org/docs/LinkTimeOptimization.html
fonte
Se você precisar desativar as otimizações dos seus pods Swift para poder depurá-los, adicione o seguinte ao seu
Podfile
. Isso desativará as otimizações apenas para compilações de depuração.fonte
Você tem certeza de que sua configuração de depuração não otimiza o código (não deveria)? Parece que você ativou acidentalmente otimizações para a configuração de depuração e deve desativá-la nas configurações do destino.
fonte
Esse erro aconteceu comigo duas vezes e, em todos os casos, houve um erro no parâmetro URL usado para solicitar um serviço. Em um caso, a URL tinha algum espaço na seção port; no outro, algum valor opcional não estava sendo desembrulhado.
Portanto, a correção era para garantir que o URL da solicitação seja bem formado. Mais informações sobre o meu caso e relatos semelhantes aqui .
fonte
Tudo o que fiz foi limpar (
Product > Clean
) meu projeto e executá-lo novamentefonte
Isso pode ser uma simplificação excessiva, mas você está construindo para o Release ou com otimização (que remove símbolos do Swift ou LLVM) muito alto? Nesse caso, edite seu esquema e mude para Depurar ou edite suas Configurações de compilação para otimização rápida ou LLVM para Nenhum (0).
fonte
Caso alguém esteja enfrentando esse problema ao depurar um pod que usa uma biblioteca C internamente, há outra coisa que você precisa alterar nas configurações do projeto para fazê-lo funcionar, além de tudo o mais listado no encadeamento.
Vá para as configurações do projeto Pods -> Seu destino usando C -> Configurações de compilação -> Apple Clang - Sinalizadores do compilador personalizado -> Outros sinalizadores C e remova o
-O3
sinalizador que chegou de alguma forma.fonte