web-dev-qa-db-fra.com

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

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

95
AlanKley

Tout d’abord, je suis tout à fait d’accord avec les personnes précédentes qui disaient se retourner DE Load Symbols Lazily.

J'ai deux autres choses à ajouter.

(Ma première suggestion semble évidente, mais la première fois que quelqu'un me l'a suggéré, ma réaction a été la suivante: "allez, s'il te plaît, tu penses vraiment que je ne saurais pas mieux ...... oh.")

  1. Assurez-vous que vous n'avez pas accidentellement défini "Configuration de construction active" sur "Libérer".

  2. Sous "Cibles" dans l'arborescence 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 cochée (c'est-à-dire activée). Vous pouvez également essayer de trouver (également dans Target >> Lire les informations) une propriété appelée "Format des informations de débogage" et de la définir sur "Nain avec fichier dsym".

Il y a un certain nombre d'autres propriétés sous Cible >> Obtenir des informations qui pourraient vous affecter. Recherchez des éléments tels que l'optimisation ou la compression de code et désactivez-les (je suppose que vous travaillez en mode débogage, ce qui n'est donc pas un mauvais conseil). Recherchez également des symboles tels que la suppression des symboles et assurez-vous que cette option est également désactivée. Par exemple, "Strip Linked Product" doit être défini sur "No" pour la cible Debug.

139
pestophagous

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

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:

enter image description here

32
Oded Regev

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

25
AlanKley

Je venais d'avoir ce même problème (encore). Après une triple vérification de "Charger les symboles paresseusement" et des indicateurs de génération d'informations de mise à jour et de débogage, j'ai procédé comme suit:

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

Vous pouvez accomplir la même tâche dans le Finder en cliquant avec le bouton droit de la souris ou en cliquant sur l’option .xcodeproj et en choisissant "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!

14
Frank Szczerba

Pour Xcode 4.x: Allez au produit> Processus de débogage et décochez "Afficher le désassemblage lors du débogage".

Pour Xcode 5.x, allez dans Debug> Déboguer le flux de travail et décochez "Afficher le désassemblage lors du débogage".

12
bneupaane

Voir ce message: Les points d'arrêt ne fonctionnent pas dans Xcode? . Vous pouvez pousser "Run" au lieu de "Debug", auquel cas votre programme ne fonctionne pas avec l'aide de gdb, auquel cas vous ne pouvez pas vous attendre à ce que les points d'arrêt fonctionnent!

8
Soong

Une autre raison

Définissez DeploymentPostprocessing sur NO dans BuildSettings - détails ici

En bref -

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

enter image description here

7
gbk

Pour Xcode 4:

go Product -> Debug ->  Activate Breakpoints
4
evya

Nous sommes arrivés sur cette page avec le même problème (le code C dans Xcode 6 ne s’arrêtant pas aux points de rupture) et aucune des solutions ci-dessus n’a fonctionné (le projet était pratiquement prêt à l'emploi, en termes de paramètres, si peu être mis à la mauvaise valeur) ...

Après avoir passé pas mal de temps à réduire le problème, j'ai finalement trouvé le coupable (pour mon code):

Xcode (/ LLVM) n'aime pas Bison-style #line commandes du préprocesseur.

Le fait de les supprimer a résolu le problème (le débogueur s’est arrêté à mes points d’arrêt).

4
Dave

Solution pour moi avec XCode 9.4.1 (ne s’est arrêté à aucun point de rupture):

Sous la cible de construction -> Paramètres de construction -> Niveau d'optimisation: Basculé de "Optimiser pour la vitesse" -> "Aucune optimisation" (à présent, c'est plus lent mais cela fonctionne)

4
Strinder

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

Allez dans Debug> Processus de débogage et assurez-vous que "Toujours afficher le désassemblage" est désactivé. Aussi simple que cela. :(

3
Gaz Long

C’est peut-être l’une des raisons possibles de cette situation .... allez à Produit> Schéma> Modifier le schéma> .. Sous Exécuter> info> Vérifiez le fichier exécutable "Exécutable de débogage".

2
Soropromo

Je pense que le problème pourrait être une incompatibilité entre les versions de périphérique et Xcode. J'ai ce problème lorsque j'essaie de déboguer sur mon iPhone 4S sous iOS 5.0.1. J'utilise toujours Xcode 3.2.5. J'ai obtenu les symboles du combiné en sélectionnant "utiliser ce périphérique pour le développement" dans la fenêtre Organiseur. Ce téléphone refuse cependant le point d'arrêt. Mon ancien 3GS volonté 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. Après avoir 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 mettre à niveau vers XCode 4. Peut-être vous ne pouvez pas déboguer efficacement à moins que votre SDK de base ne soit au moins aussi haut que le système sur lequel déboguer. Peut-être que c'est évident - quelqu'un peut-il confirmer?

Edit: Je mettrai à jour lorsque je peux confirmer que cela est vrai.

2
Gavin

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

2
Jack Bellis

J'ai beaucoup de problèmes avec les points d'arrêt dans Xcode (2.4.1). J'utilise un projet qui ne contient que d'autres projets (comme une solution dans Visual Studio). Je constate parfois que les points d'arrêt ne fonctionnent pas du tout, sauf s'il existe 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 vous trouvez dans le projet contenant la ligne source sur laquelle le point d'arrêt est activé.

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'avais supprimé précédemment.

2
Charles Anderson

Mes points d'arrêt ne fonctionnent pas, puis j'ai construit/Nettoyer tous les objectifs pour les faire fonctionner à nouveau.

2
snowytree

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

enter image description here

2
df611

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

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

1
user8032120

 enter image description here

1
Stan

J'ai trouvé le problème. En quelque sorte, le "Afficher le désassemblage lors du débogage" a été activé dans mon code X, 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 Disassembly lors du débogage.

1
Perumal

Si tout é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, mettez manuellement i à zéro, puis appuyez sur le bouton de reprise.

1
William Jockusch

Il 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 le 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 points d'arrêt de partage, même si je ne suis pas sûr que cela soit nécessaire).

Après avoir effectué ce changement, je définis les options Déplacer les points d'arrêt dans le projet et désélectionne les points d'arrêt Partager option, et fonctionne toujours.

Je ne sais pas exactement pourquoi mais cela me permet de récupérer mes points d'arrêt.

1
Osk

Sur Xcode 6.4, je devais redémarrer mon Mac.

(J'ai essayé d'activer/de désactiver des points d'arrêt, de redémarrer un périphérique iOS, de redémarrer Xcode, de supprimer des fichiers de points d'arrêt du package d'espace de travail ...)

0
user2067021

Si vous utilisez Subversion, rétablissez simplement vos fichiers de projet (niquement) à la dernière fois où vous saviez que le débogueur fonctionnait.

0
stephen

Voici un cas obscur que j'ai rencontré: 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 à enfoncer votre clavier dans la frustration et à mettre fin au 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. Les points d'arrêt deviendront alors 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.

0
Tim Keating

Cela se produit de temps en temps avec un projet iOS au moins. Pour résoudre ce problème, je devais redémarrer le périphérique iOS, quitter Xcode et reconstruire le projet.

0
kakyo

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

0
dan

Si vous avez essayé toutes les vérifications de base, recherchez le niveau d'optimisation dans la cible et les paramètres du projet. assurez-vous que vous avez sélectionné Aucun pour le débogage.

enter image description here

J'ai eu des problèmes avec la perte de points d'arrêt par Xcode lors de l'utilisation du simulateur et lorsque le paramètre Scheme Launch (lancement du schéma) était défini sur "wait for exécutable". Changez cela pour "lancer automatiquement" et les points d'arrêt reviennent à la vie.

0
Richard

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

0
davidcann

Je crois qu'un projet peut également être corrompu en ce qui concerne les points de rupture. J'ai un projet, par exemple, qui NE SERA PAS brisé sur les points d'arrêt dont il se souvient de la session précédente. J'ai d'abord écrit à ce sujet ici

0
AlanKley

Je rencontrais le même problème lorsque je voulais déboguer un plug-in Web dont l'exécutable personnalisé était Safari 5.1. Il fonctionnait bien jusqu'à ce que mon Safari soit passé de la version 4.0.5 à 5.1. Une fois que j'ai installé Safari 4.0.5 à nouveau, tous les points d'arrêt ont commencé à fonctionner sans modifier aucun paramètre Xcode.

0
user917691

J'ai Xcode 3.2.3 SDK 4.1 Les points d'arrêt échoueront de manière aléatoire. J'ai trouvé que si vous nettoyez la construction et utilisez la commande tactile sous build, ils fonctionnent à nouveau.

0
Damon McGIll

Une autre raison pour laquelle les points d'arrêt peuvent virer au jaune est que le binaire de l'application que vous déboguez a été modifié depuis sa première exécution. Dans mon cas, j'ai ajouté un dossier au dossier Contents/Resources de l'application après avoir débogué le programme une fois. Lors du débogage exécuté après l'ajout du dossier, les points d'arrêt sont devenus jaunes et ont été ignorés. J'ai modifié ma procédure: j'ai nettoyé, construit, ajouté le dossier, puis couru, et tout allait bien.

Peut-être Xcode (ou OS X) crée-t-il et se souvient-il de sa propre signature numérique de l'application (qui était pas signée numériquement), puis, sentant que l'application a été modifiée, refuse de tenter de définir des points d'arrêt. En faisant mes mods avant la première exécution (débogage) de l'application, la signature numérique a été faite avec mes mods.

Tout cela sous OS X 10.6.8 avec Xcode 3.2.2.

0
user532477

Vient de résoudre ceci dans XCode 4.2, rien de ce qui précède n’a aidé. Le problème était (je ne suis pas sûr de ce qui s'est réellement passé, mais cela aide peut-être quelqu'un): mon coéquipier a créé de nouvelles configurations de construction et mis à jour le projet dans SVN. J'avais l'ancienne configuration de construction configurée dans les paramètres d'exécution du schéma. Les étapes pour moi étaient les suivantes:

  1. Produit -> Edit Scheme ...
  2. Sélectionnez "Run% nom_projet.app%" (ou ce qui pose problème)
  3. Dans la configuration combinée, sélectionnez cette nouvelle configuration à partir de mon coéquipier.

Et c'est tout, les points d'arrêt sont de retour. J'espère que cela t'aides.

0
MANIAK_dobrii

Je n'ai pas encore utilisé Xcode depuis un moment, mais je vous recommande de désactiver "Zerolink" et "Load Symbols Lazily"; cela résoudra la plupart des problèmes. Zerolink est une abomination quand même.

0
duane

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 nécessitait que je clique de nouveau sur le point d'arrêt pour qu'il passe à la couleur bleu foncé.

Autre que cela, assurez-vous de le lancer avec la commande debug et non la commande run. Vous pouvez le faire en tapant option + commande + retour, ou l'option Aller (déboguer) dans le menu Exécuter.

0
crackity_jones

Lorsque vous définissez 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é (log vars et continuer, suspendre l'exécution, etc.)

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

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

0
Scott Swezey

Avoir à la fois Xcode 5 et 6 GM a fait perdre à l’ancien la fonctionnalité des points d’arrêt (Xcode 6 betas était ok).

J'ai essayé plusieurs des méthodes suggérées, mais j'ai finalement abandonné et j'utilise maintenant Xcode 6.

0
Rivera

Ce qui a résolu le problème dans mon cas était assez simple, dans Xcode - Produit - Dossier de construction propre, suivi de Produit - Exécuter (et non du bouton Lecture Xcode).

(Problème rencontré sur Xcode 11 -beta 4 après le passage au test unitaire avec le bouton de lecture Xcode appuyé depuis longtemps)

0
Lukas

Vous pouvez vérifier un paramètre dans le paramètre cible Apple Section Génération de code du compilateur LLVM 4.1 Générer le symbole de débogage = YES

0
Pushan

Dans mon cas, j'ai découvert que les points d'arrêt avaient été désactivés par accident. Vous pouvez le réactiver à nouveau via Debug-> Activer les points d'arrêt [Cmd + Y]. Si vous remarquez des marqueurs de points d'arrêt grisés au lieu du marqueur bleu habituel, c'est probablement le cas.

En fin de compte, vous pouvez toujours activer les points d’arrêt avec les touches Cmd + Y. Ce rapport est basé sur Xcode 7.2.

0
Benny Khoo

Dans le cas de Xcode 4 et versions ultérieures * Charger les symboles paresseusement * semble être chuté . Alors référez-vous à ce message cliquez ici

Une explication simple et détaillée a fonctionné pour moi.

0
Ajit Satarkar