Pourquoi mes points d'arrêt ne fonctionnent-ils pas?

112

J'ai défini des points d'arrêt mais Xcode semble les ignorer.

AlanKley
la source
2
ProduitClean m'a aidé
Alexander Bekert
J'ai dû faire un redémarrage complet de mon ordinateur pour les faire fonctionner à nouveau, et maintenant ils sont super bogués. J'utilise xcode 10.2.1.
llamacorn
2
Xcode 11, redémarrer et nettoyer le Xcode ne fonctionne pas, redémarrer Mac ne fonctionne pas. Supprimer l'application sur l'appareil et reconstruire résout ce problème. J'espère que cela aidera quelqu'un
Randall Wang

Réponses:

148

Tout d'abord, je suis d'accord à 100% avec les personnes précédentes qui ont dit désactiver Load Symbols Lazily .

J'ai encore deux choses à ajouter.

(Ma première suggestion semble évidente, mais la première fois que quelqu'un me l'a suggérée, ma réaction est allée dans ce sens: "allez, s'il vous plaît, vous pensez vraiment que je ne saurais pas mieux ... oh.")

  1. Assurez-vous de ne pas avoir défini par inadvertance «Configuration de build actif» sur «Release».

  2. Sous "Cibles" dans l'arborescence graphique de votre projet, faites un clic droit sur votre cible et faites "Obtenir des informations". Recherchez une propriété nommée «Générer des symboles de débogage» (ou similaire) et assurez-vous qu'elle est VÉRIFIÉE (aka ON). Vous pouvez également essayer de trouver (également dans Target >> Get Info) une propriété appelée "Debug Information Format" et la définir sur "Dwarf with dsym file".

Il existe un certain nombre d'autres propriétés sous Cible >> Obtenir des informations qui peuvent vous affecter. Recherchez des éléments tels que l'optimisation ou la compression du code et désactivez ces éléments (je suppose que vous travaillez en mode débogage, ce n'est donc pas un mauvais conseil). Recherchez également des éléments tels que supprimer des symboles et assurez-vous que ce paramètre est également désactivé. Par exemple, "Supprimer le produit lié" doit être défini sur "Non" pour la cible de débogage.

pestophage
la source
8
Sur XCode 4.5.2, j'ai eu ce problème et il s'est avéré que c'était parce que j'avais activé "l'optimisation du temps de liaison", donc c'est une autre chose à vérifier
taxilian
6
Pour modifier la configuration de construction, accédez à Produit -> Schéma -> Modifier le schéma, sous Exécuter - Info. Pour moi, ce qui fonctionnait était de vérifier "Debug Executable" dans ce menu.
Jeffrey Sun
2
Détourner la réponse principale pour ajouter que la syntaxe Bison semble être une autre cause (exotique) des points d'arrêt qui ne fonctionnent pas (voir ma réponse ci-dessous). Espérons que cela fera gagner du temps à la prochaine personne avec ce problème.
Dave
2
Il est également très facile de basculer par inadvertance l'activation du point d'arrêt avec ⌘Y. Alors faites attention à ça, les enfants.
dsgrnt du
1
J'ai essayé le point numéro 1 et cela a fonctionné pour moi. M'a vraiment aidé. J'ai voté pour.
NSPratik
49

Dans Xcode 7, ce qui a fonctionné pour moi était:

1) Assurez-vous que la cible -> schéma -> Exécuter - est en mode débogage (était Release)

2) Assurez-vous de cocher l'option "Debug executable" voir ci-dessous:

entrez la description de l'image ici

Oded Regev
la source
4
C'est exactement ce qui m'est arrivé, la case à cocher était décochée
anoop4real
Même problème pour moi. Cette option ne devrait-elle pas être activée par défaut (XCode 8.3)? Ne sommes-nous pas censés être tous des développeurs, prêts à déboguer de toute façon?
dgmz
A travaillé pour moi dans Xcode 9.3, ce serait formidable si vous fournissiez une autre image pour l'option 1.
Kazi Abdullah Al Mamun
24

Accédez aux préférences de débogage Xcode. Assurez-vous que "Charger les symboles paresseusement" n'est PAS sélectionné.

AlanKley
la source
7
Malheureusement, il n'y a pas de préférences de "débogage" dans Xcode 6, et "paresseusement" n'apparaît pas dans la documentation. Soupir.
Oscar
1
ok, maintenant je ne trouve pas l'option 'Load Symbols Lazily' dans XCode 6
RNA
14

J'avais juste ce même problème (encore). Après avoir vérifié trois fois "Charger les symboles paresseusement" et dépouillé et débogué les indicateurs de génération d'informations, j'ai fait ce qui suit:

  1. quitter Xcode
  2. ouvrir une fenêtre de terminal et un cd dans le répertoire du projet
  3. cd dans le répertoire .xcodeproj
  4. supprimer tout sauf le fichier .pbxproj (j'avais frank.mode1v3 et frank.pbxuser)

Vous pouvez accomplir la même tâche dans Finder en cliquant avec le bouton droit / option-clic sur le bundle .xcodeproj et en sélectionnant "Afficher le contenu du paquet".

Lorsque j'ai redémarré Xcode, toutes mes fenêtres étaient réinitialisées aux positions par défaut, etc., mais les points d'arrêt fonctionnaient!

Frank Szczerba
la source
2
Cela fonctionne, mais cela supprime toutes vos préférences ... Cela devrait être fait lorsque rien d'autre n'a fonctionné.
Rémi Doolaeghe
travaillé pour moi, merci. Je me demande pourquoi Xcode est si nul. Xcode est le pire logiciel jamais écrit par Apple.
Canard le
Wow, ça fait 5 ans. Difficile de croire que cela fonctionne toujours, et que c'est toujours un problème!
Frank Szczerba
N'a pas travaillé pour moi. J'utilise Xcode 6.01. Maintenant, lorsque je construis, je reçois plusieurs erreurs de fichiers manquantes. Je rétablis mon code pour le résoudre.
Native_Mobile_Arch_Dev
Il suffisait de redémarrer Xcode, mon cas était dû à la gestion des versions de git, lors de la validation des données d'état de l'interface utilisateur de xcode.
Juan Boero
13

Pour Xcode 4.x: Accédez au produit> Déboguer le flux de travail et décochez "Afficher le désassemblage lors du débogage".

Pour Xcode 5.x, accédez au débogage> Déboguer le flux de travail et décochez «Afficher le désassemblage lors du débogage».

bneupaane
la source
11

Une autre raison

Définir DeploymentPostprocessingsur NO dans BuildSettings - détails ici

En bref -

L'activation de ce paramètre indique que les binaires doivent être supprimés et que les informations de mode de fichier, de propriétaire et de groupe doivent être définies sur des valeurs standard. [DEPLOYMENT_POSTPROCESSING]

entrez la description de l'image ici

gbk
la source
Après la mise à jour vers XCode 7, ce paramètre était en quelque sorte YESuniquement dans mon subproject, puis les points d'arrêt ne fonctionnaient pas subprojects. Et après s'être installé NO, c'était parfait!
Maheswaran Ravisankar
Cela n'a fonctionné pour moi qu'après le nettoyage du projet, donc une reconstruction complète aura lieu.
couru
8

Voir cet article: Les points d'arrêt ne fonctionnent pas dans Xcode? . Vous pourriez pousser "Exécuter" au lieu de "Déboguer" auquel cas votre programme ne s'exécute pas avec l'aide de gdb, auquel cas vous ne pouvez pas vous attendre à ce que les points d'arrêt fonctionnent!

Soong
la source
Dans Xcode 6.4, il n'y a plus qu'un bouton Exécuter et le fait qu'il exécute une configuration de débogage ou non dépend des paramètres de schéma actuellement sélectionnés.
user2067021
6

Une des solutions possibles pour cela pourrait être .... allez dans Produit> Schéma> Editer le schéma> .. Sous Exécuter> info> Exécutable, cochez "Debug executable".

Soropromo
la source
Celui-ci a fonctionné pour moi après m'être cogné la tête pendant 2 jours.
Dileep Perla le
heureux que cela ait aidé.
Soropromo
5

Cela m'a mis dans Xcode 9 pendant une demi-journée frustrante. Cela a fini par être un simple paramètre de débogage.

Allez Déboguer> Déboguer le flux de travail et assurez-vous que «Toujours afficher le désassemblage» est désactivé. Aussi simple que cela. :(

Gaz Long
la source
Cela fonctionne pour moi, merci
Md.Harish-Uz-Jaman Mridha Raju
5

Solution pour moi avec XCode 9.4.1 (ne s'est arrêté à aucun point d'arrêt):

Sous la cible de construction -> Paramètres de construction -> Niveau d'optimisation: basculé de "Optimiser pour la vitesse" -> "Aucune optimisation" (maintenant c'est plus lent mais fonctionne)

Strinder
la source
5

Ce qui l'a résolu dans mon cas était assez simple, dans Xcode - Product - Clean Build Folder suivi de Product - Run (pas le bouton Play Xcode).

(Avait le problème sur Xcode 11 -beta 4 après le passage au test unitaire avec un appui long sur le bouton de lecture Xcode)

Lukas
la source
4

Est venu sur cette page avec le même problème (le code C dans Xcode 6 ne s'arrêtant pas aux points d'arrêt) et aucune des solutions ci-dessus n'a fonctionné (le projet était pratiquement prêt à l'emploi, en ce qui concerne les paramètres, donc peu de chance pour les paramètres du débogueur de être réglé sur la mauvaise valeur) ...

Après avoir perdu un certain temps à réduire le problème, j'ai finalement trouvé le coupable (pour mon code):

Xcode (/ LLVM) n'aime pas les #linecommandes de préprocesseur de style Bison .

Leur suppression a résolu le problème (le débogueur s'est arrêté à mes points d'arrêt).

Dave
la source
4

Pour Xcode 4:

go Product -> Debug ->  Activate Breakpoints
Evya
la source
Merci! cela a aidé. J'allais poster ceci moi-même, apparemment j'ai poussé ⌘Y d'une manière ou d'une autre par erreur.
Ovi le
2

J'ai beaucoup de problèmes avec les points d'arrêt dans Xcode (2.4.1). J'utilise un projet qui contient simplement d'autres projets (comme une solution dans Visual Studio). Je trouve parfois que les points d'arrêt ne fonctionnent pas du tout à moins qu'il y ait au moins un point d'arrêt défini dans le projet de départ (c'est-à-dire celui contenant le point d'entrée de mon code). Si les seuls points d'arrêt se trouvent dans des projets de "niveau inférieur", ils sont simplement ignorés.

Il semble également que Xcode ne gère correctement les opérations de point d'arrêt que si vous agissez sur le point d'arrêt lorsque vous êtes dans le projet qui contient la ligne source sur laquelle se trouve le point d'arrêt.

Si j'essaie de supprimer ou de désactiver des points d'arrêt via un autre projet, l'action ne prend parfois pas effet, même si le débogueur l'indique. Je vais donc me retrouver à casser sur des points d'arrêt désactivés, ou sur un point d'arrêt (maintenant invisible) que j'ai supprimé plus tôt.

Charles Anderson
la source
2

Mes points d'arrêt ne fonctionnent pas, puis j'ai créé / nettoyé toutes les cibles pour les faire fonctionner à nouveau.


la source
2

Je pense que le problème pourrait être une incompatibilité entre les versions de l'appareil et Xcode. J'ai ce problème lorsque je tente de déboguer sur mon iPhone 4S sous iOS 5.0.1. J'utilise toujours Xcode 3.2.5. J'ai récupéré les symboles du combiné en sélectionnant «utiliser cet appareil pour le développement» dans la fenêtre de l'organiseur. Ce téléphone refuse cependant le point d'arrêt. Mon ancien 3GS aura un point d'arrêt, le même projet Xcode, les mêmes paramètres ... juste un appareil différent et il exécute iOS 4.0. Je suppose que c'est un bogue Xcode dans 3.2.5, puisque j'ai les symboles. Ayant essayé toutes les solutions publiées ici jusqu'à présent, j'ai décidé que la solution à mon problème était d'aller de l'avant et de passer à XCode 4. Peut-être que vous ne pouvez pas déboguer efficacement à moins que votre SDK de base ne soit au moins aussi élevé que le système sur lequel déboguer. Peut-être que c'est évident - quelqu'un peut-il confirmer?

Edit: Je mettrai à jour quand je pourrai confirmer que c'est vrai.

Gavin
la source
2

La suppression de mon dossier Build a résolu le problème pour moi.

Jack Bellis
la source
2

Cela m'est arrivé la même chose dans XCode 6.3.1. J'ai réussi à le réparer en:

  • Aller à Affichage-> Navigateurs-> Afficher les navigateurs de débogage
  • Faites un clic droit dans la racine du projet -> Déplacer les points d'arrêt (si l'option Utilisateur est sélectionnée)
  • (J'ai également sélectionné l'option partager les points d'arrêt , même si je ne suis pas sûr que cela soit nécessaire).

Après avoir effectué cette modification, j'ai défini les options Déplacer les points d'arrêt vers le projet et désélectionner les points d'arrêt Partager option , et fonctionne toujours.

Je ne sais pas exactement pourquoi mais cela récupère mes points d'arrêt.

Osk
la source
Je vous remercie! Cela a également corrigé la lenteur de la réactivité des journaux de débogage
Jim75
2

Pour cela, ainsi que pour Xcode 6 et supérieur, assurez-vous que le bouton d'état du point d'arrêt est activé (le bouton en forme de flèche bleue):

entrez la description de l'image ici

df611
la source
1

Dans 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
brian.clear
la source
1

J'ai trouvé le problème. D'une manière ou d'une autre, " Afficher le désassemblage lors du débogage " a été activé dans mon XCode, ce qui crée ce problème. Quand je l'ai désactivé, tout mon débogueur s'est arrêté dans mon code source.

Vous pouvez le trouver sous: Product->Debug Workflow->Show Disassemblylors du débogage.

Perumal
la source
1

Vous pouvez activer / désactiver les points d'arrêt dans le menu déroulant entrez la description de l'image ici

Stan
la source
1

Si tout le reste échoue, au lieu d'un point d'arrêt, vous pouvez appeler la fonction suivante:

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

Pour reprendre, réglez manuellement i sur zéro, puis appuyez sur le bouton de reprise.

William Jockusch
la source
1

J'ai essayé toutes les choses ci-dessus, mais pour moi, désactiver une seule fois les points d'arrêt de débogage, puis les activer a fonctionné.

user8032120
la source
@IshantMrinal Pourquoi n'est-ce pas pertinent? L'utilisateur a fourni une réponse qui a fonctionné dans son scénario.
Noel Widmer
0

Lors de la définition de votre point d'arrêt, faites un clic droit et vous devriez obtenir plusieurs options sur la façon dont le point d'arrêt est géré (journal des variables et continuer, suspendre l'exécution, etc.)

Assurez-vous également que "Charger les symboles paresseusement" n'est pas sélectionné dans les préférences de débogage.

(S'applique à Xcode 3.1, pas sûr des versions passées / futures)

Scott Swezey
la source
0

Assurez-vous également que la distribution AppStore de l'application n'est pas également installée sur l'appareil.


la source
0

Une autre chose à vérifier est que si vous avez un fichier plist "Droits" pour votre mode de débogage (peut-être parce que vous faites des choses avec le trousseau), assurez-vous que ce fichier plist a la ligne "get-task-allow" = YES. Sans cela, le débogage et la journalisation seront interrompus.

Davidcann
la source
0

Il semble y avoir 3 états pour les points d'arrêt dans Xcode. Si vous cliquez dessus, ils passeront par les différents paramètres. Le bleu foncé est activé, le gris est désactivé et j'ai parfois vu un bleu pâle qui m'a obligé à cliquer à nouveau sur le point d'arrêt pour le faire passer à la couleur bleu foncé.

À part cela, assurez-vous que vous le lancez avec la commande de débogage et non avec la commande d'exécution. Vous pouvez le faire en appuyant sur option + commande + retour ou sur l'option Go (débogage) dans le menu Exécuter.

crackity_jones
la source
0

J'ai Xcode 3.2.3 SDK 4.1 Les points d'arrêt échoueront au hasard. J'ai trouvé que si vous nettoyez la construction et utilisez la commande tactile sous la construction, ils fonctionnent à nouveau.

Damon McGIll
la source
0

En voici une obscure que j'ai rencontrée: si vous travaillez sur une bibliothèque partagée (ou un plugin), vos points d'arrêt deviendront jaunes au démarrage, ce qui pourrait vous amener à marteler votre clavier de frustration et à tuer le processus de débogage. Eh bien, ne fais pas ça! Les symboles ne seront pas chargés tant que l'application n'aura pas chargé la bibliothèque, auquel cas les points d'arrêt deviendront valides. J'ai rencontré ce problème avec un plugin de navigateur ... Les BP ont été désactivés jusqu'à ce que je navigue sur une page qui instancie mon plugin.

Tim Keating
la source