amiga-news DEUTSCHE VERSION
.
Links| Forums| Comments| Report news
.
Chat| Polls| Newsticker| Archive
.

amiga-news.de Forum > Programmierung > Wie recoverable alert unter AOS4.1 debuggen? [ - Search - New posts - Register - Login - ]

1 -2- [ - Post reply - ]

2012-08-01, 16:31 h

Holger
Posts: 8116
User
Zitat:
Original von Reth:
Kann Dir wie gesagt den Source gern mal schicken,…

Gerne, E-Mail-Adresse hast Du noch?


Zitat:
… dann kannst Du ihn bei Dir mal durch die "Toolchain" laufen lassen. Vielleicht hast Du ja noch andere Einstellungen beim Compiler/Linker, so dass Du ein paar mehr Hinweise bekommst?
Erst mal muss ich höchstwahrscheinlich eine aufsetzen, um überhaupt was durchlaufen zu lassen.

Aber versuchen kann man’s ja.

PS: hab nach der Thematik gegoogelt. Offenbar ist’s korrekt, aber noch unlogischer als zuerst angenommen. C++ ist schon eine absurde Sprache.

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Answer - Quote - Direct link - ]

2012-08-01, 16:39 h

Holger
Posts: 8116
User
Nur der Vollständigkeit halber: in C++ können, so widersinnig das auch ist, „pure virtual“ (also abstrakte) Methoden trotzdem eine Implementierung haben. Außerdem kann man selbst einen Destruktor als abstrakt deklarieren, dann muss es sogar eine Implementierung geben (wie gesagt, Unterklassen rufen ihn ja ohne wenn und aber auf).

Der einzige Sinn dieser Konstruktion dient dazu, eine Klasse für denjenigen, der diese Abstrusität kennt (dem berühmt/berüchtigten C++ Programmierer, „der weiß, was er tut“) als abstrakt zu markieren.

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Answer - Quote - Direct link - ]

2012-08-07, 22:48 h

Reth
Posts: 1858
User
Zitat:
Original von Holger:
Gerne, E-Mail-Adresse hast Du noch?

Post ging vor ein paar Tagen raus.

[ - Answer - Quote - Direct link - ]

2012-08-08, 10:45 h

Holger
Posts: 8116
User
Zitat:
Original von Reth:
Zitat:
Original von Holger:
Gerne, E-Mail-Adresse hast Du noch?

Post ging vor ein paar Tagen raus.
Antwort auch. Nicht angekommen?

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Answer - Quote - Direct link - ]

2012-08-08, 10:56 h

Reth
Posts: 1858
User
Zitat:
Original von Holger:
Antwort auch. Nicht angekommen?

Leider nein! :( Im Spamverdacht-Ordner lag auch nix!

[ - Answer - Quote - Direct link - ]

2012-08-08, 23:18 h

Reth
Posts: 1858
User
Also ich sitz mittlerweile schon Ewigkeiten vor dem Problem, seit Tagen an der selben Stelle. Bin mir auch ziemlich sicher, dass es irgendwie mit dem Gadget-Handling zusammenhängt. Aber egal, was ich auch probiere und umstelle, nix hilft, es wird höchstens schlimmer!

[ - Answer - Quote - Direct link - ]

2012-09-01, 10:28 h

Reth
Posts: 1858
User
Hallo nochmals zusammen,

so hier nun für alle noch die Lösung des Problems, die mir Holger dankenswerter Weise nach Durchsicht meines Codes genannt hatte.

Ursache des seltsamen Verhaltens war in meinem Fall die Tatsache, dass meine Gadgetobjekte (welche ich für die Verwendung von struct Gadget gebaut habe) vor dem Schließen des Fensters und dem Entfernen aller darin enthaltenen Elemente (wie z.B. Menüs etc.) schon ihre Gültigkeit verloren hatten (sie gingen out of scope). Und obwohl dem Anwender keine Möglichkeit mehr gegeben war, in diesem Zeitraum mit den Gadgets zu arbeiten kam das System damit wohl nicht klar.

Nach der Umstellung des Code, so dass nun die Gadgets "länger leben" als das Fenster und erst nach dessen "Aufräumen" und Beenden selbst aufgeräumt und beendet werden tritt der Fehler nicht mehr auf.

Fazit: Um sicher zu gehen, dass beim Beenden und Aufräumen von Intuition Fenstern alles klappt müssen Gadgets, die solchen Fenstern hinzu gefügt wurden entweder vor dem Schließen des Fensters von diesem entfernt werden (um dann selbst beendet/aufgeräumt werden zu können), oder sie dürfen erst nach dem Schließen des Fensters beendet/aufgeräumt werden.

Falls das textuell nicht so gut nachvollziehbar ist, gebt Bescheid, dann versuch ich noch ein bisschen Pseudocode einzustellen.

Was mich in diesem Zusammenhang noch interessieren würde: Sind denn solche Grundlagen über Intuition etc. irgendwo aufgeschrieben (am Besten zusammen gefasst als Best Practices)? Z.B. im Amiga Intern oder im Profi Know How? Könnte mir vorstellen, dass es hier noch mehr solche Sachen gibt, über die man schnell mal stolpert!

Wäre es sinnvoll hier (oder auf ner anderen entsprechenden Seite) einen solchen Thread (am besten mit festem Format für die Postings) zu erstellen?

Ciao

[ - Answer - Quote - Direct link - ]

2012-09-02, 16:26 h

Thore
Posts: 2266
User
Jo wie schon des öfteren erwähnt eben...

[ - Answer - Quote - Direct link - ]

2012-09-02, 21:56 h

Reth
Posts: 1858
User
@Thore:

Äh, bin etwas verwirrt. Auf was beziehst Du Deine Antwort? Auf den Punkt mit dem festen Postingformat für "Fallstricke des AmigaOS"? (Kann sein, dass es schon mal erwähnt wurde. Oder gibt es da schon ne Sammlung irgendwo für?)

[ - Answer - Quote - Direct link - ]

2012-09-02, 22:48 h

thomas
Posts: 7717
User

Eigentlich sagt einem der gesunde Menschenverstand, dass man Resourcen nicht freigeben darf, solange sie noch in Benutzung sind.


--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Answer - Quote - Direct link - ]

2012-09-03, 12:51 h

Reth
Posts: 1858
User
@thomas:
Hast ja recht! :glow:
Davon abgesehen: Macht so eine Sammlung von "Fallstricken" usw. Sinn für AmigaOS? Was sagen die erfahrenen/erfahreneren Für-das-OS-Programmierer dazu?

[ - Answer - Quote - Direct link - ]

2012-09-03, 15:46 h

Thore
Posts: 2266
User
@thomas
Genau so ist es und das versuch ich Reth seit einiger Zeit zu vermitteln ;)
Aber wie dem auch sei, ich finds sehr gut daß der Fehler nun gefunden ist und wir uns auf ein nettes Spiel freuen können :)

> Macht so eine Sammlung von "Fallstricken" usw. Sinn für AmigaOS?
Das ist nicht nur bei AmigaOS so sondern bei allen Systemen und bei allen Programmiersprachen. Nur crasht es eben beim Amiga gleich, wenn Du einen Fehler machst. Dafür ist dein Programm am Ende nur noch sauberer ;)

[ Dieser Beitrag wurde von Thore am 03.09.2012 um 15:49 Uhr geändert. ]

[ - Answer - Quote - Direct link - ]

2012-09-03, 19:32 h

Holger
Posts: 8116
User
Zitat:
Original von thomas:
Eigentlich sagt einem der gesunde Menschenverstand, dass man Resourcen nicht freigeben darf, solange sie noch in Benutzung sind.

Die Schwierigkeit bestand ja nicht in dieser Trivialität, sondern darin, als nicht geübter C++ Programmierer zu erkennen, wo ein Automatismus zur Freigabe greift. Und da das Betriebssystem logischerweise erst bei der zweiten Freigabe einen Fehler meldet, ist auch das Einkreisen mittels Debuggen schwer.


Zitat:
Original von Reth:
Was mich in diesem Zusammenhang noch interessieren würde: Sind denn solche Grundlagen über Intuition etc. irgendwo aufgeschrieben (am Besten zusammen gefasst als Best Practices)? Z.B. im Amiga Intern oder im Profi Know How?

Da dürfte in diesem Zusammenhang wohl nichts neues drin stehen. Amiga Intern und Profi Know How sind, abgesehen vom ARexx-Teil in letzterem, nur Übersetzungen der Amiga ROM Kernel Reference Manuals. Die wiederum sind in elektronischer Form auf der Amiga Developer CD 2.1 zu finden. Die zu haben, kann nicht schaden.


--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Answer - Quote - Direct link - ]

2012-09-03, 19:52 h

Reth
Posts: 1858
User
@Holger:
Habe beide Bücher und die Developer CD 2.1 (die RKRMs gibts ja auch schon online). Aber mal abgesehen von den Büchern wüsste ich nicht, wo in der Developer CD z.B. solche bzw. ähnliche Sachen drin stehen - sprich Abhängigkeiten etc. (mal abgesehen von den Teilen, die bei der Beschreibung der API-Funktionen enthalten sind).

[ - Answer - Quote - Direct link - ]

2012-09-04, 12:05 h

Holger
Posts: 8116
User
Zitat:
Original von Reth:
Aber mal abgesehen von den Büchern wüsste ich nicht, wo in der Developer CD z.B. solche bzw. ähnliche Sachen drin stehen - sprich Abhängigkeiten etc.

Welche Abhängigkeit meinst Du denn? Dass man Gadgets nicht freigeben darf, solange das Fenster noch offen ist, versteht sich doch wohl von selbst, oder?

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Answer - Quote - Direct link - ]

2012-09-05, 15:09 h

Thore
Posts: 2266
User
Schau dir die structs genauer an. diese verlinken zu weiteren Structs.
So erkennst Du auch Abhängigkeiten.
Kleines Beispiel:
IntuiScreen->FirstWindow->FirstGadget

Du musst eben die logische Reihenfolge beim Erstellen rückwärts wieder durchgehen, wenn Du aufräumst:
Screen öffnen, Window öffnen, Gadgets anfügen.....= erstellen
Gadgets entfernen, Window schließen, Screen schließen = aufräumen

[ - Answer - Quote - Direct link - ]

2012-09-05, 15:35 h

Holger
Posts: 8116
User
@Thore:
Das halte ich aber für sehr weit hergeholt. Ich kann problemlos zuerst ein Fenster schließen und dann dessen Gadgets freigeben, aber ich kann nicht einen Screen schließen und danach das Fenster. So etwas liest Du nicht aus structs heraus.

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Answer - Quote - Direct link - ]


1 -2- [ - Post reply - ]


amiga-news.de Forum > Programmierung > Wie recoverable alert unter AOS4.1 debuggen? [ - Search - New posts - Register - Login - ]


.
Masthead | Privacy policy | Netiquette | Advertising | Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved.
.