Debugging

Eric P.Eric P. Membre
10:37 modifié dans API UIKit #1
Bonjour,

Quelles sont les bonnes pratiques de debugging ?
Comment vérifier qu'il n'y a pas de fuite mémoire ?
Que tous les dealloc requis ont bien été mis ?
Etc

Merci

Eric P.

Réponses

  • 10:37 modifié #2
    dans 1241179983:

    Bonjour,

    Quelles sont les bonnes pratiques de debugging ?
    Comment vérifier qu'il n'y a pas de fuite mémoire ?
    Que tous les dealloc requis ont bien été mis ?
    Etc

    Merci

    Eric P.


    Tu as l'utilitaire "Instruments" dans le dossier Developer/
    Tu peux aussi rajouter des NSLog dans les dealloc pour voir si ils sont bien appelés.
  • schlumschlum Membre
    10:37 modifié #3
    Sans oublier Clang  :P
  • Philippe49Philippe49 Membre
    mai 2009 modifié #4
    Justement au sujet d'Instruments, il y a un symbole sur lequel j'ai toujours un doute. Je lance l'instrument Leaks et j'ai l'image ci-dessous. Dois-je interpréter cela comme un leak passager ou un leak définitif  ?

    [EDIT] C'est un leaks définitif !
  • Philippe49Philippe49 Membre
    mai 2009 modifié #5
    Bon j'ai ma réponse : ayant trouvé le leak, ce n'est pas un leak temporaire, mais un vrai de vrai.
    D'ailleurs le rapport était clair donnant la méthode où le leak avait lieu : la ligne 10 indiquait une erreur de ma part (je faisais un retain sur une mutableCopy, or une mutableCopy fait déjà  ce retain !)
  • Eric P.Eric P. Membre
    10:37 modifié #6
    Merci pour les réponses.

    J'ai essayé Instruments et j'ai de temps en temps comme Philippe49, des triangles rouges plus ou moins grands.
    A priori, les "addObject:[NSNumber numberWithFloat:..." ne sont pas apprécié.
    Dois-je déclarer un objet NSNumber, convertir mon float, ajouter l'objet puis le faire un release sur l'objet à  chaque fois ?

    Eric
  • Philippe49Philippe49 Membre
    mai 2009 modifié #7
    Un [NSNumber numberWithFloat:..] est créé en mode autorelease.
    Donc [array addObject:[NSNumber numberWithFloat:5.2]]; ne crée pas de leak.
    Et ta seconde méthode qui est bonne également, est une complication inutile. Ton leaks ne doit pas venir de là .
  • 10:37 modifié #8
    À ce propos,

    Leaked Object : CPManager


    Responsible Caller :
    -[NSInputManager _loadBundle]


    J'ai exactement pareil si je lance une app made in Apple.
    Un petit eclaircissement sur ce CPManager ? oO
  • Eric P.Eric P. Membre
    10:37 modifié #9
    En fait mes triangles apparaissent lorsque j'ai une action en cours au moment où la boucle "Leaks Status" fait son analyse.
    La même action lors du décompte du temps ne donne pas de triangle.
    Ai-je mal réglé quelque chose ?

    Eric
  • Philippe49Philippe49 Membre
    10:37 modifié #10
    A ce propos, attention au piège de Instruments quand on a installé le SDK 3.0 !
    Il faut régler le menu déroulant dans la tool bar
  • Philippe49Philippe49 Membre
    mai 2009 modifié #11
    dans 1241192880:

    La même action lors du décompte du temps ne donne pas de triangle.
    Ai-je mal réglé quelque chose ?

    Au contraire, c'est tout à  fait normal, le décompte du temps est un temps d'enregistrement, à  la fin duquel Instruments fait l'analyse et rédige ses conclusions.
  • Eric P.Eric P. Membre
    10:37 modifié #12
    Je me suis mal exprimé.
    L'action en question est un touchemoved.
    Si je la fais pendant le décompte, je n'ai pas de triangle à  l'analyse suivante.
    Mais si l'analyse a lieu pendant le touchemoved j'ai un triangle.
    Cela ne me semble pas normal.

    Eric
  • Philippe49Philippe49 Membre
    10:37 modifié #13
    J'ai eu aussi des choses incompréhensibles lors de tests Instruments avec le device, des "leaks" apparaissant alors que sur le Simulateur ils étaient absents. Personne n'a su me répondre sur le Forum-Developper d'Apple.
Connectez-vous ou Inscrivez-vous pour répondre.