Plantage du simulateur sans erreur du compilateur

PierrePierre Membre
22:26 modifié dans Vos applications #1
Bonjour à  tous, je suis en train de développer une application et lorsque je la lance dans le simulateur elle plante (suite à  une action de ma part), mais sans aucun messages d'erreur.

J'ai mon dernier NSLog qui s'affiche et ensuite :

Session started at 2010-05-13 18:09:11 +0200.]
GNU gdb 6.3.50-20050815 (Apple version gdb-967) (Tue Jul 14 02:11:58 UTC 2009)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-apple-darwin".sharedlibrary apply-load-rules all
Attaching to process 75358.
(gdb)


Comment puis-je savoir d'où vient le problème ? Avez vous une idée de ce que je peut faire pour localiser la source du bug (intercepter  ce qui c'est passé en dernier et qui provoque le crash) ?

Merci d'avance pour vos lumières,
Pierre

Réponses

  • lgriffielgriffie Membre
    22:26 modifié #2
    As-tu essayé de redémarrer le simulator ? Parfois il lui arrive de ne plus fonctionner correctement et un simple arrêt/relance permet de le faire fonctionner de nouveau correctement.
  • AliGatorAliGator Membre, Modérateur
    22:26 modifié #3
    Met des breakpoints.
  • PierrePierre Membre
    22:26 modifié #4
    @lgriffie : j'ai même redémarrer xCode. :)

    @AliGator : je veut bien mettre des break-points mais je sait pas les utiliser. Tu connait une doc qui explique comment les utiliser ?

    Pierre

  • AliGatorAliGator Membre, Modérateur
    22:26 modifié #5
    Bah c'est pas compliqué, tu mets un breakpoint en cliquant dans la marge à  gauche de la ligne où tu veux le placer et basta. Comme dans tout IDE quoi. Après ça s'utilise comme n'importe quel autre breakpoint dans n'importe quel autre IDE aussi, tu run ton appli ça va s'arrêter sur les breakpoints, tu peux faire du step by step... enfin un breakpoint quoi.

    Et puis si tu veux une doc bah... devine quoi ? Pourquoi pas la doc Apple ?
    (pour info j'ai juste tapé "breakpoint site:developer.apple.com" dans google...)

    Je devrais sérieusement me créer un script qui crée une réponse aux messages redirigeant vers la doc Apple...
  • CéroceCéroce Membre, Modérateur
    22:26 modifié #6
    J'ai déjà  écrit pas mal de fois que le débogueur ne mordait pas...
    Tiens, je vais te faire économiser 30 pages de lecture laborieuse:

    [size=18pt]Le débogueur pour les Nuls[/size]
    - On met les points d'arrêt où on veut que ça s'arrête, en cliquant dans la marge.
    - On lance le programme en choisissant le menu Run > Debug.
    - On survole les noms des variables à  la souris pour connaà®tre leurs valeurs.
    - Quand le programme plante, on peut souvent savoir où rien qu'en regardant dans la fenêtre Debug ("Call Stack").
  • PierrePierre Membre
    mai 2010 modifié #7
    @AliGator & Céroce : merci pour ces explications. Je suis en train de débuguer mon code pas à  pas.

    Je connais le fonctionnement des "breakpoint" en théorie, mais je ne savait pas comment les mettre en place sur XCode et lancer le "pas à  pas". Merci maintenant je sait faire et j'y penserais la prochaine fois. :)

    L'erreur que j'ai relevé au moment du plantage c'est :
    Program received signal:  “EXC_BAD_ACCESS”.


    Je continue à  chercher le code qui produit cette erreur pour la patcher. :)

    Pierre

    EDIT : j'ai trouvé c'est un NSLog() qui met mon code par terre...

    J'ai déclaré la variable suivantes (dans le .h) :
    NSMutableArray *stories;
    


    Et j'ai ce code là  dans le .m :
    <br />// Customize the number of rows in the table view.<br />- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {<br />	NSLog(@&quot;numberOfRowsInSection : %@&quot;, [stories count]); //Ligne qui fait planter le simulateur<br />	return [stories count];<br />}<br />
    


    [stories count] renvoie un NSInteger. Faut-il le caster en String avant de faie un NSLog dessus ?

    Merci encore pour votre aide. :)
  • devulderdevulder Membre
    22:26 modifié #8
    // Customize the number of rows in the table view.
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
      NSLog(@numberOfRowsInSection : %@", [stories count]); //Ligne qui fait planter le simulateur
      return [stories count];

    bonjour,

    utilise %d pour afficher un NSInteger

  • PierrePierre Membre
    22:26 modifié #9
    @devulder : c'est noté merci pour l'infos. :)

    Pierre
Connectez-vous ou Inscrivez-vous pour répondre.