Erreur lldb + array

'soir,



soit Xcode 4.5, sdk IOS6.



J'ai une classe qui a une propriété NSMutableArray dans laquelle j'ai mis un objet. Je mets un point d'arrêt dans cette classe. Dans ma fenêtre des variables, je vois quelque chose comme :



scores = (__NSArrayM *) 0x01245784 @1 object



Comme j'ai envie d'en savoir un peu plus sur cet objet, dans la console, je tape :



po [scores objectAtIndex:0]



Et lldb me répond :


<br />
Internal error [IRForTarget]: Couldn&#39;t rewrite external variable _ZZ51-[FGViewController(&#036;__lldb_category) &#036;__lldb_expr:]E19&#036;__lldb_expr_result<br />
error: Couldn&#39;t materialize struct: Structure hasn&#39;t been laid out yet<br />




J'ai rien trouvé sur Google... Des idées ?





Merci !
Mots clés:

Réponses

  • AliGatorAliGator Membre, Modérateur
    septembre 2012 modifié #2
    Si tu tapes juste [tt]po scores[/tt] ou plutôt si c'est bien une propriété et non une ivar : [tt]po self.scores[/tt] ça marche ou tu as une erreur aussi ?
  • 'AliGator' a écrit:


    Si tu tapes juste [tt]po scores[/tt]

    <br />
    (lldb) po scores<br />
    Internal error [IRForTarget]: Couldn&#39;t rewrite external variable _ZZ51-[FGViewController(&#036;__lldb_category) &#036;__lldb_expr:]E23&#036;__lldb_expr_result_ptr<br />
    error: Couldn&#39;t materialize struct: Structure hasn&#39;t been laid out yet<br />
    

    'AliGator' a écrit:
    ou plutôt si c'est bien une propriété et non une ivar : [tt]po self.scores[/tt] ça marche ou tu as une erreur aussi ?

    <br />
    (lldb) po self.scores<br />
    Internal error [IRForTarget]: Couldn&#39;t rewrite external variable _ZZ51-[FGViewController(&#036;__lldb_category) &#036;__lldb_expr:]E19&#036;__lldb_expr_result<br />
    error: Couldn&#39;t materialize struct: Structure hasn&#39;t been laid out yet<br />
    
  • Tu l'as mis à  quel moment ton point d'arrêt ?
  • Dans une méthode qui utilise cette collection. Cette dernière est déjà  initialisé et contient déjà  un élément. Plus loin dans le code, j'ajoute un élément et je la réordre. Avec un ou deux éléments, le problème est le même.
  • Je viens d'essayer de créer un nouveau projet iPad, iOS6, et le problème est toujours là ...
  • CéroceCéroce Membre, Modérateur
    Pourrais-tu nous donner ce projet?
  • Voici le projet. Je suis parti de zéro (je mets un point d'arrêt dans FGViewController.m, ligne 19. Quand je lance le projet (sur le simulateur) et qu'il s'arrête sur le point d'arrêt, j'ai ça dans la console :


    <br />
    Internal error [IRForTarget]: Couldn&#39;t rewrite external variable _ZZ51-[FGViewController(&#036;__lldb_category) &#036;__lldb_expr:]E19&#036;__lldb_expr_result<br />
    




    A chaque "step over", j'ai le même message.



    Et si je veux afficher quelque chose :


    <br />
    (lldb) po self.nibName<br />
    Internal error [IRForTarget]: Couldn&#39;t rewrite external variable _ZZ51-[FGViewController(&#036;__lldb_category) &#036;__lldb_expr:]E19&#036;__lldb_expr_result<br />
    error: Couldn&#39;t materialize struct: Structure hasn&#39;t been laid out yet<br />
    






    Merci !!!!!
  • CéroceCéroce Membre, Modérateur
    Si ça peut te rassurer, j'obtiens très exactement le même résultat.

    C'est un bug de Xcode ou de lldb, quoi.
  • 'Céroce' a écrit:


    Si ça peut te rassurer, j'obtiens très exactement le même résultat.

    C'est un bug de Xcode ou de lldb, quoi.


    En fait, ça ne me rassure pas vraiment... J'ai de la peine à  croire qu'il s'agisse d'un bug Xcode ou lldb, sinon tout le monde aurait le même problème ! Ce que je fais dans ce projet est plus que trivial !!!

    Est-ce que quelqu'un pourrait créer un projet basique comme le mien avec Xcode 4.5, ajouter quelques lignes de code comme je l'ai fait et poster son projet ? Histoire que je vois ce que ça donne sur ma machine ?



    Merci !
  • Voilà  pourquoi j'utilise pas LLDB, j'ai toujours eu des merdes.



    Passe en GDB et tu pourras débugguer tranquile.
  • Je pense qu'un bugreport Apple + LLVM est de rigueur.



    Je me suis un peu amusé à  lire les sources de LLDB vu que j'avais du temps à  perdre, et de ce que je comprend, __lldb_category serrait une variable globale que LLDB trouve dans l'environnement mais dont il n'arrive pas à  retrouver la déclaration.



    Je n'ai plus de machine pré SDK 5.1 mais à  jouer les oracles, j'aurais tendance à  dire qu'il manque un bout de LLDB dans l'environnement de débug iOS (au hasard PrivateFramework/LLDB.framework).



    Si quelqu'un a une ancienne version d'Xcode juste pour me dire s'il est l'heure de dormir ou si ça va encore :-p
  • 'JegnuX' a écrit:


    Voilà  pourquoi j'utilise pas LLDB, j'ai toujours eu des merdes.



    Passe en GDB et tu pourras débugguer tranquile.


    Question bête, il suffit de changer le "Complier for C/C++/Objective-C dans les Build Settings pour ne plus utiliser lldb ?
  • 'yoann' a écrit:


    Je pense qu'un bugreport Apple + LLVM est de rigueur.



    Je me suis un peu amusé à  lire les sources de LLDB vu que j'avais du temps à  perdre, et de ce que je comprend, __lldb_category serrait une variable globale que LLDB trouve dans l'environnement mais dont il n'arrive pas à  retrouver la déclaration.



    Je n'ai plus de machine pré SDK 5.1 mais à  jouer les oracles, j'aurais tendance à  dire qu'il manque un bout de LLDB dans l'environnement de débug iOS (au hasard PrivateFramework/LLDB.framework).



    Si quelqu'un a une ancienne version d'Xcode juste pour me dire s'il est l'heure de dormir ou si ça va encore :-p




    Ok, je vais annoncer le bug. Mais ce qui m'étonne quand même, c'est que je fais quelque chose de on ne peut plus standard qui génère ces problèmes, alors que je ne trouve rien sur le net ! Je ne suis quand même pas le seul à  créer un nouveau projet et à  vouloir le débugger ?!?!?!?
  • AliGatorAliGator Membre, Modérateur
    'olof' a écrit:


    Question bête, il suffit de changer le "Complier for C/C++/Objective-C dans les Build Settings pour ne plus utiliser lldb ?
    Non ça c'est le régalge pour changer de compilateur celui dont tu parles.



    Là  l'idée c'est de changé de débugueur pour passer de lldb à  gdb, pas de changer de compilateur pour passer de llvm à  gcc.

    Cela se fait dans le Scheme : menu Product > Edit Scheme et quand tu choisis l'action "Run" (ou pour Test ça le propose aussi) dans l'onglet Info tu peux choisir l'exécutable à  lancer, etc... et le débugueur à  utiliser pour débuguer l'exécutable que tu lances.
  • Ok, merci Ali. De plus, j'ai reporté le bug chez Apple...
Connectez-vous ou Inscrivez-vous pour répondre.