Announcement

Collapse
No announcement yet.

Programmabsturz erkennen - Möglichkeiten?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Programmabsturz erkennen - Möglichkeiten?

    Hallo Forumsgemeinde,

    ich habe ein Projekt, bei dem sich eine in VB.NET geschriebene Anwendung ab und zu aufhängt. Das heißt, die Oberfläche friert ein und meldet "Keine Rückmeldung".

    In der Anwendung ist ein Logging integriert, das alle Exceptions, die nicht durch Exceptionhandler abgefangen werden in eine Logdatei schreibt. Das Problem ist nur, dass bei einem Programmabsturz das Logging auch nicht mehr funktioniert.

    Ich habe leider keine Anhaltspunkte, wo ich im Programmcode auf die Suche gehen sollte.

    Gibt es oder kennt jemand von Euch eine Möglichkeit, einen Programmabsturz zu erkennen und darauf zu reagieren? Ist dazu möglicherweise eine weitere paralle laufende "Watchdog"-App nötig?

    Mit freundlichem Gruß
    Jonathan

  • #2
    Hört sich eher nach eine Deadlock als einem Absturz an. Sprich irgend ein Loop geht nicht zu ende oder es wird auf eine Ressource gewartet die nicht mehr freigegeben wird.

    Comment


    • #3
      Hallo Bernhard,

      wir haben z.B. viele Monitor.TryEnter-Konsrukte in unserer App. Ich denke Du meinst unter anderem diese, verstehe ich das richtig?

      Jedes Monitor-Konstrukt wird im Fehlerfall mit einem Log-Eintrag antworten, falls das angeforderte Objekt nicht in einem bestimmten Zeitraum zugreifbar ist.

      An Schleifen kann es, denke ich, eher nicht liegen, da wir kaum Schleifen verwenden, die theoretisch unendlich laufen könnten.

      Gibt es Möglichkeiten, Deadlocks zu erkennen?

      Mit freundlichem Gruß
      Jonathan

      Comment


      • #4
        Falls du z.B. CPU-Auslastung (100% bei SingleCore, 50% bei Dual-Core, 25% bei Quad-Core) hättest du eine Deadlock-Schleife.

        Comment


        • #5
          Hallo,

          man kann die CPU-Zeit mit .NET auslesen, aber glaube kaum, dass ich das nach einem Deadlock noch kann.
          Also bräuchte ich eine 2. Anwendung, die das überwacht; das würde ich allerdings gerne vermeiden.

          Programmtechnisch kann ich Deadlocks wahrscheinlich nicht zufriedenstellend abfangen, oder?

          Ablesen kann ich das nicht, da die Anwendung bei einem Kunden läuft.

          Mit freundlichem Gruß
          Jonathan

          Comment


          • #6
            Hallo,

            Programmtechnisch kann ich Deadlocks wahrscheinlich nicht zufriedenstellend abfangen, oder?
            abfangen nicht aber vermeiden


            mfG Gü
            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

            Comment


            • #7
              Hallo gfoidl,

              abfangen nicht aber vermeiden
              Das wäre ja schon mal was. Dann könnte ich wenigstens noch einen Logeintrag machen o.ä.

              Klar, die beste Variante wäre, es nicht dazu kommen zu lassen, in dem man richtig programmiert Aber der Fehler besteht und muss behoben werden.
              Die Frage ist nur, wo ich die Suche anfangen soll, wenn sich meine Anwendung schon vor dem Loggen verabschiedet.

              Mit freundlichem Gruß
              Jonathan

              Comment


              • #8
                Hallo,

                hab mal Advanced Techniques To Avoid And Detect Deadlocks In .NET Apps für dich rausgesucht. Vielleicht findet sich darin die nötige Information die benötigt wird.


                mfG Gü
                "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                Comment


                • #9
                  Hallo,

                  danke für den Link. Ich werde mir die Info mal anschauen und Feedback geben ob sie mir geholfen hat. Der Titel hört sich schon sehr vielversprechend an.

                  Mit freundlichem Gruß
                  Jonathan

                  Comment

                  Working...
                  X