Ausnahmefehler - V3.5 SP2 Patch1

Seitz
2013-02-07
2013-02-08
  • Seitz - 2013-02-07

    Hallo,

    immer wenn ich eine neue Codesys-Version 3.5 unter Windows 7 installiere, laufen meine schon erstellten Projekte nicht mehr. Eine Fehlermeldung ist: kein Quellcode für diese Code-Position gefunden, weil sie in der übersetzten Biliothek iecsfc, 3.4.2.0 (system) enthalten ist. Installieren kann ich die übersetzte Bibliothek nicht. Dann kommt ein Ausnahmefehler. Oft zeigen die Ausnahmefehler auch Positionen an, wo Timerbausteine o.ä. aufgerufen werden.

    Bisher konnte ich diese Fehler beheben, indem ich durch "Gerät aktualisieren" die aktuellen Bibliotheken laden konnte oder indem ich unter Optionen die mappings für die Bibliotheken gelöscht habe. Bei der Version SP2, Patch1 nun nicht mehr.

    Außerdem ist mir noch aufgefallen, dass in der Version 3.5 SP2, Patch1 die POU-Fenster und die Gerätefenster leer sind. Erst wenn ich das Projekt noch einmal lade wird eines der beiden Fenster gefüllt angezeigt. Beim dritten Laden wird dann auch das letzte Fenster vollständig angezeigt.

    Für einen Rat bezüglich des Ausnahmefehlers wäre ich sehr dankbar.

     
  • guerillero - 2013-02-08

    Hi,

    Also die Meldung "kein Quellcode für diese Code-Position gefunden, weil sie in der übersetzten Biliothek..." hatte ein Kollege auch letztens. "Alles bereinigen" brachte Abhilfe.

    Immer wenn Plötzlich unerklärliche Probleme auftreten empfiehlt sich "Alles bereinigen". Dann werden die Adressen für die Variablen neu berechnet und der Code beim nächsten Kompilieren komplett Kompiliert. Wirkt manchmal Wunder.

    Der schwere Ausnahmefehler tritt meistens dann auf, wenn ein Pointer entweder nicht dahin zeigt wo er soll oder gar keine Adresse zugewiesen wurde und dann darauf zugegriffen wird. Ein Überlauf in einem Array könnte das auch erzeugen.
    Wenn keine neue Funktion hinzugefügt wurde, empfehe ich da auch "Alles bereinigen" ansonsten mal den neuesten Codeteil auf Pointerprobleme prüfen.
    Ich habe mir angewöhnt beim hantieren mit Pointern immer mit IF Anweisungen zu arbeiten. Eine Zuweisung geschiet nur dann wenn die Adresse <> 0 ist ansonsten werfe ich mir eine Fehlermeldung in einen Buffer wo ein Hinweis auf die entsprechende Stelle geschrieben wird.
    Das gleiche gilt für die Überprüfung von Arraygrenzen. Einen Absturz zu vermeiden durch die Überprüfung ist schön und gut, man sollte aber immer eine Fehlermeldung erzeugen wenn die Begrenzung zugeschlagen hat, denn wenn dass der Fall ist stimmt im Code was nicht. Verstehe nicht warum 3S in seinem "POU für implizierte Prüfung" darauf nicht hinweist und es nicht unterstützt. Vielleicht bin ich aber nur unzureichend informiert.

    Sieht aufwending aus spart aber später massig Zeit bei der Fehlersuche.

     

Log in to post a comment.