Visual Studio Code - Debugging Console

  • Allgemein

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von MasterQ.

    Visual Studio Code - Debugging Console

    Moin,

    ich arbeite gerade mit Visual Studio Code an einer Console Anwendung (C#). Leider gibt es beim Debuggen ein Problem, denn meine Anwendung wartet an einer Stelle auf einen Tastendruck des Benutzers. Dadurch wird eine Exception geschmissen, die mir erklärt, das das Debuggen von Nutzereingaben mit Console.ReadKey nur geht, wenn eine Console vorhanden ist (was ist) und wenn die Consoleausgabe und Eingabe nicht umgeleitet wurde.

    In der IDE gibt es unten ein Fenster mit Debugging-Ausgabe. Dahin wird die Console beim Debuggen wohl umgeleitet. Aber wie soll ich dann Debuggen?

    Weiß jemand, wie bei VSCode dieses Problem zu lösen ist?

    Gruß

    Joachim

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „MasterQ“ ()

    MasterQ schrieb:

    Aber wie soll ich dann Debuggen?
    Setze einen Haltepunkt eine Zeile tiefer.
    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!
    @MasterQ Kannst Du mal das (abgespeckte) Projekt posten?
    Ich kann das nicht reproduzieren.
    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!
    @RfG: Seit wann verwendest Du denn Visual Studio Code? Muss ich mir merken.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    da reicht ein simples



    im Konsoletemplate

    Zu beachten ist, dass ich Visual Studio Code verwende unter Linux.

    Unter VS und Windows hatte ich damit auch nie Probleme.

    Ob das Problem jetzt VSCode oder Linux zuzuordnen ist, weiß ich nicht. Ich tippe auf VSCode. Daher hab ich hier gepostet.

    --EDIT--

    Ich habe es grad mal ausprobiert. Also unter Windows ist's genauso. Also ein VSCode-Ding!

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „MasterQ“ ()

    MasterQ schrieb:

    Zu beachten ist, dass ich Visual Studio Code verwende unter Linux.
    Warum steht das nicht im ersten Post ganz groß in der ersten Zeile?
    Ich bin dann mal draußen.
    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!
    Nach langem Suchen, habe ich gerade die Lösung gefunden.

    In der Datei launch.json muss im Abschnitt für das Debugging eine Einstellung vorgenommen werden.

    Quellcode

    1. {
    2. // Use IntelliSense to find out which attributes exist for C# debugging
    3. // Use hover for the description of the existing attributes
    4. // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md
    5. "name": ".NET Core Launch (console)",
    6. "type": "coreclr",
    7. "request": "launch",
    8. "preLaunchTask": "build",
    9. // If you have changed target frameworks, make sure to update the program path.
    10. "program": "${workspaceFolder}/SolitaireV5.1/bin/Debug/net7.0/SolitaireV5.1.dll",
    11. "args": [],
    12. "cwd": "${workspaceFolder}",
    13. // For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console
    14. "console": "externalTerminal",
    15. "stopAtEntry": false
    16. },


    Für den Eintrag console gibt es drei Möglichkeiten, internalConsole, integratedTerminal und externalTerminal. Das stand auf dem ersten und dann sind keine Eingaben möglich. Bei den beiden anderen schon. Ich habe den dritten Eintrag genommen. Das ähnelt dann dem Verhalten bei Windows, dass ein neues Terminal (außerhalb VSCode) gestartet wird.

    Und dann klappt das auch mit dem Debuggen.