J'ai un fichier, SignInViewController.Swift
, dans mon projet Xcode qui a commencé à ne pas s'arrêter sur des points d'arrêt. J'ai un point d'arrêt dans viewDidLoad()
et quelques-uns dans viewDidAppear()
. J'ai plusieurs appels print()
dans les deux fonctions pour m'assurer de leur exécution. Les points d'arrêt fonctionnent correctement dans d'autres fichiers, y compris AppDelegate.Swift
.
Il y a eu un moment où j'ai essayé de comprendre ce qui n'allait pas. J'ai remarqué que, pendant que je construisais le projet, une erreur apparaissait, indiquant Invalid redeclaration of 'signInViewController.Swift'
, puis disparaissant avant la fin de la construction et l'application fonctionnant correctement, à l'exception des points d'arrêt du fichier. signInViewController.Swift
est l'ancien nom du fichier d'il y a quelques mois avant que je ne le renomme en SignInViewController.Swift
. Je ne l'avais jamais vu jusqu'à ce que le problème du point d'arrêt se produise et depuis que j'ai nettoyé le dossier de construction du projet et les données dérivées de Xcode, je n'ai pas pu répliquer. J'ai l'impression que le problème est pris en compte, mais je ne sais pas comment/pourquoi.
Quoi qu'il en soit, voici des choses que j'ai déjà essayées. La plupart d'entre eux ne concernent que les points d'arrêt ne fonctionnant pas en général, mais je pense que je devrais les énumérer de toute façon même si ce n'est pas le cas:
- Projet propre
- Dossier de construction propre
- Effacer DerivedData de Xcode
- S'assurer que les points d'arrêt sont activés (Cmd Y)
- Les paramètres de construction sont définis sur Debug
- Toujours afficher le désassemblage activé et désactivé
- Débogage activé dans Run Config
Toute aide serait très appréciée.
UPDATE 1 (toujours pas de chance):
- Essayé de supprimer la préférence Xcode comme suggéré par la réponse de neprocker here
UPDATE 2:
J'ai isolé le problème des points d'arrêt en seulement viewDidLoad()
et viewDidAppear()
ailleurs dans le fichier.
UPDATE 3:
Isolée dans un bloc de code spécifique dans viewDidLoad()
. viewDidAppear()
ne fonctionne toujours pas.
Je ne sais pas trop comment cela a fini par résoudre le problème, mais j'ai isolé le problème d'un bloc de code dans viewDidLoad()
. Ensuite, j'ai commenté ce code, puis construit et exécuté le projet. Ensuite, j'ai décommenté le code, construit et exécuté à nouveau et les points d'arrêt ont fonctionné.
J'ai résolu ce problème en allant dans «Paramètres de construction» de mon projet Xcode et en réglant «Générer les symboles de débogage» sur «Oui»
Ce qui m'a aidé, c’est de supprimer le fichier Breakpoints_v2.xcbkptlist qui se trouve sous le répertoire du projet (* .xcodeproj) dans le répertoire: xcuserdata/Fred.xcuserdatad/xcdebugger (remplacez "Fred" par votre nom d’utilisateur). Utilisez un programme de terminal pour y aller.
Je traitais également le même problème dans xcode 9.
J'ai résolu le problème de plusieurs manières:
Supprimer les valeurs XCode par défaut à l'aide de la commande de terminal ci-dessous
defaults delete com.Apple.dt.Xcode.LSSharedFileList
defaults delete com.Apple.dt.Xcode
Effacer (ou supprimer) les DerivedData de Xcode de
/Users/[Your Mac Username]/Library/Developer/Xcode/DerivedData
Supprimer (ou désinstaller) Xcode.app à partir d'applications, puis redémarrer l'ordinateur
Installer une nouvelle copie de Xcode 9
[ Obligatoire ] Définissez les autorisations utilisateur pour votre projet d'application, comme
chmod -R 777 "/Users/[Your Mac Username]/Desktop/TestApp/"
[où TestApp est le projet de l'application sur le bureau]
Ouvrez le projet et vérifiez que les paramètres de construction sont définis sur Debug
Parfois, les valeurs peuvent avoir changé dans Xcode userdefaults lui-même, Parfois, le même problème se produisait lorsque le débogueur s’arrêtait sur stacktrace
1.Delete the Xcode preference
defaults delete com.Apple.dt.Xcode
L'autre problème pourrait être le niveau d'optimisation de la cible, le changer en aucun ne s'arrêtera au débogueur
Dans mon cas, il s'avère que la configuration de construction Dev n'est pas configurée correctement.
La configuration Dev doit être copiée à partir de Debug et non de Release.
Vous pouvez effectuer une recherche avec Word débogage dans votre Build settings
pour voir les différences.
Par exemple:
J'espère que cela t'aides.