Bienvenue sur le forum !

Si vous souhaitez rejoindre la communauté, cliquez sur l'un de ces boutons !

Qt 5 : 5.9.1 - Qt Creator : 4.4.0 - Qt Installer : 2.0.3 - JOM : 1.1.2 - Qt Build suite : 1.7.0 - VS Qt 5 : 2.0.0

Mettre un point d'arrêt sur ASSERT failure in QList::operator[]: "index out of range"

20 Feb modifié dans Divers et inclassable
Salut à tous,

Je cherche à mettre un point d'arrêt lors d'un index invalide sur un QList.
j'ai bien un message dans la console:
[eDocCenter from ???] ASSERT failure in QList<T>::operator[]: "index out of range"
mais y a pas le nom de la méthode, pas très utile ...

J'avais déjà, par le passé, mis un point d'arrêt sur "qt_assert" et il me semblait que cela marchait, mais pas ici ...

Quelqu'un à une idée ?

Réponses

  • Salut,
    regarde au niveau de la call stack, car comme tu dois exécuter un truc du genre myList[myIndex] avec myIndex >= myList.size(), tu dois pouvoir déterminer quelle est ta ligne de code qui appel l'opérateur [] de QList.
  • 20 Feb modifié
    salut babaOroms,
    Mais j'ai pas de call stack, le prog plante et c'est tout, même en debug.
    J'ai réussi à trouver d'où ça venait:
    float progressTime=download.userList[ProgressTime].toFloat();
    userList est effectvement un QList

    Mais je n'avais aucune piste pour le trouver sans arrêter le prog d'une manière ou d'une autre.
    Et sur le net, j'ai trouvé une astuce, comme le message dans la console est genéré dans mon messageHandler, il suffisait de mettre le point d'arrêt dedans.

    Mais, ce n'est pas l'objet de mon post.
    Pour la std, j'ai un point d'arrêt sur "std::out_of_range" ça marche à condition d'ajouter _GLIBCXX_DEBUG=1 dans Build environment variables (sur Mac, car sur Linux ça marche sans)

    Je cherche donc l'équivalent pour Qt ...
  • 20 Feb modifié
    Et si tu lances ton appli en mode débogage (F5 sous QtCreator : enfin sous linux et windows).
    En fait je dis une bêtise, si tu as mis un point d'arrêt, c'est que tu es en debug.
    As-tu essayé de rentrer dans le code de Qt en mode pas à pas pour voir si tout est bien linké avec les libs debug de Qt
    C'est comme si le débogueur était limité à ton code.
  • 20 Feb modifié
    Oui, apparemment je ne rentre pas dans le code Qt, même si je clique bien sur l'icône qui permet de sauter dans une sous routine, le debogueur passe à la ligne suivante dans mon code.
  • Comment as-tu installé Qt sur ton mac ? via l’installateur online ?
  • 20 Feb modifié
    non, le fichier dmg sur download.qt.io
    Il semble que ce problème soit apparu avec Qt 5.7
  • J'aurai bien tenté une installation via l’installateur online juste pour voir si ça change quelque chose.

  • Je viens de faire un essai avec Qt 5.6 et j'ai la call stack, donc c'est bien Qt 5.7 qui merde.
    Je ne vais pas tenter l'instal online, ma ligne adsl est trop pourrie en ce moment.

    to be continued ...
Connectez-vous ou Inscrivez-vous pour répondre.