Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Eigenartiger Absturz

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Cherry



Anmeldungsdatum: 20.06.2007
Beiträge: 249

BeitragVerfasst am: 20.06.2007, 18:44    Titel: Eigenartiger Absturz Antworten mit Zitat

Es passiert mir beim Arbeiten mit Pointern, BLoad und FMOD.DLL (!), dass mein Programm sich ohne Vorwarnung beendet - ohne eine Fehlermeldung anzuzeigen! Es ist immer sehr schwierig, die verurscachende Zeile zu finden... Warum passiert dies?

Gruß, Cherry
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 20.06.2007, 19:16    Titel: Antworten mit Zitat

Das passiert glaub jeden hin und wieder mal, da hilft nur muehsame Fehlersuche mit Sleep hier und Print da um festzustellen ab wann sich das Programm aufhaengt grinsen
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
PMedia



Anmeldungsdatum: 14.08.2006
Beiträge: 2847

BeitragVerfasst am: 20.06.2007, 21:17    Titel: Antworten mit Zitat

Es ist gut möglich dass Windows dein prog wegen nem Speicherzugriffsfehler killt...
hast du irgendwo ein Array überschritten? Das Prüft der Compiler schl. nicht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 20.06.2007, 21:20    Titel: Antworten mit Zitat

beim ueberschreiten von Arrays kommt meist noch ein netter Windows Error!
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Cherry



Anmeldungsdatum: 20.06.2007
Beiträge: 249

BeitragVerfasst am: 21.06.2007, 13:25    Titel: Antworten mit Zitat

jetzt wirds noch eigenartiger: ich hab jetzt was neues - das Programm läuft normal, beim Beenden erscheint aber ein Fehlerfenster, dass der Vorgang read auf Speicherstelle irgendwas nicht ausgeführt werden konnte... Nach einigem probieren hab ich entdeckt, dass, wenn ich vorher mit FMOD eine Musik abspiele, sich das Programm einfach wieder mittendrin beendet!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 21.06.2007, 14:06    Titel: Antworten mit Zitat

du vesuchst wahrscheinlich per pointer einen bereich außerhalb des rams anzusprechen.
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 21.06.2007, 15:28    Titel: Antworten mit Zitat

Hallo,

welche FreeBasic-Version verwendest du? Ältere Versionen hatten einige komische Bugs, die ein abruptes Beenden des Programms verursachen konnten. Einfach mal
Code:
C:\FreeBasic\fbc -version

in die Kommandozeile eingeben. Du solltest mindestens 0.17 da stehen haben. lächeln

Viele Grüße!
Sebastian
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
PMedia



Anmeldungsdatum: 14.08.2006
Beiträge: 2847

BeitragVerfasst am: 21.06.2007, 16:28    Titel: Antworten mit Zitat

hm... ich selbst hab jetz einen Arrayzugriff über das Ende hinaus... und... keine Fehlermeldung, beendet halt abrupt.
Meine Vers. is 0.18
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Cherry



Anmeldungsdatum: 20.06.2007
Beiträge: 249

BeitragVerfasst am: 21.06.2007, 19:24    Titel: Antworten mit Zitat

die fehlermeldung kam ja beim "end"-Befehl... egal, hab jetzt entdeckt, was es war: Beim Laden der Bilder mit Get in einen ImageCreate-Speicherbereich habe ich versehentlich immer 1x1 Pixel zu viel geGETtet und somit in Bereiche geschrieben, wo ich nicht hin schreiben sollte... Gibts eigentlich eine Version, die Runtime Errors ausgibt, anstatt sich zu beenden oder einen Windows-Error zu verursachen? PS: Das wird was mit viel Grafik - ich erhalte bei einer Messung 300-400 FPS (!) - kann das stimmen? Ich verwende einen Sub UPDATE, der den Bildschirm aufbaut, und immer abwechselnd mit einem SLEEP 1 aufgerufen wird
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 21.06.2007, 19:28    Titel: Antworten mit Zitat

PMedia hat Folgendes geschrieben:
Es ist gut möglich dass Windows dein prog wegen nem Speicherzugriffsfehler killt...
hast du irgendwo ein Array überschritten? Das Prüft der Compiler schl. nicht.


Ähm.
Sicher?
Ich wette, dass er es macht.

Code:

Dim As Ubyte test(1 To 10)

For i As Integer = 1 To 10
    test(i) = i*i
Next i

For i As Integer = 1 To 100
    Print test(i)
Next i


Mit -exx kompilieren!
Ausgabe des Programms:

Zitat:
[laumen@localhost FreeBASIC-quellcodes]$ ./temp
1
4
9
16
25
36
49
64
81
100

Aborting due to runtime error 6 (out of bounds array access) at line 8 of temp.bas:traurig)


Und?
Noch immer der Überzeugung? Zunge rausstrecken
_________________
Code:
#include "signatur.bi"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 21.06.2007, 19:34    Titel: Antworten mit Zitat

Cherry hat Folgendes geschrieben:
die fehlermeldung kam ja beim "end"-Befehl... egal, hab jetzt entdeckt, was es war: Beim Laden der Bilder mit Get in einen ImageCreate-Speicherbereich habe ich versehentlich immer 1x1 Pixel zu viel geGETtet ...

hachja, erinnert mich immer wieder an mein spiel Fruit Battle... da hab ich immer die ImageCreate-Buffer nen pixel zu groß gehabt... durchgeknallt
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 21.06.2007, 19:38    Titel: Antworten mit Zitat

Jojo hat Folgendes geschrieben:
hachja, erinnert mich immer wieder an mein spiel Fruit Battle... da hab ich immer die ImageCreate-Buffer nen pixel zu groß gehabt... durchgeknallt


Zu gross kann unter umstaenden zu Grafikfehlern fuehren aber eher selten zu fehlern durch ueberschreiten des Buffers grinsen

Zitat:
300-400 FPS


Bei einem Stillleben vorstellbar, ansonsten moechte ich das auch ma schaffen durchgeknallt
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 21.06.2007, 20:19    Titel: Antworten mit Zitat

eben doch. beispiel:

Code:

A = imagecreate(14,12)
B = imagecreate(14,12)
get(1,1)-(14,12),A
get(1,1)-(12,14),B

das führt(e) zu nem hänger...
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 21.06.2007, 20:29    Titel: Antworten mit Zitat

bei den beiden Beispielen sind sie beide male zu klein, bzw falsch ausgelesen grinsen
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 21.06.2007, 20:36    Titel: Antworten mit Zitat

nein, beide sind NICHT zu klein (dran denken, ich GETte nicht von 0, sondern von 1!) - man dürfte eigenltich erwarten, dass der Speicher für 12*14 px genau so groß ist wie für 14*12 - aber nein, das prog mag das nicht...
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 21.06.2007, 20:39    Titel: Antworten mit Zitat

Und das sagt Du jemanden der es geschafft hat auf seinem Desktop zu pixeln grinsen grinsen grinsen
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 21.06.2007, 20:41    Titel: Antworten mit Zitat

jaja, wär cool wenn wir das nochma selbst sehen können durchgeknallt
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 21.06.2007, 20:55    Titel: Antworten mit Zitat

Jojo hat Folgendes geschrieben:
man dürfte eigenltich erwarten, dass der Speicher für 12*14 px genau so groß ist wie für 14*12

Nicht unbedingt. Wahrscheinlich wird erst mal zeilenweise gespeichert, wobei der Speicherbedarf pro Zeile von der Farbenzahl abhängt. Bei 16 Farben können 16 Pixel in ein Byte, also in oberem Fall eine komplette Zeile, egal ob die nun 12 oder 14 Pixel lang ist.
Bei 256 oder mehr Farben könnte es allerdings vielleicht wieder egal sein.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 21.06.2007, 21:10    Titel: Antworten mit Zitat

naja... aber nach dem neuen Pixelformat:

ist der Buffer immer 32byte Header
Pitch*BPP*Y

wobei Pitch, x bzw das naechtsgroesste durch 4 teilbare von x ist
was vermutlich fuer spaetere OGL Texturing functionen gedacht sein wird...

deswegen kann 16*14 auf keinen fall das gleiche wie 14*16 sein
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz