Debuggen, ich komm einfach nicht weiter



  • Hallo,

    ich habe in meinem Programm eine Zuweisung:

    AnsiString sFileName;
    
    sFileName = "Dateiname";
    ListBox1->Items->Add(sFileName);
    

    Wenn ich das Programm in der "Endgültigen" Version compiliere dann bekomme ich in der ListBox Müll ausgegeben, aber wenn ich in der "Voll-Debug" Version compiliere steht genau das drin was rein soll (-> Dateiname). Da ich nun im Debug-Mode den Fehler nicht finden kann, und ich auch schon mehrere Stunden damit verbracht habe und auf keinen Nenner komme, frage ich euch ob ihr mir helfen könnt. Wie kann ich den Fehler finden ? Meine new's und delete's habe ich schon überprüft und CodeGuard ist im BCB5Pro nicht drin.
    Mit MemProof habe ich es auch probiert, aber das was ich da angezeigt bekomme sagt mir überhaupt nichts.

    Danke und Gruß

    WoWe



  • Wie sieht's denn beim "Old School"-Debuggen per MessageBox aus, was steht im String?



  • Hallo Jansen,

    hab's mal mit ShowMessage() nach der Zuweisung probiert, aber da steht dann der gleiche Müll drinn.



  • Der gleiche Müll wie vor der Zuweisung? Und wenn du den String gleich bei der Deklaration initialisierst?

    Du merkst schon, ich rate auch nur rum. 😉



  • Ja, selbst wenn ich bei der Deklaration den String initialisiere, steht Müll drin. Der Müll ist aber ein Bruchteil eines anderen Strings, den ich beim Programmstart zuweise. Das Programm läuft bis auf diesen Fehler ohne Probleme und ich verstehe nicht, warum ich im Debug-Mode den Fehler nicht mehr habe und nachvollzihen kann. Das sieht so aus als ob irgendwie Pointer verbogen werden oder Speicherbereiche überschrieben werden, aber wie komme ich da ran ?


  • Mod

    Hallo

    schau mal nach ob du sFileName schonmal verwendest hast
    (hast du sonst noch was laufen - Timergesteuert / Threads usw)

    MfG
    Klaus



  • Hi WoWo

    Das sieht echt übel aus!!!

    Du scheinst mit 'nem ungueltigen / falschen Zeiger zu arbeiten! Du überschreibst 'nen "falschen" Speicherbereich mit Deiner Müllvariablen?

    Pruef mal Deine dynamischen Variablen und die Speicherreservierung!
    Speziell die Variable, der du den Mülltext zuweist!

    PS:
    Im Debugmodus liegen die Daten / Programmteile anders im Speicher!

    [ Dieser Beitrag wurde am 28.05.2003 um 20:03 Uhr von DerAltenburger editiert. ]



  • Vielen Dank für eure Hilfen.

    Hab mein Problem gefunden. Ich hab an 2 Stellen im Programm den User abgefragt und eine Abfrage war falsch:

    // Das Kuckucksei
    GetUserName( sUserName.c_str(), &dwSize );
    

    Die andere Abfrage hatte ich mit char* gemacht, die funktioniert auch und da der Compiler nicht gemeckert hat, hab ich nicht bemerkt.


Anmelden zum Antworten