Manchmal hat man das Problem, dass man beim Testen seiner Anwendung auf einem Fremdrechner (also evtl. beim Kunden) nicht einfach an Debug-Informationen kommt. Um das zu ermöglichen/vereinfachen habe ich folgende Vorgehensweise entwickelt. Ich habe meiner Anwendung eine Form zugefügt "myDebug.frm". Auf ihr befinden sich
Dazu hier der Code für die Form und Controls: Public Class myDebug Private Sub myDebug_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.Text = "Debuggen von: " + My.Application.Info.AssemblyName ListBox1.BackColor = setColorBrightness(ToolStrip1.BackColor, 24) ListBox1.Items.Clear() End Sub Private Sub ListBox1_MouseDown(sender As Object, e As MouseEventArgs) _ Handles ListBox1.MouseDown If MOUSEEVENTF_RIGHTDOWN Then ListBox1.SelectedIndex = -1 End Sub Private Sub ToolStripButton1_Click(sender As Object, e As EventArgs) _ Handles ToolStripButton1.Click ListBox1.Items.Clear() End Sub Private Sub ToolStripButton2_Click(sender As Object, e As EventArgs) _ Handles ToolStripButton2.Click Dim t As String, i As Short If ListBox1.Items.Count = 0 Then Exit Sub If ListBox1.SelectedItems.Count > 0 Then For i = 0 To ListBox1.SelectedItems.Count - 1 t += ListBox1.SelectedItems(i) + vbCrLf Next Else For i = 0 To ListBox1.Items.Count - 1 t += ListBox1.Items(i) + vbCrLf Next End If My.Computer.Clipboard.SetText(t) End Sub End Class Für das Eintragen von Debug-Informationen in die Listbox gibt es die Funktion "debugForm" (in einem Modul unterbringen): ''' <summary> ''' Funktion zum Eintragen von Debug-Informationen ''' </summary> ''' <param name="theVar">ein Variablenwert als String</param> ''' <param name="addNo">soll DebugInfo in neue Zeile oder an vorhergehende angehängt werden</param> Public Sub debugForm(theVar As String, Optional addNo As Boolean = False) If addNo Then myDebug.ListBox1.Items(dhDebug.ListBox1.Items.Count - 1) += If(IsNothing(theVar), "~~~", theVar) Else myDebug.ListBox1.Items.Add(If(IsNothing(theVar), "~~~", theVar)) End If End Sub und als Zusatzfunktion "WhoCalledMe", die dazu dient, die Prozedur zu ermitteln, in der der Aufruf von "debugForm" erfolgt: ''' <summary> ''' Funktion zum Ermitteln des namens der aufrufenden Prozedur ''' </summary> Public Function WhoCalledMe() As String Dim st As StackTrace = New StackTrace() Dim sf As StackFrame = st.GetFrame(1) Dim mb As MethodBase = sf.GetMethod() ' Console.WriteLine("I was called by: " & mb.Name) ' Displays "GetMyName" Return mb.Name End Function Achtung- für diese Funktion ist im Modul notwendig zu vereinbaren: Imports System.Reflection, System.Diagnostics Nun zur praktischen Anwendung.
womit man in der Listbox eine Zeile erhält, die den Prozedurnamen derjenigen Prozedur erhält, in der eben diese Zeile steht debugForm("meinZähler: " + meinZähler.ToString) um den Wert der Variablen in eine ListboxZeile ein zu tragen debugForm(vbTab + "PC: " + myPCname, True) um den PC-Namen, den man vorher ermittelte, an die zuletzt geschriebene Zeile in der Listbox anzufügen. oder auch etwa debugForm("* Userdaten") debugForm(theUserID + vbTab + theUserRights + vbTab + thePassword) wobei hier die Variablen schon Strings sind. Tipp im Tipp: Man erhält bei dieser Vorgehensweise in der Listbox eine chronologische Abfolge des Programmablaufs. Dieser Tipp wurde bereits 8.290 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
sevISDN 1.0 Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Tipp des Monats Mai 2024 Hermann Röttger Wochentage eines Datumsbereichs ermitteln Wochentage eines Datumsbereichs ermitteln, optional mit Feiertagsberechnung Neu! sevPopUp 2.0 Dynamische Kontextmenüs! Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |