Debuggen: Datenbank Connect funktioniert nur über das Main() Modul !?

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Debuggen: Datenbank Connect funktioniert nur über das Main() Modul !?

    Hallo,

    ich habe eine Frage zum Debuggen in Visual Studio 2015.
    Ich habe den Connect zu meiner MySQL Datenbank in einer Funktion. Rufe ich diese über das Main() Modul auf, funktioniert auch alles tadellos.

    VB.NET-Quellcode

    1. Dim db As MySqlConnection
    2. db = GetConnection_MySQL()

    Wenn ich über das Direktfenster

    VB.NET-Quellcode

    1. call Getconnection_MySQL()
    nur die Funktion aufrufe bekomme ich aber eine Fehlermeldung:

    Import.vshost.exe Error: 0 : Der Thread wurde abgebrochen.
    Ausnahme ausgelöst: "System.Threading.ThreadAbortException" in MySql.Data.dll

    Warum ist das so? Gibt es eine andere Möglichkeit einzelne Module oder Funktionen zu testen/debuggen ohne immer das ganze Projekt durchlaufen lassen zu müssen?
    @Jebediah In welchem zustand befindet sich das zu debuggende Programm, wenn Du im Direktfenster diesen Befehl eingibst?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @Jebediah Was tust Du im Programm und im Studio (auf welche Button klickst Du), bevor Du mit der Maus ins Direktfenster klickst?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Das Direktfenster ist glaub nicht geeignet, um die vermutlich von vielen Randbedingungen abhängige Methode GetConnection_MySql() erfolgreich aufzurufen.

    "Zustand eines Programms" ist ein sehr allgemeiner Begriff - ich würde darunter verstehen die Gesamtheit aller Variablen überhaupt, die im Proggi momentan geladen sind.
    Das trifft sich auch mit meiner Einschätzung ("du nutzst das Direktfenster für was es nicht leisten kann"), wenn ich von "Randbedingungen" spreche.

    Welche Randbedingungen das ganau sind, kann man erst sagen, wenn man die Methode kennt, und weiß, was von ihr alles aufgerufen wird.
    Soviele Randbedingungen sind das meiner Ansicht nach nicht.

    VB.NET-Quellcode

    1. Public Function GetConnection_MySQL() As MySqlConnection
    2. Dim con As New MySqlConnection("Server=CS;Port=3306;Database=xxx;Uid=xxx;Pwd=xxx;Allow Zero Datetime=true;")
    3. Try
    4. con.Open()
    5. GetConnection_MySQL = con
    6. Catch ex As Exception
    7. Console.Write(ex.Message)
    8. GetConnection_MySQL = Nothing
    9. End Try
    10. End Function


    @RodFromGermany Bevor ich mit der Maus ins Direktfenster klicke, habe ich nur das Projekt geöffnet (Datei -> Zuletzt geöffnete Projekte und Projektmappen).
    @ErfinderDesRades Das das Direktfenster nicht dafür geeignet ist, habe ich mir gedacht. Es ist nur im Moment der einzige Weg den ich kenne um eine Methode zu testen, ohne das ganze Projekt zu starten. :(
    Nanu? Du kannst im Direktfenster was eingeben, obwohl das Projekt garnet gestartet ist?

    Bei mir erscheint das Direktfenster nur während des Debuggens (oder habich malwieder iwie den Schuss nicht gehört?)

    Wie dem auch sei:
    Wenn ich was teste, dann ändere ich entweder zeitweilig den Startvorgang meines Projektes, oder bau einen Extra-Aufruf der zu testenden Methode im laufenden Startup ein, oder mache auch ein Testprojekt.
    Und mein Test läuft dann mit F5 ab, da mussich nicht jeden Test was in ein Fenster tippen.
    @Jebediah Das ist nicht der Plan.
    Setze einen Haltepunkt, und wenn das Programm da vorbeikommt und sich im BREAK-Zustand befindet, schreib was in das Direktfenster.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!