vector-daten beim debuggen



  • SERVUS.

    ich habe eine frage, wie man sich den inhalt von vectordaten anzeigen lassen kann, wenn man das programm debuggt.
    wenn ich mir zum beispiel einen solchen vector definiere:

    vector <int> point;
    point.pushback(5);
    

    und dann will ich mir den wert point[0] anzeigen, dann kommt in diesem variablenfenster unter "wert" immer folgende meldung:

    Fehler: Anzeigen des Werts nicht möglich
    

    so wie kann ich mir den inhalt von point richtig anschauen?
    DANKE.
    STICK.



  • Nicht mit Standard C++.
    -> Falsches Forum



  • das verstehe ich jetzt nicht ganz, vectoren haben doch schon ganz schön was mit standard c++ zu tun, oder nicht?

    ich will doch einfach nur einen haltepunkt in mein programm einfügen und dann überprüfen, welche werte mein vector an dieser stelle hat. 😕



  • Hallo

    ja vector ist ein Teil des C++ Standards.
    Aber Debugger sind es nicht. Deshalb wirst du ins Compiler-Forum verschoben. Denn was du dafür machen must ist Debugger/IDE-abhängig.

    bis bald
    akari



  • Bei einem blanken Pointer oder Array könnte der Debugger etwas mit dem "point[0]" anfangen. Aber ein Vector ist kein blankes Array und hinter dem operator[] steht eine (normale) Memberfunktion, von der der Debugger keine Ahnung hat.

    Als Lösung könntest du dich mal durch die innere Structur der Vector-Klasse durchhangeln und dann "point._data[0];" ausgeben lassen (wie das Element heißt, ist nirgends definiert - aber irgendwo hat der Vector einen Pointer auf seinen Datenblock).



  • Also VC++ 2005 müsste das glaub ich korrekt anzeigen, den gesamten Container-Inhalt. Oder? Mir war jedenfalls danach.



  • @ARTCHI:

    nein, leider wird gar nichts angezeigt. schau dir mal bitte folgenden code an:

    vector <int> WINK[5];
    
    for (i=0;i<5;i++)
    {
       for (j=0;j<ENDE;j++)
            WINK[i].push_back(j);
    }
    

    so, wenn ich nun einfach im debugger-fenster folgenden ausdruck eingebe: WINK[i][j], dann gibts folgende meldung:

    CXX0058: Fehler: Überladenen Operator nicht gefunden

    leider wurde ich ja nicht mit meiner frage verschoben in das entsprechende forum 😞

    DANKE.
    STICK.



  • Also in meinem VC++2003 wird zumindest das erste, das letzte und das Ende vom Vector angezeigt. Bei einem Vector (da er ein Array implementiert) kann man aber unter Debug->Fenster->Arbeitsspeicher ein fenster aufmachen und dann unter Adresse die Adresse von _myfirst eingeben und schon sieht man alle Elemente.

    so, wenn ich nun einfach im debugger-fenster folgenden ausdruck eingebe: WINK[i][j], dann gibts folgende meldung

    Hem, weiß jetzt nicht was du damit bezwecken willst? Und vorallem, wo hast du das eingegeben? Mir ist solch eine Möglichkeit unbekannt.

    Unter Debugger->Fenster->Lokal kann man sich jedenfalls die aktuellen Variablen anschauen. Da müsste auch dein Vector zu sehen sein. Einfach aufklappen. VC2005 habe ich leider nicht mehr installiert, kann hier keine genaueren Infos mehr machen.



  • ich will damit bezwecken, dass ich weis, was in "WINK" drin ist.

    eingegeben habe ich "WINK[i][j]" im ÜBERWACHUNGS-DEBUG-FENSTER, also wenn man ALT+3 drückt.

    DANKE.
    STICK.



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum MFC (Visual C++) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Hallo,
    vielleicht hilft das hier:

    vector<int>point;
    // die Funktion zum ausgeben:
    void printint(const point)
    {
    	TRACE(L"Int Index: %d\n",point);
    }
    
    // ein paar werte eingeben:
    for(int i = 0; i < 10; i++)
    {
        point.push_back(i);
    }
    
    // und ausgeben:
    for_each(point.begin(), point.end(), printint);
    

    habs getestet es geht, so kann ich alles aus dem point ausgeben!
    vielleicht ist das was du haben wolltest??

    lg
    pixel



  • servus.

    danke für die antwort. aber ich wills ja nicht auf dem bildschirm ausgeben, sondern wenn ich einen haltepunkt eingefügt habe, so will ich dann im debug-fenster sehen, welche werte mein vector gerade hat.
    trotzdem danke.

    STEFAN.



  • Hallo

    Ich benutze VS2005 und da kann man sich auch den Inhalt von Vektoren ansehen. Einfach drüberfahren und auf + klicken.

    chrische



  • hallo CHRISCHE5.

    ARTCHI hat mir VS2005 auch schon empfohlen. ich werds am wochenende installieren.

    DANKE.
    STEFAN.


Anmelden zum Antworten