amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > Wie recoverable alert unter AOS4.1 debuggen? [ - Suche - Neue Beiträge - Registrieren - Login - ]

1 -2- [ - Beitrag schreiben - ]

01.08.2012, 16:31 Uhr

Holger
Posts: 8116
Nutzer
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.

[ - Antworten - Zitieren - Direktlink - ]

01.08.2012, 16:39 Uhr

Holger
Posts: 8116
Nutzer
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.

[ - Antworten - Zitieren - Direktlink - ]

07.08.2012, 22:48 Uhr

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

Post ging vor ein paar Tagen raus.

[ - Antworten - Zitieren - Direktlink - ]

08.08.2012, 10:45 Uhr

Holger
Posts: 8116
Nutzer
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.

[ - Antworten - Zitieren - Direktlink - ]

08.08.2012, 10:56 Uhr

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

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

[ - Antworten - Zitieren - Direktlink - ]

08.08.2012, 23:18 Uhr

Reth
Posts: 1858
Nutzer
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!

[ - Antworten - Zitieren - Direktlink - ]

01.09.2012, 10:28 Uhr

Reth
Posts: 1858
Nutzer
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

[ - Antworten - Zitieren - Direktlink - ]

02.09.2012, 16:26 Uhr

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

[ - Antworten - Zitieren - Direktlink - ]

02.09.2012, 21:56 Uhr

Reth
Posts: 1858
Nutzer
@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?)

[ - Antworten - Zitieren - Direktlink - ]

02.09.2012, 22:48 Uhr

thomas
Posts: 7716
Nutzer

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/

[ - Antworten - Zitieren - Direktlink - ]

03.09.2012, 12:51 Uhr

Reth
Posts: 1858
Nutzer
@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?

[ - Antworten - Zitieren - Direktlink - ]

03.09.2012, 15:46 Uhr

Thore
Posts: 2266
Nutzer
@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. ]

[ - Antworten - Zitieren - Direktlink - ]

03.09.2012, 19:32 Uhr

Holger
Posts: 8116
Nutzer
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.

[ - Antworten - Zitieren - Direktlink - ]

03.09.2012, 19:52 Uhr

Reth
Posts: 1858
Nutzer
@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).

[ - Antworten - Zitieren - Direktlink - ]

04.09.2012, 12:05 Uhr

Holger
Posts: 8116
Nutzer
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.

[ - Antworten - Zitieren - Direktlink - ]

05.09.2012, 15:09 Uhr

Thore
Posts: 2266
Nutzer
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

[ - Antworten - Zitieren - Direktlink - ]

05.09.2012, 15:35 Uhr

Holger
Posts: 8116
Nutzer
@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.

[ - Antworten - Zitieren - Direktlink - ]


1 -2- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > Wie recoverable alert unter AOS4.1 debuggen? [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.