Seite 10 von 12
Re: Sehr gute IDE nicht einigen haken
Verfasst: 10.10.2005 16:00
von FloHimself
mk-soft hat geschrieben:String´s sind noch nicht threadfest, aber mit kleinen handshake tricks über globalvariablen kann man es umgehen.
mk-soft hat geschrieben:Und alle laufen stabil.
tja, mal geht es gut, mal nicht. du solltest threads nicht über *einfache*
globale variablen synchronisieren.
mehr hier:
http://forums.purebasic.com/german/view ... l+sections
Verfasst: 10.10.2005 18:58
von Lukaso
Ich hab das schonmal erwähnt, aber irgendwie sind die Zeilenausgaben beim Debuger der 3.94 fürn arsch. Beim 3.93er waren die Zeilen eigentlich immer richtig. Das kann ich hier nicht behaupten. Ich habe einen Fehler in meinem Player, der passiert sehr sehr sehr Selten, und wenn er mal passiert, sind die Informationen im Debugger unbrauchbar. Das ist die berümte suche der Nadel im Heuhaufen.
Line: 117 - Invalid memory access.
Auszug aus dem, wass der Debugger zeigt:
Code: Alles auswählen
[111] HideWindow(#Player_Window, 0)
[112]
[113] Repeat
[114]
[115] Event = WaitWindowEvent()
[116]
Fehlerzeile: [117] WindowID = EventWindowID()
[118]
[119] GadgetID = EventGadgetID()
[120]
[121] EventType = EventType()
[122]
[123] MenuID = EventMenuID()
Komisch das ganze ...

Verfasst: 11.10.2005 10:28
von mk-soft
String´s und Newlist bearbeiten vermeide ich natürlich in Thread´s. Lesen keine Probleme.
Verfasst: 11.10.2005 13:42
von HeX0R
Siehe
hier Lukaso.
Das nervt durchaus schon so langsam...
Verfasst: 11.10.2005 14:27
von nicolaus
Also ich hab das selbe prob wie lukaso.
der debuger markiert zeilen die teilweise den error messages absolut wiedersprechen.
nachfolgend mal 2 bilder die das zeigen:
Das folgende bild zeigt die vom debuger markierte stelle im code (zeile 3990)
und die dazugehörige Msg aus der IDE ist diese:
Seit wann hat DisableDebuger was mit #File zu tun???
Leider muß ich auch sagen das der Debuger zur zeit noch unbrauchbar ist. Schade aber so werd ich wohl erst mal weiter mit PB 3.93 arbeiten müßen.
Was aber noch lustiger ist ist das in der Msg mal steht das ein File nich initialisiert ist ne min später bei erneutem versuch steht dann auf einmal drin "invailed memory...."

der debuger bleibt aber an gleicher stelle stehen
Verfasst: 11.10.2005 15:17
von Deeem2031
@nicolaus: Woher soll der Debugger auch wissen wo dein programm abstürzt wenn du ihn disablest? Er kommt bei "DisableDebugger" an, setzt die Zeile, geht zur nächsten Zeile, da er aber deaktiviert ist kann er die Zeile nicht mehr setzen. Tritt nun ein Fehler auf, bemerkt der Debugger das wegen der Exception von Windows aber trotzdem. Da die letzte gesetze Zeile ja "DisableDebugger" war, ist der Fehler also in der Zeile. Das der Fehler paar Zeilen tiefer aufgetreten ist kann er ja nicht ahnen. Die einzige Möglichkeit des Debuggers wäre es den ganzen Block vom "DisableDebugger" bis zum nächsten "EnableDebugger" zu makieren.
Verfasst: 11.10.2005 15:23
von nicolaus
Deeem2031 hat geschrieben:@nicolaus: Woher soll der Debugger auch wissen wo dein programm abstürzt wenn du ihn disablest? Er kommt bei "DisableDebugger" an, setzt die Zeile, geht zur nächsten Zeile, da er aber deaktiviert ist kann er die Zeile nicht mehr setzen. Tritt nun ein Fehler auf, bemerkt der Debugger das wegen der Exception von Windows aber trotzdem. Da die letzte gesetze Zeile ja "DisableDebugger" war, ist der Fehler also in der Zeile. Das der Fehler paar Zeilen tiefer aufgetreten ist kann er ja nicht ahnen. Die einzige Möglichkeit des Debuggers wäre es den ganzen Block vom "DisableDebugger" bis zum nächsten "EnableDebugger" zu makieren.
Also dann verstehe ich wohl DisableDebuger nich ganz richtig und die hilfe ist ja dann auch falsch denn da steht:
Dies schaltet die Debugger-Prüfroutinen bei nach diesem Befehl folgenden Sourcecode aus.
und wenn der Debuger nun aus ist wie kann er da nen fehler feststellen?????
Bis zu der Zeile DisableDebuger is er an und erst dort wird er abgeschalten. wenn nun vor dieser zeile nen Fehler kommt kann ja wohl schlecht erst die zeile Disabledebuger markiert werden. Noch dazu ist in dem Block von Disabledebuger bis Enabledebuger nix was mit nem #File zu tun hat. Is doch schon sehr verwirrend.
Verfasst: 11.10.2005 15:33
von Deeem2031
nicolaus hat geschrieben:und wenn der Debuger nun aus ist wie kann er da nen fehler feststellen?????
Hm... stimmt eigentlich, Fehler wie "File object not initialized" dürften eigentlich garnicht angezeigt werden. Allerdings Fehler sowie "invalid memory access" werden immer angezeigt, egal ob mit disabledebugger oder ohne, da diese Fehler von Windows gemeldet werden und nicht vom Programm selber.
nicolaus hat geschrieben:Noch dazu ist in dem Block von Disabledebuger bis Enabledebuger nix was mit nem #File zu tun hat. Is doch schon sehr verwirrend.
Das ist wirklich verwirrend, allerdings könnte es auch an der falschen Bedienung von "DisableDebugger" liegen. Du hast nämlich den Befehl in einer Procedure, also musst du "EnableDebugger" auch in der
selben Procedure aufrufen, oder du weißt was du tust

Sowas wie "Procedure DD():DisableDebugger:Endprocedure" und "Procedure ED():EnableDebugger:Endprocedure" funktioniert nämlich nicht.
Verfasst: 11.10.2005 15:42
von nicolaus
also der block von DisableDebuger bis EnableDebuger ist in ein und der selben Procedure und sieht so aus:
Code: Alles auswählen
DisableDebugger
;{ NewsTicker-Drawing
If INI\ShowInfoTicker
UseImage(#pic_newsticker)
StartDrawing(ImageOutput())
DrawingMode(0)
Box(0,0,ImageWidth(),ImageHeight()+1,RGB($17,$52,$99))
DrawingMode(1)
FrontColor(0,0,0)
DrawingFont(LoadFont(#fot_newsticker,"Verdana",15,#PB_Font_Italic))
Locate(9,3)
DrawText(AnimatedNews)
DrawingMode(1)
FrontColor(237,203,12)
DrawingFont(LoadFont(#fot_newsticker,"Verdana",15,#PB_Font_Italic))
Locate(8,1)
DrawText(AnimatedNews)
StopDrawing()
SetGadgetState(#img_newsticker,UseImage(#pic_newsticker))
EndIf ;}
EnableDebugger
Wie du siehst is da nix was mit Files zu tun hat.
Ich bin halt auch der meinung das der fehler ganz wo anders aufttritt und schon was mit nem file zu tun hat. Das prob ist der neue Debuger der wohl noch recht bugy ist.
Verfasst: 11.10.2005 16:12
von freak
Du hast bestimmt nen thread irgendwo am laufen, oder?
Der Debugger ist dafür nicht ausgelegt. Da stimmen die angegebenen Zeilennummern nicht mehr.