eine Art Blackbox
lima-city → Forum → Programmiersprachen → Basic
auslser
aussehen
benutzername
blackbox
button
fehler
fehlerprotokoll
formen
inhalt
konstrukt
log
message
netzwerk
null
prozedur
sender
textdatei
ursache
ursprngliche ursache
window
-
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? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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. -
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage