PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Programm läuft beim debuggen, später nicht?


noid
2006-01-25, 12:14:46
Hab hier ein Programm was zur Debuggzeit 100% stabil und numerisch richtig lief. Jetzt kracht es (kein Netzwerk, keine sonstigen Spielereien) mit -INDs und INFs.

Wo kann ich suchen? Und warum zum Henker tritt das erst nach dem debuggen auf?

Demirug
2006-01-25, 13:11:23
Falsches Forum?

Zudem wären ein paar angaben zum verwendeten Compiler usw. nützlich.

Gohan
2006-01-25, 13:37:20
Verschoben :)

noid
2006-01-25, 13:45:34
Aus Gründen, die auf die ich nicht näher eingehen will, hab ich VC++ 6.0.

Wie sich aber mittlerweile rausgestellt hat knallt es an anderer Stelle, weshalb meine Berechnung garnicht anlaufen kann. Allerdings ist fragt sich meine wenigkeit, warum dieses Verhalten nicht auch beim Debuggen auftrat.

Es sind keine zeitlichen abhänigkeiten drin...

Demirug
2006-01-25, 13:48:12
Ach ich habe hier auch noch ein großes Projekt das ich gezwungenermaßen mit dem 6er Compiler durchlaufen lassen muss.

Benutzt du im Debugger einen Debug Build und außerhalb einen Release Build? Falls ja versuche mal den Debug Build außerhalb des Debuggers zu starten

Coda
2006-01-25, 14:00:00
Hast du vergessen irgendwelche Variablen mit 0 zu initialisieren?

noid
2006-01-25, 14:05:43
Ach ich habe hier auch noch ein großes Projekt das ich gezwungenermaßen mit dem 6er Compiler durchlaufen lassen muss.

Benutzt du im Debugger einen Debug Build und außerhalb einen Release Build? Falls ja versuche mal den Debug Build außerhalb des Debuggers zu starten

Genau dabei knallt es ja....

Hast du vergessen irgendwelche Variablen mit 0 zu initialisieren?

da muss ich nochmal nachschauen... müsste aber sein, dass diese initial auf Null sein müssen und das beim Debuggen schon hätte knallen müssen.

ollix
2006-01-25, 14:09:00
Nein, beim Debuggen kann dies der Compiler bzw. der eingebaute DebugCode übernehmen und sicherstellen, daß kein junk-data im Datentyp ist.

Coda
2006-01-25, 14:15:40
Eben. Im Debug-Modus wird alles mit 0 vorinitialisiert soweit ich weiß.

noid
2006-01-25, 14:44:08
Eben. Im Debug-Modus wird alles mit 0 vorinitialisiert soweit ich weiß.

Kann ich das abstellen? (Kann ich zwar grad nicht glauben, da zB die Zeiger immer wild in der Landschafft herumstehen).

Expandable
2006-01-25, 15:14:15
Also bei mir werden im VS2005 weder Zeiger noch Variablen (in C++) im Debug-Modus automatisch "genullt".

Gast
2006-01-25, 17:11:43
Aber der vc05 schmeisst im debug ne exception wenn du eine nicht intialisierte variable verwendest.

Coda
2006-01-25, 17:37:59
Also bei mir werden im VS2005 weder Zeiger noch Variablen (in C++) im Debug-Modus automatisch "genullt".Ich kann mich nur dunkel erinnern dass das bei mir mal so war. Ist aber schon ewig her. War ja auch nur ein Schuss ins Blaue, da ich mir nicht vorstellen kann was sonst außer den Inputdaten anders sein soll (außer der Codegenerator baut Mist).

noid
2006-01-25, 17:54:17
So, hab alles mal bei mir daheim auf mein VS05 umgestellt - und was ist?

VERDAMMTE SCHEIßE ES GEHT!!!!!!!

Was ein Käse....

Expandable
2006-01-25, 18:00:59
Ich kann mich nur dunkel erinnern dass das bei mir mal so war. Ist aber schon ewig her. War ja auch nur ein Schuss ins Blaue, da ich mir nicht vorstellen kann was sonst außer den Inputdaten anders sein soll (außer der Codegenerator baut Mist).

Unser Professor behauptet das allerdings auch. Nur bestätigen kann ich's trotzdem nicht.

Wenn man eine uninitialisierte Variable verwendet, kommt eine Compiler-Warnung. Manchmal wird auch eine Exception geworfen, aber nicht immer (kann sein, dass das nur bei uninitialisierten Pointern passiert, habe ich noch nie drauf geachtet, weil's mir ja eh im Build-Fenster angezeigt wird und man das so gleich fixen kann)...

ollix
2006-01-25, 18:24:07
Habe da auch schon länger nicht mehr drauf geachtet, aber das gibts/gabs defintiv (bei VS), war aber auch immer abschaltbar. Aber ich schau mal nach.

Der_Donnervogel
2006-01-26, 20:10:38
Kann es sein, daß vielleicht irgendwo versehentlich in den Speicher geschrieben wird (zB über Arraygrenzen rausgeschrieben, usw.), wo es eigentlich nicht sein sollte? Je nachdem was da überschrieben wird, kann, muß aber nicht, soetwas bei C ja zum Absturz führen. Im Debugmode wird ja zusätzlicher Code eingefügt, wodurch unter Umständen so etwas im Debugmodus funktionieren kann, aber durch die andere Anordnung des Codes im Releasemode, werden dann dort vielleicht Codeteile überschrieben, die zum Absturz führen. :rolleyes:

noid
2006-01-26, 21:24:14
Kann es sein, daß vielleicht irgendwo versehentlich in den Speicher geschrieben wird (zB über Arraygrenzen rausgeschrieben, usw.), wo es eigentlich nicht sein sollte? Je nachdem was da überschrieben wird, kann, muß aber nicht, soetwas bei C ja zum Absturz führen. Im Debugmode wird ja zusätzlicher Code eingefügt, wodurch unter Umständen so etwas im Debugmodus funktionieren kann, aber durch die andere Anordnung des Codes im Releasemode, werden dann dort vielleicht Codeteile überschrieben, die zum Absturz führen. :rolleyes:

Problem hat sich durch einen anderen Compiler gelöst. ;)

Neomi
2006-01-27, 02:16:53
Problem hat sich durch einen anderen Compiler gelöst. ;)

Gelöst hat es sich bestimmt nicht. Es versteckt sich und wartet, aber es ist immer noch da. Wenn das Programm eine halbwegs wichtige Aufgabe erfüllen soll, solltest du da nochmal nachforschen.

noid
2006-01-27, 02:32:29
Gelöst hat es sich bestimmt nicht. Es versteckt sich und wartet, aber es ist immer noch da. Wenn das Programm eine halbwegs wichtige Aufgabe erfüllen soll, solltest du da nochmal nachforschen.

Doch hat es. Geforscht noch weitere 5Std - keine Crashes oder lustigen Fehler aufgetreten. Irgendwas macht der neue Compiler anders.

ollix
2006-01-27, 09:49:01
irgendwelche Libaries, die auch noch gebaut wurden?