it-swarm-pt.tech

Por que meus pontos de interrupção não estão funcionando?

Eu tenho pontos de interrupção definidos, mas o Xcode parece ignorá-los.

95
AlanKley

Antes de tudo, concordo 100% com as pessoas anteriores que disseram turno OFFLoad Symbols Lazily.

Eu tenho mais duas coisas a acrescentar.

(Minha primeira sugestão parece óbvia, mas a primeira vez que alguém me sugeriu, minha reação foi a seguinte: "vamos lá, por favor, você realmente acha que eu não saberia melhor ... ah!")

  1. Verifique se você não definiu acidentalmente "Active Build Configuration" para "Release".

  2. Em "Destinos" na exibição em árvore gráfica do seu projeto, clique com o botão direito do mouse em seu Destino e faça "Obter informações". Procure uma propriedade chamada "Gerar símbolos de depuração" (ou similar) e verifique se está marcada (ON). Além disso, você pode tentar encontrar (também em Target >> Get Info) uma propriedade chamada "Debug Information Format" e configurá-la para "Anão com arquivo dsym".

Há várias outras propriedades em Destino >> Obter informações que podem afetá-lo. Procure coisas como otimizar ou compactar código e desative essas coisas (presumo que você esteja trabalhando no modo de depuração, para que isso não seja um mau conselho). Além disso, procure itens como símbolos de remoção e verifique se também está DESLIGADO. Por exemplo, "Produto vinculado à faixa" deve ser definido como "Não" para o destino de depuração.

139
pestophagous

No Xcode 7, o que funcionou para mim foi:

1) Verifique se o destino -> esquema -> Executar - está no modo de depuração (foi lançado)

2) Verifique a opção "Debug executable", veja abaixo:

enter image description here

32
Oded Regev

Vá para as preferências de Depuração do Xcode. Verifique se "Carregar símbolos preguiçosamente" NÃO está selecionado.

25
AlanKley

Eu estava apenas tendo esse mesmo problema (novamente). Após verificar três vezes "Carregar símbolos preguiçosamente" e remover e depurar sinalizadores de geração de informações, fiz o seguinte:

  1. sair do Xcode
  2. abra uma janela do terminal e cd no diretório do projeto
  3. cd no diretório .xcodeproj
  4. exclua tudo, exceto o arquivo .pbxproj (eu tinha frank.mode1v3 e frank.pbxuser)

Você pode realizar a mesma tarefa no Finder clicando com o botão direito/opção no pacote .xcodeproj e escolhendo "Mostrar conteúdo do pacote".

Quando reiniciei o Xcode, todas as minhas janelas haviam sido redefinidas para as posições padrão, etc., mas os pontos de interrupção funcionavam!

14
Frank Szczerba

Para o Xcode 4.x: Vá para Produto> Depurar fluxo de trabalho e desmarque "Mostrar desmontagem ao depurar".

Para o Xcode 5.x, vá para Depurar> Depurar fluxo de trabalho e desmarque "Mostrar desmontagem ao depurar".

12
bneupaane

Veja este post: Pontos de interrupção não funcionam no Xcode? . Você pode estar pressionando "Executar" em vez de "Depurar", caso em que seu programa não está sendo executado com a ajuda do gdb; nesse caso, você não pode esperar que os pontos de interrupção funcionem!

8
Soong

Outra razão

Defina DeploymentPostprocessing como NO em BuildSettings - detalhes aqui

Em resumo -

A ativação dessa configuração indica que os binários devem ser removidos e as informações do modo de arquivo, proprietário e grupo devem ser definidas como valores padrão. [DEPLOYMENT_POSTPROCESSING]

enter image description here

7
gbk

Para o Xcode 4:

go Product -> Debug ->  Activate Breakpoints
4
evya

Chegou a esta página com o mesmo problema (o código C no Xcode 6 não para nos pontos de interrupção) e nenhuma das soluções acima funcionou (o projeto estava praticamente fora da caixa, em termos de configurações, com pouca chance de qualquer uma das configurações do depurador ser definido com o valor errado) ...

Depois de perder algum tempo reduzindo o problema, finalmente descobri o culpado (para o meu código):

Xcode (/ LLVM) não gosta de comandos de pré-processador no estilo Bison #line _.

Removê-los corrigiu o problema (o depurador parou nos meus pontos de interrupção).

4
Dave

Solução para mim com o XCode 9.4.1 (não parou em nenhum ponto de interrupção):

Em build Target -> Build Settings -> Nível de otimização: alternado de "Optimize for speed" -> "No optimization" (agora é mais lento, mas funciona)

4
Strinder

Isso me levou ao Xcode 9 por meio dia frustrante. Acabou sendo uma configuração de depuração simples.

Vá em Debug> Debug Workflow e verifique se 'Always Show Disassembly' está desativado. Simples assim. :(

3
Gaz Long

Esse pode ser um dos possíveis motivos para isso acontecer .... vá para Produto> Esquema> Editar esquema> .. Em Executar> informações> Execução, selecione "Debug executable".

2
Soropromo

Eu acho que o problema pode ser incompatibilidade entre as versões do dispositivo e o Xcode. Eu tenho esse problema ao tentar depurar no meu iPhone 4S executando o iOS 5.0.1. Ainda estou usando o Xcode 3.2.5. Obtive os símbolos do aparelho selecionando "usar este dispositivo para desenvolvimento" na janela do Organizer. Este telefone se recusa a interromper no entanto. Meu antigo 3GS será ponto de interrupção, o mesmo projeto do Xcode, as mesmas configurações ... apenas um dispositivo diferente e o iOS 4.0. Eu acho que esse é um bug do Xcode na versão 3.2.5, já que tenho os símbolos. Tendo tentado todas as soluções postadas aqui até agora, decidi que a solução para o meu problema é ir em frente e atualizar para o XCode 4. Talvez você não possa depurar efetivamente, a menos que o SDK base seja pelo menos tão alto quanto o sistema no qual depurar. Talvez isso seja óbvio - alguém pode confirmar?

Editar: atualizarei quando confirmar que isso é verdade.

2
Gavin

A exclusão da minha pasta Build resolveu o problema para mim.

2
Jack Bellis

Eu tenho muitos problemas com pontos de interrupção no Xcode (2.4.1). Eu uso um projeto que contém apenas outros projetos (como uma solução no Visual Studio). Às vezes, acho que os pontos de interrupção não funcionam, a menos que haja pelo menos um ponto de interrupção definido no projeto inicial (ou seja, aquele que contém o ponto de entrada do meu código). Se os únicos pontos de interrupção estiverem em projetos de "nível inferior", eles serão ignorados.

Também parece que o Xcode lida apenas com operações de ponto de interrupção corretamente se você agir no ponto de interrupção quando estiver no projeto que contém a linha de origem em que o ponto de interrupção está.

Se eu tentar excluir ou desativar pontos de interrupção por meio de outro projeto, a ação às vezes não entra em vigor, mesmo que o depurador indique isso. Por isso, vou me deparar com pontos de interrupção desabilitados ou em um ponto de interrupção (agora invisível) que removi anteriormente.

2
Charles Anderson

Meus pontos de interrupção não funcionaram e, em seguida, fiz o Build/Clean All Targets para fazê-los funcionar novamente.

2
snowytree

Para isso, e também para o Xcode 6 e superior, verifique se o botão de estado do ponto de interrupção está ativado (o botão azul da seta):

enter image description here

2
df611

No Xcode 4

- Product menu > Manage Schemes
- Select the scheme thats having debugging problems (if only one choose that)
- Click Edit button at bottom
- Edit Scheme dialog appears
- in left panel click on Run APPNAME.app
- on Right hand panel make sure youre on INFO tab
- look for drop down DEBUGGER:
- someone had set this to None
- set to LLDB if this is your preferred debugger
- can also change BUILD CONFIGURATION drop down to Debug 
-      but I have other targets set to AdHoc which debug fine once Debugger is set
1
brian.clear

Eu tentei todas as coisas acima, mas para mim apenas desativar os pontos de interrupção de depuração uma vez e ativá-los funcionaram.

1
user8032120

 enter image description here

1
Stan

Eu encontrei o problema De alguma forma, o "Mostrar desmontagem ao depurar" foi ativado no meu XCode, o que cria esse problema. Quando o desativei, todo o meu depurador parou no meu código-fonte.

Você pode encontrá-lo em: Product->Debug Workflow->Show Disassembly ao depurar.

1
Perumal

Se tudo mais falhar, em vez de um ponto de interrupção, você poderá chamar a seguinte função:

void BreakPoint(void) {
    int i=1;
    #if !__OPTIMIZE__
    printf("Code is waiting; hit pause to see.\n");
    while(i);
    #endif
}

Para retomar, defina i manualmente como zero e pressione o botão Continuar.

1
William Jockusch

Aconteceu a mesma coisa comigo no XCode 6.3.1. Consegui corrigi-lo da seguinte maneira:

  • Indo para Exibir-> Navegadores-> Mostrar Navegadores de Depuração
  • Clique com o botão direito do mouse em raiz do projeto -> mover pontos de interrupção (se selecionada a opção Usuário)
  • (Também selecionei a opção compartilhar pontos de interrupção, embora não tenha certeza se isso é necessário).

Depois de fazer essa alteração, defino as opções Mover pontos de interrupção de volta ao projeto e desmarque as Compartilhar pontos de interrupção opção e ainda funciona.

Não sei exatamente por que, mas isso recupera meus pontos de interrupção.

1
Osk

No Xcode 6.4, eu precisava reiniciar o meu Mac.

(Tentou ativar/desativar pontos de interrupção, reiniciar o dispositivo iOS, reiniciar o Xcode, excluir arquivos de ponto de interrupção do pacote da área de trabalho ...)

0
user2067021

Se você estiver usando o Subversion, apenas reverta seus arquivos de projeto (somente) para a última vez que você soube que o depurador estava funcionando.

0
stephen

Aqui está uma que eu encontrei: se você estiver trabalhando em uma biblioteca compartilhada (ou em um plug-in), seus pontos de interrupção ficarão amarelos na inicialização, o que pode fazer com que você martele o teclado com frustração e acabe com o processo de depuração. Bem, não faça isso! Os símbolos não serão carregados até que o aplicativo carregue a biblioteca; nesse ponto, os pontos de interrupção se tornarão válidos. Encontrei este problema com um plug-in de navegador ... Os BPs foram desativados até eu navegar para uma página que instanciava meu plug-in.

0
Tim Keating

Isso acontece de tempos em tempos com um projeto iOS, pelo menos. Para corrigi-lo, tive que reiniciar o dispositivo iOS, fechar o Xcode e reconstruir o projeto.

0
kakyo

Verifique também se a distribuição do aplicativo na AppStore também não está instalada no dispositivo.

0
dan

Se você tentou todas as verificações básicas, verifique o nível de otimização no destino e nas configurações do projeto. verifique se você selecionou Nenhum para depuração.

enter image description here

0
Abhijith Purushothaman

Eu tive problemas com o Xcode perdendo pontos de interrupção ao usar o simulador e com a configuração do Scheme Launch para "esperar pelo executável". Mude para "iniciar automaticamente" e os pontos de interrupção voltam à vida.

0
Richard

Outra coisa a verificar é que, se você tiver um arquivo plist "Serviços" para o seu modo de depuração (possivelmente porque você está fazendo coisas com o Keychain), verifique se o arquivo plist tem a linha "get-task-allow" = YES. Sem ele, a depuração e o log serão quebrados.

0
davidcann

Acredito que um projeto também pode ser corrompido em relação aos pontos de interrupção. Eu tenho um projeto, por exemplo, que NÃO interromperá nenhum ponto de interrupção que ele se lembre da sessão anterior. Eu escrevi sobre isso aqui

0
AlanKley

Eu estava enfrentando o mesmo problema quando queria depurar um plug-in da Web em que o executável personalizado era o Safari 5.1. Ele estava funcionando bem até atualizar meu Safari para 5.1 a partir do 4.0.5. Depois de instalar o Safari 4.0.5 novamente, todos os pontos de interrupção começaram a funcionar sem modificar nenhuma configuração do Xcode.

0
user917691

Eu tenho Xcode 3.2.3 SDK 4.1 Breakpoints falhará aleatoriamente. Descobri que, se você limpar a compilação e usar o comando touch em compilar, eles funcionarão novamente.

0
Damon McGIll

Outra razão pela qual os pontos de interrupção podem ficar amarelos é se o binário do aplicativo que você está depurando foi modificado desde a primeira execução. No meu caso, adicionei uma pasta à pasta Contents/Resources do aplicativo depois de depurar o programa uma vez. Na execução de depuração após adicionar a pasta, os pontos de interrupção ficaram amarelos e foram ignorados. Modifiquei meu procedimento: fiz uma limpeza, uma compilação, adicionei a pasta, executei e tudo estava bem.

Talvez o Xcode (ou OS X) crie e se lembre de sua própria assinatura digital do aplicativo (que foi não assinada digitalmente) e, em seguida, sentindo que o aplicativo foi modificado, se recuse a tentar definir pontos de interrupção. Ao fazer meus mods antes da primeira execução (depuração) do aplicativo, a assinatura digital foi feita com meus mods.

Tudo isso no OS X 10.6.8 usando o Xcode 3.2.2.

0
user532477

Acabei de resolver isso em XCode 4.2, nenhuma das opções acima ajudou. O problema era (não tenho certeza do que realmente aconteceu, mas talvez isso ajude alguém): meu colega de equipe criou novas configurações de compilação e projeto atualizado no SVN. Eu tinha a configuração de compilação antiga definida nas configurações do esquema de execução, portanto, as etapas para mim foram:

  1. Produto -> Editar esquema ...
  2. Selecione "Executar% project_name.app%" (ou o que causa problema)
  3. Na combinação de configuração de compilação, selecione essa nova configuração de compilação do meu companheiro de equipe

E é tudo, os pontos de interrupção estão de volta. Espero que isto ajude.

0
MANIAK_dobrii

Não faço o Xcode há um tempo, mas recomendo que você desative o "Zerolink" e o "Load Symbols Lazily"; isso resolverá a maioria dos problemas. Zerolink é uma abominação de qualquer maneira.

0
duane

Parece haver três estados para os pontos de interrupção no Xcode. Se você clicar neles, eles passarão pelas diferentes configurações. O azul escuro está ativado, o cinza desativado e, às vezes, vejo um azul pálido que exigia que eu clicasse novamente no ponto de interrupção para que ele passasse à cor azul escuro.

Fora isso, verifique se você está iniciando-o com o comando debug, não o comando run. Você pode fazer isso pressionando a opção + comando + retorno ou a opção Ir (depurar) no menu executar.

0
crackity_jones

Ao definir seu ponto de interrupção, clique com o botão direito do mouse e você deverá ter várias opções sobre como o ponto de interrupção é tratado (faça logar e continue, faça uma pausa na execução, etc.)

Verifique também se "Carregar símbolos preguiçosamente" não está selecionado nas preferências de depuração.

(Aplica-se ao Xcode 3.1, não tem certeza sobre versões passadas/futuras)

0
Scott Swezey

O fato de ambos terem Xcode 5 e 6 GM fez com que o primeiro perdesse a funcionalidade do ponto de interrupção (os betas do Xcode 6 estavam ok).

Eu tentei muitos dos métodos sugeridos, mas finalmente desisti e agora estou usando o Xcode 6 agora.

0
Rivera

O que o resolveu no meu caso foi bastante simples, no Xcode - Product - Clean Build Folder seguido de Product - Run (não no botão Play Xcode).

(Teve o problema no Xcode 11 - beta 4 depois de mudar para o teste de unidade com o botão play do Xcode pressionado)

0
Lukas

Você pode verificar uma configuração na configuração de destino Apple Seção de geração de código do LLVM Compiler 4.1 Gerar símbolo de depuração = SIM

0
Pushan

No meu caso, descobri que os pontos de interrupção foram desativados acidentalmente. Você pode reativá-lo novamente via Depurar-> Ativar pontos de interrupção [Cmd + Y]. Se você observar marcadores de ponto de interrupção em cinza, em vez do habitual marcador azul, é provável que isso ocorra.

Como se vê, você sempre pode alternar a ativação de pontos de interrupção com as teclas Cmd + Y, pode ter pressionado essa tecla combinada sem perceber. Este relatório é baseado no Xcode 7.2.

0
Benny Khoo

No caso de Xcode 4 e posterior * Carregar símbolos preguiçosamente * parece ser caiu . Então, consulte este post clique aqui

Explicações simples e detalhadas funcionaram para mim.

0
Ajit Satarkar