tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
504
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    RuFFnEcK RuFFnEcK ist offline Mitglied Gold
    Registriert seit
    Jan 2004
    Beiträge
    203
    Hallo zusammen,

    wieder ich
    Ich hab echt das gefühl dass der Compiler so richtig behindert ist.
    Ich frag mich wozu initialisiere ich mit 0 wenn er drauf scheisst?
    Warum mach ich zuweisung wenn er die nicht übernimmt?
    Wofür schreib ich Code wenn er es eh weg "optimiert" ?

    Anfangs hatte ich das Problem dass er gar nicht mal in die Funktion GenerateTelegram() gesprungen ist,
    aber das lag an der Optimierungsoption, da die Funktion nur Membervariablen manipuliert hat die nicht weiter verwendet wurden, wurde diese Fkt weg optimiert...
    Optimierung ausgeschaltet -> wenigstens ruft er die Fkt. auf...
    ABER:
    Wenn es zum aufruf von generateTelegram() kommt stehen irgendwelche Werte im Array, obwohl im Moment des C´tor aufrufs alles auf 0x00 steht.
    Und er ignoriert manche Zuweisungen ganz, ich kann nicht mal brechpunkte setzen...
    Und die Zuweisungen wo cih noch brechpunkte setzen kann wo er auch anhält, passiert trotzdem nix, es wird zum verrecken nicht ins Array geschrieben *heul*

    Erstmal n bisle Code:

    Ich hab diese Klasse:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    class CCommunication
    {
     
    public:
        CCommunication(void);
        ~CCommunication(void);
    private:        
     
        BYTE m_aSendBuf[_PEBUS_ARRAY_SIZE];
        BYTE m_aRecBuf[_PEBUS_ARRAY_SIZE];
            bool            GenerateTelegramm(BYTE dwClientAddress, CDevice* pDevice, CommCommands cmd, CString varName);
     
            void InitializeVars(void);
    .
    .
    .usw.
    Der C´tor:
    Code :
    1
    2
    3
    4
    5
    6
    7
    
    CCommunication::CCommunication(void) :
     
            eStatus(StartUp),
            m_pIComm(NULL)
    {
        InitializeVars();
    }
    Die Methoden:
    Code :
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    
    bool CCommunication::GenerateTelegramm(BYTE dwClientAddress, CDevice* pDevice, CommCommands cmd, CString varName)
    {
        bool returnValue = true;
        std::vector<int>::size_type indexOfVar = -1;
        if(!varName.IsEmpty())
             indexOfVar = pDevice->GetIndexOfVar(varName);
        /*          
                                                                    // Pos   
        m_aSendBuf[0]       = dwClientAddress;                      // 0    src 
        m_aSendBuf[1]       = pDevice->GetAddress();                // 1    dst
        m_aSendBuf[2]       = PT_queryMasterSlave;                  // 2    pt Always send as Master-Slave telegram
        m_aSendBuf[3]       = PLEN;                                 // 3    dlen
        m_aSendBuf[4]       = QQ;                                   //  data  |
        m_aSendBuf[5]       = ZZ;                                   //       \ /
    */
        m_aSendBuf[0]       = 0x04;                     // 0    src 
        m_aSendBuf[1]       = 0x02;             // 1    dst
        m_aSendBuf[2]       = 0x13;                 // 2    pt Always send as Master-Slave telegram
        m_aSendBuf[3]       = 0x0D;                                 // 3    dlen
        m_aSendBuf[4]       = 0x00;                                 //  data  |
        m_aSendBuf[5]       = 0x00; 
        switch (cmd)
        {
            case cmdSwVersion:
            {
                m_aSendBuf[3] = 0x06;
                m_aSendBuf[6] = 0xB5;
                m_aSendBuf[7] = 0x09;
                m_aSendBuf[8] = 0x01;
                m_aSendBuf[9] = 0x28;
                break;
            }
            default:
            {
                returnValue = false;
            }
        }            
        return returnValue;
    }
     
    //----------------------------------------------------
    void CCommunication::InitializeVars(void)
    {
     
        for(int i(0); i < _PEBUS_ARRAY_SIZE; i++)
        {
            m_aSendBuf[i] = 0x00;
            m_aRecBuf[i]  = 0x00;
        }
    }

    Es ist einfach zum heulen, das kann doch nicht sein!
    Hab gedacht es lag viell. an den Zuweisung, Probleme mit konvertierungen oder ähnliches und hab dann explizit Werte zugewiesen...
    Aber nix ist, er t komplett drauf, amcht einfach gar nix mit dem Array.
    Hab solche Aggressionen aufgebaut hier das ist unglaublich, such grad nach jemanden den ich verantwortlich machen kann *g*
    Kennt jemand die Entwickler von M$ Visual Studio compilern
    Maaaan

    Hiiiilfe und danke im Vorraus.
     

  2. #2
    RuFFnEcK RuFFnEcK ist offline Mitglied Gold
    Registriert seit
    Jan 2004
    Beiträge
    203
    Ich muss mich korrigieren,
    nicht der Compiler ist behindert sondern der debugging modus...

    Ich hab jetzt nix drum gegeben was unter Überwachung im Array steht und dass die Zuweisungen nichts bewirkt haben und hab einfach weiter gemacht und das ganze verschickt...
    Und siehe da die Daten kommen doch richtig auf dem Bus an, nur das schwule Überwachungsfenster zeigt mir schrott an.
    AAAAAAhrg das kann doch net sein, hab getz den ganzen Tag daran verbracht den fehler zu finden...
    NUR IST DA GAR KEINER
    Wie kann man denn unter soner Umgebung auf dauer erfolgreich entwickeln?
    Ist das unter 2005 noch genauso?
    Unglaublich...traue nichts und niemandem...
     

  3. #3
    Avatar von jokey2
    jokey2 jokey2 ist offline Mitglied Smaragd
    Registriert seit
    Nov 2004
    Beiträge
    1.235
    Ich muß sagen, daß ich solche Probleme mit dem VS6 noch nie hatte. Es stürzt zwar manchmal grundlos beim Kompilieren ab, aber beim Debuggen ging bisher alles. Spätestens nachdem ich alles komplett neu kompiliert hatte. Sonst kann es vorkommen, daß er manche Variablen nicht im Watch-Fenster anzeigen kann. Bist Du sicher, das Du im Debug-Modus alle Optimierungen ausgeschaltet hast?
     

  4. #4
    RuFFnEcK RuFFnEcK ist offline Mitglied Gold
    Registriert seit
    Jan 2004
    Beiträge
    203


    Nein bin ich nicht

    Hab jetzt alles ausgeschaltet und tja was soll ich sagen alles so wie es sollte und
    ich mir das vorstelle und von Borland auch kenne
    Ich wusste nicht dass geschwindigkeit optimieren bedeutet dass er Zuweisungen nicht ausführt
    und im debug Fenster die zugewiesenen Werte nicht anzeigt.

    Aber es gibt immer was zu lernen

    Grüße RuFF
     

  5. #5
    Avatar von Endurion
    Endurion Endurion ist offline Mitglied Diamant
    Registriert seit
    Apr 2004
    Beiträge
    2.151
    Debug und Optimierung sollten NIE zusammen aktiviert sein. Wie du gemerkt hast, wird bei Optimierung einiges verändert oder ganz weggelassen. Das merkt man dann ganz toll beim Debuggen, wenn Zeilen nicht angesprungen/übersprungen werden oder Variablenanzeigen nicht so laufen wie sie eigentlich sollten.
    Hat einen Höllenspass gemacht, bis ich das bei meinen von einem selbstgebastelten Appwizard erstellten Programmen gemerkt habe, dass bei Debug keine Debug-Informationen generiert wurden.
     

  6. #6
    RuFFnEcK RuFFnEcK ist offline Mitglied Gold
    Registriert seit
    Jan 2004
    Beiträge
    203
    Wenn mans einmal weiß und alles abgestellt hat ist der Compiler eigentlich gar net schlecht
    Tja es sind meißt die Benutzer und nicht die Programme

    Aber spontane abstürze hab ich auch ab und zu mal, wenn ich mich z.B. an nen Prozess dran hängen will.
    Darum immer regelmäßig auf alles Speichern klicken *g*

    grüße
    RuFF
     

Ähnliche Themen

  1. Wo kriege ich den Visual C++.net Compiler her?
    Von psycomantis im Forum C/C++
    Antworten: 9
    Letzter Beitrag: 29.08.10, 07:31
  2. Antworten: 2
    Letzter Beitrag: 12.12.07, 19:25
  3. Antworten: 0
    Letzter Beitrag: 11.09.06, 11:48
  4. c++.net mit dem visual c++ 6 compiler
    Von psycomantis im Forum VisualStudio & MFC
    Antworten: 4
    Letzter Beitrag: 01.02.04, 13:06
  5. frage zum Ms visual c compiler
    Von wodka im Forum C/C++
    Antworten: 5
    Letzter Beitrag: 25.10.02, 20:46