maddin Geschrieben 1. November 2001 Teilen Geschrieben 1. November 2001 nun mal eine wichtige frage. ich habe ein programm geschrieben und diese erstellt. mit eingebacken wurden die debuginfos. das programm läuft einwandfrei. wenn ich nun das programm ohne die debuginfos als release version backe und starte bekomme ich fehlermeldungen über schreiben und / oder lesefehler. kann sicher einer von euch vorstellen warum ??? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Crush Geschrieben 1. November 2001 Teilen Geschrieben 1. November 2001 Mit welchem Compiler arbeitest Du? Das hier kapier ich auch nicht so ganz genau: "bekomme ich fehlermeldungen über schreiben und / oder lesefehler" Heißt das, Du bekommst Fehlermeldungen wenn Du schreibst oder weil das Programm irgendwas schreiben will oder macht es Lesefehler, wenn Du den / verwendest??? Irgendwie ist das sehr unpräzise ausformuliert. Um was für ein Programm handelt es sich denn? Arbeitest Du mit DLLs oder gibt es externs, die vielleicht nicht richtig aufgelöst werden? Was sagt der Linker? Was meint der Compiler? (als Log) DOS/WINDOWS/LINUX/UNIX? Was für Compiler-Optionen sind aktiviert? Solange man da nix Genaueres weiß, kann man sicherlich nicht weiterhelfen. Der Fehler wird sich bestimmt in den Optionen finden lassen. Bei manchen Compilern sind die Optionen für den Release und den Debug komplett anders. Es sind bestimmte Optionen möglich, die beim anderen nicht möglich sind. <FONT COLOR="#a62a2a" SIZE="1">[ 01. November 2001 18:13: Beitrag 2 mal editiert, zuletzt von Crush ]</font> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
maddin Geschrieben 2. November 2001 Autor Teilen Geschrieben 2. November 2001 als ide verwende ich das vs 6.0 von ms. die einstellungen sind auf standard geblieben. bis auf die tatsache, das ich einige libraries für die ipl (Image Processing Library) von Intel hinzugefügt habe. das compilieren funktioniet einwandfrei und ohne fehlermeldung. in beiden varianten (Debug / Release). der fehler tritt dann beim starten oder nach einiger zeit des programmlauf auf. und zwar bekomme ich eine fehlermeldung mit dem altbekannten wortlaut: [FEHLER] Die Anweisung in 0x004077ec verweist auf Seicher in 0x07100192. Der Vorgang written konnte nicht auf dem Speicher durchgeführt werden. OK -> Anwendung beenden Abbrechen -> Anwendung debuggen. [/FEHLER] was mich daran wundert, ist das diese fehlermeldung bloß beim ausführen der Release - Version und nicht bei der Debug - Version auftritt. hoffe dass das nun ein wenig verständlicher geworden ist. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Crush Geschrieben 2. November 2001 Teilen Geschrieben 2. November 2001 Schalte beim Release das Optimieren runter! Es kann sein, daß er versucht auf einen far-pointer zuzugreifen, aber den code auf die Speichermodelle tiny, small, medium oder compact runterzuschrauben versucht. Das sind dann illegale Speicherzugriffe. Auch die Optimierungen auf mixed können mal zu sowas führen. Schau Dir mal die Compiler-Optionen beim Debug an und Vergleiche sie mit denen der Release. Versuche einfach Schritt für Schritt alle Optimierungen eins nach dem anderen auszuschalten. Halte nach diesen Optimierungseinstellungen Ausschau: /Oa, /Ow, /Oc, /Og, /Oe, /Oi, /Ol, /Os, /Ot, /Ox, /Oz /G3 /FPa /FPc /FPc87) Gib dem nmake-Aufruf noch vielleicht das hier mit (L=Large,F=Flat (wenn ich mich nicht täusche)): MODEL=L Tritt der Fehler dann immer noch auf handelt es sich um einen Programmfehler, also eine normale Bereichsüberschreitung oder Zugriffe auf Speicher, der dem Programm nicht zugeordnet ist oder nicht geliefert werden kann. Näheres kannst Du auch hier lesen, weil da ein ähnliches Problem bestand: http://217.115.144.9/cgi-bin/ubbcgi/ultimatebb.cgi?ubb=get_topic&f=18&t=000703&co unterhit=yes Der Speicherabstand liegt extrem weit auseinander zwischen der Adresse und dem Zugriff (über 114 MB). Tritt der Fehler auf bevor Du ein Bild geladen hast oder danach? Sollte es davor sein, ist es auf jeden Fall eine normal Bereichsüberschreitung oder es wird halt irgend ein Zeiger falsch gecastet initialisiert. Sollte es größer sein, dann rechne mal aus, ob die Größe des Bildes in entpacktem Format überhaupt diese Größe erreichen kann. Lade ganz einfach ein extrem kleines Bild mit 5x5 Pixeln von mir aus und warte bis der Fehler erneut auftritt. Ist die Zugriffsadresse immer noch so extrem weit im Speicher verteilt, weist das auch wieder auf einen falsch gesetzen Zeiger hin. Starte das Programm mal direkt im Debugger mit den Optimierungen der Release-Version und lasse es dort laufen. Der fängt dann schon rechtzeitig die Fehlzugriffe ab und so kannst Du bestimmt leichter rausfinden woran es harpert. <FONT COLOR="#a62a2a" SIZE="1">[ 02. November 2001 11:26: Beitrag 3 mal editiert, zuletzt von Crush ]</font> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gmeiner P Geschrieben 6. November 2001 Teilen Geschrieben 6. November 2001 Ich hatte auch mal so ein Problem. Und wie bereits schon erwähnt wurde solltest du zunächst die Compileroptimierungen ausschalten. Handelt es sich dann wirklich um einen Programmfehler so ist es höchstwahrscheinlich eine Speicherüberschreibung. Im Debug-Build hat nämlich jede Variable einen zusätlichen Puffer um den reservierten Speicherplatz, so das der Fehler im Debug-Build nie auffliegen würde da hier der Puffer vorhanden ist. Im Release-Build ist dies wie gesagt nicht der Fall. Achte auch noch auf Assertions den diese werden im Release-Build komplett ignoriert. Mach einfach mal einen Build im Release-Modus mit Debug-Infos und lass die Releaseversion mal im Debugger laufen. Dann sollte es ein leichtes sein den bug zu finden. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.