Kein Verlass mehr auf Debugger (wegen Threads)

Fragen und Bugreports zur PureBasic 4.0-Beta.
Kekskiller
Beiträge: 752
Registriert: 14.09.2004 21:39
Kontaktdaten:

Kein Verlass mehr auf Debugger (wegen Threads)

Beitrag von Kekskiller »

Mein Problem ist sehr unangenehm und erschwert mir die Entwicklung meines Programmes ungemein...

Programm: Ich habe ein Hauptprogramm, welches Bilder mit DirectX und Sprite3D zeichnet, zeitgleich läuft ein Thread, der die zu zeichnenden Objekte bewegt und in einem Datenfeld arbeitet. Es sind ganz einfache mathematische Sachen und Funktionsaufrufe, die keine DirectX oder 2DDrawing-Sachen benutzen.

Problem: Der Debugger zickt rum. Und zwar ständig. Er gibt nicht mal einen Befehl an, beendet sich einfach so, ohne dass ich auch nur ansatzweise in die Variablen-Werte einsehen kann. Zack und weg! Ich verstehe nur noch Bahnhof. Er hält willkürlich im Programm an und mein, es wurde beendet.

Ich krieg ne Krise @_@ ... Ich würde ja gerne den Programmcode posten, aber er ist über viele Includes verteilt und doch recht komplex, daher sehe ich darin keine so gute Möglichkeit. Habe mir auf einen eigenen Debuglogger geschrieben, der recht zuverlässig funktioniert. Nur stört es mich wirklich sehr, dass ich nicht alles sehen kann, was ich sehen will - ich kann ja nicht mal einen potenziellen Grund für all den Kram erkennen :evil: .


Einzige Ursache ist wohl der Thread... Ohne Thread hats immer sooo toll funktioniert. Forumssuche hab ich auch schon benutzt -> nichts sinnvolles gefunden...
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

Synchroniserst du die Datenzugriffe denn ordentlich? Multithreaded Programmieren ist manchmal ganz schön Haarig.

Wenn du dazu etwas lesen willst, da gab es an der FU Berlin eine gute Vorlesung zu, deren Folien online stehen: http://www.inf.fu-berlin.de/lehre/SS06/ALP4/
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Schau dir mal die Mutex-Funktionen an. Vielleicht helfen die dir bei deinem
Problem. Damit kannst du gleichzeitige Zugriffe auf die selben Objekte von
zwei verschiedenen Threads aus unterbinden.
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Wenn man im Debuggermodus ist, muss man halt alles etwas bremsen.
Da kommen Sachen wie Mutex Objekte doch sehr gelegen. Dann klappt
es auch mit dem Debuggen. Der Debugger ist halt nicht so fehlerfrei wie
es der Programmierer sich erhofft hat /:->. Gibt auch diverse andere Bugs,
die ich aber z.b. nicht rekonstruiert bekomme
Bild
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Checkliste:
(Unter Berufung auf die PB-Hilfe, in der alles steht!)
  • DirectX ist in Threads verboten unter Windows (MS einschränkung!)
  • Mutex Befehle intensiv nutzen
  • Man sollte bei gleichzeitiger Verwendung von Threads und einem Debugger den Threadsafe-Modus aktivieren!
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Gesperrt