2010-11-08 46 views
1

J'essaye de déboguer un petit prototype pour une application iPhone (iOS Simulator 4.1), compilé en Debug, avec toutes les configurations apparemment correctes. L'application utilise le moteur graphique Cocos2d et la bibliothèque GDataXMLNode (pour la lecture XML). Il n'y a pas beaucoup de choses qui se passent. Mais sur certaine méthode, si je mets un point d'arrêt, gdb simplement "arrête".Xcode s'arrête aux points d'arrêt et semble se bloquer

est ici la ligne d'état du débogueur après avoir touché il point d'arrêt:

alt text

Et voici le code qui a le point d'arrêt (sshot):

alt text

Note : le point d'arrêt pourrait être n'importe où dans cette fonction et c'est la même chose.

Et voici le code d'appel (d'un autre objet)

self.map = [SimulationLoader loadMap]; 

Aucun des boutons éditeur de travail lorsqu'un point d'arrêt est placé à l'intérieur du « LoadMap » (étape en, sortez, ensuite, continuer l'exécution, Je peux arrêter et/ou redémarrer le débogage et ça marche (mais ça remonte au début) L'invite de gdb va me permettre d'écrire, mais rien ne se passe, je ne peux pas voir les valeurs des objets ou tout ce qui concerne le débogage. reprendre l'exécution, il ne fera rien

La chose étrange est que, si je mets un point d'arrêt avant ou après cette ligne (le loadMap), tout fonctionne, et je peux sortir ou entrer, déboguer et faire tout ce que je veux faire.

Qu'est-ce qui me manque?

Quelques secondes après que le point d'arrêt "défaillant" est atteint (et qu'il "se bloque"), la fenêtre de la pile s'efface. Je crois que tout cela arrive parce que le gdb s'est arrêté, mais la question est: pourquoi est-ce que ça s'arrête là? Quelles sont les restrictions pour cela?

Je compile avec LLVM GCC 4.2 pour ce qui vaut la peine (mais pourrait probablement changer à l'autre si c'est le problème, n'ai pas essayé cela parce que je ne sais pas beaucoup au sujet des différences).

Répondre

0

Y at-il quelque chose (peut-être dans votre classe Map?) Qui nécessite un timing? Par exemple, un tapotement double qui est interrompu par le point de rupture est déclenché à cet endroit?

(pas de point d'arrêt => double tap enregistré, Breakpoint => deuxième robinet vient après coups de points d'arrêt, de sorte qu'un seul robinet est enregistré.)

Je ne vois pas quelque chose comme ça dans votre code spécifiquement, mais c'est le genre de chose qui pourrait montrer un comportement mystérieusement différent entre les points d'arrêt on/off.