Code::Blocks - Array-Werte während des Debuggen anzeigen



  • Hi,
    Wie kann ich mir bei Code::Blocks, während des Debuggens die einzelnen Werte eines Arrays anschauen?
    Wenn ich z.B. einen Arrays aus char habe und damit arbeite, dann zeigt mir Code::Blocks den immer wie folgt an:

    Name = char * Adresse "Inhalt"
    

    Nun will ich auch die Werte eines int Arrays mir ansehen, bekomm aber keine Werte, sondern nur die Adresse angezeigt. Also so:

    Name = (unsigned int*) Adresse
    

    Dankääää 😃



  • Hast du einen (aktuellen) Nightly?

    int main()
    {
        int foo[12];
    
        for (std::size_t pos = 0; pos < 12; pos++)
            foo[pos] = static_cast<int>(pos);
    
        //Breakpoint
    }
    

    Watches - Fenster:
    http://darthd.da.funpic.de/foo.png

    Wenn du das als Pointer deklarierst aka

    int * bar = foo;
    

    gehts nicht mehr.

    Vll schreibst du mal einen Feature Request 😉



  • Ich benutz den vom 20 Jun 07.

    Verdammt, genau das ist der Fall mit dem Pointer.
    Gibts keine andere Möglichkeit(außer mit einer for-Schleife und std::cout) die Werte meines Arrays zu überprüfen? (ist ein dynamischer Array, daher mit Pointer..)



  • edit: ups zweimal abeschickt...



  • früher bei vc6, als das noch nicht mit in std::vector gucken ging, hab ich das so gemacht:

    template <class T> checkVector(const std::vector<T>& v)
    {
      T data[hohezahl];
      std::copy(v.begin(), v.end(), data);
    
      // breakpoint, hier kannst du dann den inhalt vom vektor lesen.
    }
    

    so ähnlich kannst du das auch mit deinem array machen, musst nur wissen, wie groß es ist.



  • Watch setzen auf mein_array[12] für ein bestimmtes Element. Sollte übrigens auch gehen mit überladenden Klassen sofern ein Debug Symbol für den Operator in der Objektdatei vorhanden ist. Sollte der Fall sein falls der Operator (const und nicht const Version beachten!) irgendwo im Program benutzt wird.

    Ansonsten kannst du noch den @ Operator ausprobieren. Das würde dann irgendwie folgendermaßen aussehen:

    foo@12
    

    oder

    (*foo)@12
    

    Kann das im Moment nicht ausprobieren da ich ein inoffizieller GCC4.2 Port drauf hab mit dem GDB nicht gerne zusammen arbeitet, zu mindest was Watches angeht. 😞



  • mach mal rechtsklick -> add watch -> (as_pointer; watch as array; start = 0; count = 12)


Anmelden zum Antworten