Bug relou avec xcode, sorte de point d'arret invisible ?

DjobirdDjobird Membre
mars 2010 modifié dans Apple Developer Programs #1
Bonjour,
j'ai un bug bien relou, de temps en temps, et de plus en plus souvent (à  un tel point que je n'arrive plus à  lancer mon appli normalement). L'appli se lance, et se bloque avec le debuger activé au milieu. Il n y a pas d'erreur, l'appli est juste bloquée, la pile a des actions en cours, etc.
Je n'ai aucun break point dessus.
Dans la console j'ai ca qui vient se mettre en plus :
<br />[Session started at 2010-03-17 22:52:28 +0100.]<br />GNU gdb 6.3.50-20050815 (Apple version gdb-967) (Tue Jul 14 02:11:58 UTC 2009)<br />Copyright 2004 Free Software Foundation, Inc.<br />GDB is free software, covered by the GNU General Public License, and you are<br />welcome to change it and/or distribute copies of it under certain conditions.<br />Type &quot;show copying&quot; to see the conditions.<br />There is absolutely no warranty for GDB.&nbsp; Type &quot;show warranty&quot; for details.<br />This GDB was configured as &quot;i386-apple-darwin&quot;.<br />sharedlibrary apply-load-rules all<br />Attaching to process 8629.<br />


Donc je comprends pas. J'ai Version 3.1.4, l'appli est lancée avec le simulateur en mode débug ou release.

Edit : Après test, j'ai remarqué la chose suivante :
Si dans Project->Edit Executable, que sous l'onglet Debugging je décoche  "Auto-attach debugger on crash", alors au lieu d'avoir le debuger une fois l'appli chargé, j'ai un crash du simulateur avec une erreur mac os

L&#39;application DjobirdAppli&nbsp; a quitte inopinément.<br />Mac OS X et les autres applications n&#39;ont pas été affectés. <br />blabla relancer, blabla ignorer...<br />


Mais pour autant je n'ai pas d'erreur afficher dans les logs ...

Réponses

  • DjobirdDjobird Membre
    05:01 modifié #2
    Bon, j'ai trouvé, c'était ... tordu.
    J'effectuais un release sur un NSString alors que ce n'était pas necessaire. Ce ne plantait pas au release mais après, je suppose quand le garbage s'en occupait. Je crois que j'ai vraiment rien compris au systeme de mémoire :/
  • zoczoc Membre
    05:01 modifié #3
    dans 1268938979:

    J'effectuais un release sur un NSString alors que ce n'était pas necessaire. Ce ne plantait pas au release mais après, je suppose quand le garbage s'en occupait

    Il n'y a pas de garbage collector sur l'iPhone. Ne pas planter immédiatement, c'est le coup classique pour les problèmes de gestion mémoire...


    Je crois que j'ai vraiment rien compris au systeme de mémoire :/

    Il va falloir comprendre pourtant, pour espérer sortir une application stable sur l'appstore...  ;)

  • AliGatorAliGator Membre, Modérateur
    05:01 modifié #4
    Ne surtout pas aller plus loin dans le dev iPhone si tu ne maà®trises pas la gestion mémoire.
    C'est pas méchant, il suffit de comprendre les quelques règles et la logique à  suivre, mais c'est priomordial et c'est aller droit dans le mur que de continuer à  programmer en Obj-C et pour iPhone sans l'avoir parfaitement compris, on ne l'aura jamais assez dit.

    Sinon, bonjour les plantages difficiles à  déboguer, les comportements erratiques de ton appli, et j'en passe ;)
  • GreensourceGreensource Membre
    05:01 modifié #5
    Je confirme, tu verrais la première appli que j'ai voulu sortir... on c'est occupé de la gestion mémoire trop tardivement et on a perdu un temps fou!

    Bonne lecture  ;)
    Memory Management
  • DjobirdDjobird Membre
    05:01 modifié #6
    Merci pour le lien.
    En fait, j'avais compris la grande majorité des principes (enfin j'espère :D), c'est juste que je pensais que l'auto release devait être explicite lors de l'accès a certaine proprieté. Alors que non ^^
Connectez-vous ou Inscrivez-vous pour répondre.