Programm hängt sich unter Windows 10 auf

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Thomas
Beiträge: 893
Registriert: 06.07.2006 19:24
Wohnort: Regensburg
Kontaktdaten:

Programm hängt sich unter Windows 10 auf

Beitrag von Thomas »

Servus!

Ich schreibe ja alle PB-Programme hier auf meinem Win7-Rechner. Aktuell brauche ich aber eins auf meinem Win10-Tablet.

Mein Programm hängt sich aber am Win10-Tablet immer auf. Ohne "Kommentar" - Gibt es eine Möglichkeit das Programm wenn es vereckt zu debuggen, um den Fehler wenigstens eingrenzen zu können?

Wenn ich in meinem Programm Threads verwende, muss ich in den Compiler-Optionen "Thread-Sicheres Executeable erstellen" aktivieren?


Achja, bevor ich's vergesse ... kann es sein, dass PB 5.62 bei ReadFile/OpenFile nen Bug hat? :?

Sry, bin gerade etwas verzweifelt ....

Grüße
Thomas
v6.00
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Programm hängt sich unter Windows 10 auf

Beitrag von RSBasic »

Wann hängt sich dein Programm auf? Direkt beim Kompilieren oder beim Start oder irgendwann während der Laufzeit?
Thomas hat geschrieben:Achja, bevor ich's vergesse ... kann es sein, dass PB 5.62 bei ReadFile/OpenFile nen Bug hat? :?
Nicht, dass ich wüsste. Mir ist nichts bekannt. Ich hatte nie Probleme damit. Was für einen Fehler hast du denn festgestellt?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
diceman
Beiträge: 347
Registriert: 06.07.2017 12:24
Kontaktdaten:

Re: Programm hängt sich unter Windows 10 auf

Beitrag von diceman »

Thomas hat geschrieben:Gibt es eine Möglichkeit das Programm wenn es vereckt zu debuggen, um den Fehler wenigstens eingrenzen zu können?
Ich bin grad nicht an meinem Computer, aber ich meine in der "Preferences" im Menü gibt es ein Häkchen, was du aktivieren kannst, daß PureBasic bei einem Fehler ein Error-Logfile anlegt, bzw. in ein solches hineinschreibt. Dann hast du auch Feedback, wenn die IDE mal verreckt.
Hängt sich dein Programm auch auf, wenn du es ohne Debugger compilierst?
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.
Benutzeravatar
Thomas
Beiträge: 893
Registriert: 06.07.2006 19:24
Wohnort: Regensburg
Kontaktdaten:

Re: Programm hängt sich unter Windows 10 auf

Beitrag von Thomas »

Hier auf Win7 hatte ich das Problem immer gleich nach'm compilieren - sprich, entweder ging's oder ging's garnicht. (Aber das habe ich nicht für ganz Voll genommen, hatte das Problem sogar mit diesem Code)

Code: Alles auswählen

Debug RGB(100, 200, 50) ; Als einzige Zeile ... sonst nix
Auf Win10 sporadisch während der Laufzeit.

An dem Häkchen wäre ich echt interessiert :)


Nicht, dass ich wüsste. Mir ist nichts bekannt. Ich hatte nie Probleme damit. Was für einen Fehler hast du denn festgestellt?
Die Datei wird einfach nicht geöffnet, sprich 0 zurückgegeben. PC-Neustart behebt das Problem ...
v6.00
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Programm hängt sich unter Windows 10 auf

Beitrag von ts-soft »

Deine Aussage lässt vermuten, das Du threads verwendest. Da liegt dann wahrscheinlich auch Deine Problem. Es muss mehr getan werden, als nur den Haken in den Compiler-Optionen zu setzen :mrgreen: . Die File-Lib ist zwar threadsafe, aber nur wenn auch entsprechend programmiert wird. Die Compiler-Option sichert kaum mehr als die Strings ab.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Programm hängt sich unter Windows 10 auf

Beitrag von RSBasic »

Thomas hat geschrieben:Hier auf Win7 hatte ich das Problem immer gleich nach'm compilieren
Wenn du deine Antivirensoftware temporär deaktivierst, besteht das Problem weiterhin?
Wenn nicht, dann liegt es daran und du musst eine Ausnahme-Regel für PB erstellen.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Thomas
Beiträge: 893
Registriert: 06.07.2006 19:24
Wohnort: Regensburg
Kontaktdaten:

Re: Programm hängt sich unter Windows 10 auf

Beitrag von Thomas »

ts-soft hat geschrieben:Deine Aussage lässt vermuten, das Du threads verwendest. Da liegt dann wahrscheinlich auch Deine Problem. Es muss mehr getan werden, als nur den Haken in den Compiler-Optionen zu setzen :mrgreen: . Die File-Lib ist zwar threadsafe, aber nur wenn auch entsprechend programmiert wird. Die Compiler-Option sichert kaum mehr als die Strings ab.
Ja, es sind 2 oder 3 Threads die da laufen :freak:
Wie programmiert man Threadsafe, worauf ist zu achten? :? Gab scheinbar "damals" nen guten Grund, einen Bogen darum zu machen :bounce:

Die File-Lib wird nicht in Thrads verwendet.
RSBasic hat geschrieben:
Thomas hat geschrieben:Hier auf Win7 hatte ich das Problem immer gleich nach'm compilieren
Wenn du deine Antivirensoftware temporär deaktivierst, besteht das Problem weiterhin?
Wenn nicht, dann liegt es daran und du musst eine Ausnahme-Regel für PB erstellen.
Nö, das Problem mit Debug RGB ist dann weg.
v6.00
Benutzeravatar
Thomas
Beiträge: 893
Registriert: 06.07.2006 19:24
Wohnort: Regensburg
Kontaktdaten:

Re: Programm hängt sich unter Windows 10 auf

Beitrag von Thomas »

// Nachtrag ...
es scheint wirklich irgendwie an den Threads zu hängen:
-> mit der "Thread-Sicheren Exe" ist es besser, also das Programm schließt sich nicht mehr ohne Grund, sondern friert "nur" ein :mrgreen:
-> das Problem kommt nur vor, wenn gerade Threads im Spiel sind.

=> wird ein steiniger Weg. Also wenn Ihr Tipps für sauberes Programmieren mit Threads habt, her damit. In der Hilfe steht ja nur man soll Vorsichtig sein - das lässt Interpretationsfreiraum :praise:
v6.00
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8677
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Programm hängt sich unter Windows 10 auf

Beitrag von NicTheQuick »

Man kann nicht pauschal sagen, worauf man bei Threads achten muss, ohne weit auszuholen.
Du musst bei Threads allerdings dran denken, dass diese eben parallel nebeneinander laufen und es deswegen wichtig ist gemeinsame Ressourcen wie globale Variablen, Listen und Arrays und mehr gegenseitig abzusichern, wenn sie in mehr als einem Thread verwendet werden. Dafür gibt es unter anderem CreateMutex() und CreateSemaphore(). Beispiele gibt es auch in der Hilfe.
Angenommen du hast einen Thread, der eine globale Variable i 1000 mal um eins erhöht. Dann startest du diesen Thread x mal gleichzeitig. Das Ergebnis wird mit hoher Wahrscheinlichkeit nicht x * 1000 sein. Deswegen musst du die Variable mit einem Mutex schützen, indem du Lese- und Schreibzugriffe auf diese Ressource damit umschließt.

Aber ich merke schon. Ich fange wieder an zu weit auszuholen. :-D Machen wir es doch lieber umgekehrt. Was willst du mit deinen Threads machen? Dann können wir dir sagen, auf was du in diesem konkreten Fall Acht geben musst.

Ach, und denk dran. Dein Hauptprogramm ist auch ein Thread. Also mit dem ersten Aufruf von CreateThread() hast du bereits zwei Threads am Laufen. ;-)
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Programm hängt sich unter Windows 10 auf

Beitrag von ts-soft »

Wie programmiert man Threadsafe, worauf ist zu achten?
Das kann man so pauschal nicht beantworten, aber auf jeden Fall sind alle Objekte mit Mutex abzusichern. Desweiteren ist darauf zu achten, das alle Threads regulär beendet werden, bevor man sein Programm schließt (wäre z.B. bei FileLib erforderlich, das wirklich CloseFile() aufgerufen wird, das Du ja nicht nutzt.

Also Listen, Arrays usw. mit Mutex absichern und Threads sicher mit Semaphoren (SignalSemaphore()) absichern. Ohne Code kann ich Dir aber kein Beispiel geben.

Nachtrag: NickTheQuick war wohl schneller
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten