Forcer à stopper l'exécution pour toute erreur
Mick
Membre
Bonjour,
J'ai un problème sûrement simple :
Mon appli à un soucis à l'exécution, sauf que je n'arrive pas à debugger et donc à savoir d'où cela vient car le programme continue l'exécution et il y a juste un message de dépassement de capacité en log.
Mettre un breakpoint est embêtant car la méthode est appelée un très grand nombre de fois. Je voudrais donc que l'appli stoppe et que le débugger me montre où est l'erreur au lieu de continuer et de me mettre l'erreur en log.
J'ai un problème sûrement simple :
Mon appli à un soucis à l'exécution, sauf que je n'arrive pas à debugger et donc à savoir d'où cela vient car le programme continue l'exécution et il y a juste un message de dépassement de capacité en log.
Mettre un breakpoint est embêtant car la méthode est appelée un très grand nombre de fois. Je voudrais donc que l'appli stoppe et que le débugger me montre où est l'erreur au lieu de continuer et de me mettre l'erreur en log.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
tu veux dire que tu as un depassement de capacité?
un test et tu stop (breakpoint) si necessaire.....
Tu peux également mettre non pas des breakpoints sur une ligne de code donnée, mais lorsqu'une méthode particulière est appelée, par exemple mettre un breakpoint nommé "-[NSView drawRect:]" va arrêter le programme (comme tout breakpoint qui se respecte) sur tous les appels à la méthode drawRect de toutes les NSView, quelles qu'elles soient, et que ce soit ton code qui appelle la méthode ou les framework Apple qui l'appellent en interne...
Effectivement, j'avais à faire à un dépassement de capacité, et je voulais savoir exactement à quel moment.
En fait c'était dans la datasource d'une tableview qui est mise à jour après un appel à arrangedObjects d'un arrayController appelé via une notification (l'appel est fait si la sélection d'autres tables change). Mais pour certaines sélections pas de soucis, et de temps en temps un dépassement de capacité ! Erreur qui semblait aléatoire. Du coup j'ai résolu le problème en mettant un test avant l'accès au tableau de données en mettant un return NULL si l'accès n'est pas cohérent et c'est résolu.
Ca n'empêche que c'est quand même un peu louche...
What?! Intéressant ça... Faudrait que je creuse ça en détail