Forcer à  stopper l'exécution pour toute erreur

MickMick Membre
13:49 modifié dans API AppKit #1
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.

Réponses

  • cyranocyrano Membre
    13:49 modifié #2
    heu..

    tu veux dire que tu as un depassement de capacité?

    un test et tu stop (breakpoint) si necessaire.....
  • AliGatorAliGator Membre, Modérateur
    13:49 modifié #3
    Tu peux configurer tes breakpoints pour qu'ils ne s'arrêtent que sous certaines conditions : qu'à  partir de la X-ième fois qu'ils sont touchés, mais pas les (X-1) première fois d'avant, que si une certaine condition est vraie (si une variable a une valeur donnée, etc)...
    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...
  • MickMick Membre
    13:49 modifié #4
    Merci à  tous les deux.

    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...
  • BunoBuno Membre
    13:49 modifié #5
    dans 1291401597:

    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...

    What?! Intéressant ça... Faudrait que je creuse ça en détail
Connectez-vous ou Inscrivez-vous pour répondre.