IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

message debuger GDB cannot access memory


Sujet :

C++

  1. #1
    Membre éclairé Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Par défaut message debuger GDB cannot access memory
    bonjour,

    alors j'ai un soucis, lorsque je debug mon code ci dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    void CSVParser::checkDataContent()
    {
        ILogger *logger = initLogger(INFO, true);
     
        std::vector<std::string> data;
        data.resize(m_data.size());
        data=m_data;
     
        //Create the vector that begin at the index 2 of the data vector.
        if(!data.empty())
        {
            auto start = std::next(data.begin(), 2);
            std::vector<std::string> sub_data(start, data.end());
            for (auto &it: sub_data)
            {
                try
                {
                    std::stod(it);
                }
                catch (const std::exception &e)
                {
                    logger->Log(ERROR, it + " cannot be converted to a double");
                }
            }
        }
    }
    sous gdb j'ai ce message d'erreur :

    <error: Cannot access memory at address 0x10176672000000>
    Le soucis vient du J'ai teste sous Valgrind pour voir si j'avais des fuites mémoire, mais le rapport Valgrind ne donne rien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    valgrind --tool=memcheck --gen-suppressions=all --leak-check=full --leak-resolution=med --track-origins=yes --vgdb=no ./build/main
    ==89679== Memcheck, a memory error detector
    ==89679== Copyright (C) 2002-2022, and GNU GPL'd, by Julian Seward et al.
    ==89679== Using Valgrind-3.19.0 and LibVEX; rerun with -h for copyright info
    ==89679== Command: ./build/main
    ==89679==
    ==89679== HEAP SUMMARY:
    ==89679== in use at exit: 16 bytes in 1 blocks
    ==89679== total heap usage: 88 allocs, 87 frees, 106,168 bytes allocated
    ==89679==
    ==89679== LEAK SUMMARY:
    ==89679== definitely lost: 0 bytes in 0 blocks
    ==89679== indirectly lost: 0 bytes in 0 blocks
    ==89679== possibly lost: 0 bytes in 0 blocks
    ==89679== still reachable: 16 bytes in 1 blocks
    ==89679== suppressed: 0 bytes in 0 blocks
    ==89679== Reachable blocks (those to which a pointer was found) are not shown.
    ==89679== To see them, rerun with: --leak-check=full --show-leak-kinds=all
    ==89679==
    ==89679== For lists of detected and suppressed errors, rerun with: -s
    ==89679== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
    Est ce que vous auriez une idée du problème ?

    Merci d'avance.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 053
    Billets dans le blog
    141
    Par défaut
    Bonjour,

    Compilez vous "en debug" (option -g) ?
    Sinon, l'astuce sera de mettre data.end() dans une variable (dans le code), puis de demander à gdb d'afficher cette variable .
    Sinon, l'autre chose, c'est que l'on peut faire confiance à la bibliothèque standard et dire que sub_data aura le contenu qu'il faut.
    Et finalement, peut être data est invalide ?
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 144
    Billets dans le blog
    4
    Par défaut
    C'est inutile de resize si tu vas juste copier les données directement.
    Est-ce que ton truc contient au moins 2 données pour prendre le second quand c'est pas vide ?
    Si tu ne sais pas utiliser le debugger, tu peux au moins print les valeurs au fur et à mesure.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

Discussions similaires

  1. [Lazarus] Erreur "Cannot access memory" : de brin !
    Par visithierry dans le forum Lazarus
    Réponses: 2
    Dernier message: 29/03/2020, 16h10
  2. Cannot access memory
    Par kimikou dans le forum C
    Réponses: 2
    Dernier message: 19/04/2011, 08h53
  3. [SIGBUS] Cannot Access Memory apres un Malloc?
    Par predacktor dans le forum C
    Réponses: 5
    Dernier message: 18/03/2006, 17h11
  4. Supprimer un message de demarrage d'access
    Par dynxd dans le forum Access
    Réponses: 5
    Dernier message: 04/10/2005, 19h00
  5. [API] Codage d'un moniteur de messages debug
    Par Pierre Castelain dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 15/01/2004, 19h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo