Programm hängt sich unter Windows 10 auf
Programm hängt sich unter Windows 10 auf
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
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
Re: Programm hängt sich unter Windows 10 auf
Wann hängt sich dein Programm auf? Direkt beim Kompilieren oder beim Start oder irgendwann während der Laufzeit?
Nicht, dass ich wüsste. Mir ist nichts bekannt. Ich hatte nie Probleme damit. Was für einen Fehler hast du denn festgestellt?Thomas hat geschrieben:Achja, bevor ich's vergesse ... kann es sein, dass PB 5.62 bei ReadFile/OpenFile nen Bug hat?
Re: Programm hängt sich unter Windows 10 auf
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.Thomas hat geschrieben:Gibt es eine Möglichkeit das Programm wenn es vereckt zu debuggen, um den Fehler wenigstens eingrenzen zu können?
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.
And we're out of Beta, we're releasing on time.
Re: Programm hängt sich unter Windows 10 auf
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)
Auf Win10 sporadisch während der Laufzeit.
An dem Häkchen wäre ich echt interessiert
Code: Alles auswählen
Debug RGB(100, 200, 50) ; Als einzige Zeile ... sonst nix
An dem Häkchen wäre ich echt interessiert
Die Datei wird einfach nicht geöffnet, sprich 0 zurückgegeben. PC-Neustart behebt das Problem ...Nicht, dass ich wüsste. Mir ist nichts bekannt. Ich hatte nie Probleme damit. Was für einen Fehler hast du denn festgestellt?
v6.00
- 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
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 . 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.
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Re: Programm hängt sich unter Windows 10 auf
Wenn du deine Antivirensoftware temporär deaktivierst, besteht das Problem weiterhin?Thomas hat geschrieben:Hier auf Win7 hatte ich das Problem immer gleich nach'm compilieren
Wenn nicht, dann liegt es daran und du musst eine Ausnahme-Regel für PB erstellen.
Re: Programm hängt sich unter Windows 10 auf
Ja, es sind 2 oder 3 Threads die da laufents-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 . Die File-Lib ist zwar threadsafe, aber nur wenn auch entsprechend programmiert wird. Die Compiler-Option sichert kaum mehr als die Strings ab.
Wie programmiert man Threadsafe, worauf ist zu achten? Gab scheinbar "damals" nen guten Grund, einen Bogen darum zu machen
Die File-Lib wird nicht in Thrads verwendet.
Nö, das Problem mit Debug RGB ist dann weg.RSBasic hat geschrieben:Wenn du deine Antivirensoftware temporär deaktivierst, besteht das Problem weiterhin?Thomas hat geschrieben:Hier auf Win7 hatte ich das Problem immer gleich nach'm compilieren
Wenn nicht, dann liegt es daran und du musst eine Ausnahme-Regel für PB erstellen.
v6.00
Re: Programm hängt sich unter Windows 10 auf
// 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
-> 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
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
-> 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
v6.00
- NicTheQuick
- Ein Admin
- Beiträge: 8679
- 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
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. 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.
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. 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.
- 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
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.Wie programmiert man Threadsafe, worauf ist zu achten?
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.
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.