kostenloser Webspace werbefrei: lima-city


eine Art Blackbox

lima-cityForumProgrammiersprachenBasic

  1. Autor dieses Themas

    lefteri

    lefteri hat kostenlosen Webspace.

    Hallo,

    ich möchte für mein selbst-programmiertes programm (vb) eine art Blackbox ertellen, um bei einem Fehlerfall den genauen ablauf der Benutzeraktionen ermitteln zu können. z.B. in welcher Form auf welchen Button geklickt wurde, usw...

    ich habe momentan keine Idee für eine umsetzung.
    Mir ist klar, dass ihr mir keine fertige Lösung präsentieren könnt.
    Wie wäre sowas zu realisieren? mit Api´s?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Erstmal, du meinst so etwas wie eine Log funktion.
    Eine Blackbox ist beim Fliegen und Programmieren was grundverschiedenes ...
    Beim Programmieren bezeichnet das das du daten reingibst und rausbekommst, aber nicht weist was dazwischen damit passiert.

    Du kannst entweder jede Nutzeraktion z.B. im Debug Modus in ein Textfile schreiben. Die letzte ist dann die vor dem absturz des programmes.
    Ansonsten kannst du über .Net oder die Win API auch im System Messages heraus geben die dann unter Systemmeldungen in der Rechnerverwaltung auftauchen.
    Das beste ist aber mit
    try{
    }except{
    }
    Konstrukten zu arbeiten (ich weiss gerade nicht auswendig wie die in VB aussehen)
    und so fehler abzufangen und dann evtl eine Fehlermeldung auszugeben und das ganze wiederum in ein Register oder in ein Log zu schreiben.
  4. cbhp

    Co-Admin Kostenloser Webspace von cbhp

    cbhp hat kostenlosen Webspace.

    Ich hab mir selbst ein Fehlerprotokoll in VB .Net (2003) geschrieben:


    Inhalt eines Fehlerprotokolls (Textdatei):

    Datum ................. : "Freitag, 06. April 2007, 20:00:00:0000000, +02:00"
    Benutzername .......... : "Computername\Benutzername"
    Systemstart ........... : "Normal"
    Netzwerk .............. : "True"
    Sender ................ : "System.Windows.Forms.Button, Text: Button2"
    Senderart ............. : "System.Windows.Forms.Button"
    Fehler ................ : "Es wurde versucht, durch null zu teilen."
    Ursache ............... : "Project1"
    Auslöser .............. : "Button2_Click"
    Typ des Auslösers ..... : "Method"
    Ursprüngliche Ursache . : "System.DivideByZeroException: Es wurde versucht, durch null zu teilen.
    at Project1.Form1.Button2_Click(Object sender, EventArgs e) in D:\Projects\Project1\bin\Form1.vb:line 105"
    Art ................... : "System.DivideByZeroException"


    Und so sieht der Code dieses Beispiels aus:

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    
            Dim a As Integer = 0
            Dim b As Integer = 5
            Dim c As Integer = 0
            Try
    
                c = b \ a
    
            Catch ex As Exception
                Me.TextBox1.Text = _
                        "Datum ................. : " & """" & Format(Now(), "dddd, dd. MMMM yyyy, HH:mm:ss:fffffff, zzz") & """" & vbNewLine & _
                        "Benutzername .......... : " & """" & SystemInformation.ComputerName.ToString & "\" & SystemInformation.UserName.ToString & """" & vbNewLine & _
                        "Systemstart ........... : " & """" & SystemInformation.BootMode.ToString & """" & vbNewLine & _
                        "Netzwerk .............. : " & """" & SystemInformation.Network.ToString & """" & vbNewLine & _
                        "Sender ................ : " & """" & sender.ToString & """" & vbNewLine & _
                        "Senderart ............. : " & """" & sender.GetType.ToString & """" & vbNewLine & _
                        "Fehler ................ : " & """" & ex.Message.ToString & """" & vbNewLine & _
                        "Ursache ............... : " & """" & ex.Source.ToString & """" & vbNewLine & _
                        "Auslöser .............. : " & """" & ex.TargetSite.Name.ToString & """" & vbNewLine & _
                        "Typ des Auslösers ..... : " & """" & ex.TargetSite.MemberType.ToString & """" & vbNewLine & _
                        "Ursprüngliche Ursache . : " & """" & ex.GetBaseException.ToString & """" & vbNewLine & _
                        "Art ................... : " & """" & ex.GetType.ToString & """"
            End Try
    
        End Sub



    Und um nicht behandelte Fehler abzufangen, kann man in der Main()-Prozedur einen entsprechenden Handler hinzufügen:

    AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf UnhandledExceptionHandling


    Dazu muss nur noch die Prozedur "UnhandledExceptionHandling" geschrieben werden:

    Sub UnhandledExceptionHandling(ByVal sender As System.Object, ByVal e As System.UnhandledExceptionEventArgs)
    
    'Hier den Fehler behandeln... z.B. 
    Dim ex As Exception = CType(e.ExceptionObject, Exception)
    MsgBox (ex.Message.ToString)
    
    End Sub



    cbhp
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!