Julian
Julian

Reputation: 393

Visual Studio Code .NET Core debugger not hitting a breakpoint

I have a problem trying to debug applications written in .NET Core in Visual Studio Code. Here is the setup: I'm using a virtual machine running Debian 9 (with the default GUI). I've installed .Net Core SDK 2.1, and Visual Studio Code 1.30.0. Installed the extensions for C# 1.17.1. I've created simple project:

class MyProgram
{
    static void Main(string[] args)
    {
        Console.WriteLine("Hello You Angel!");
        ProcessStartInfo startInfo = new ProcessStartInfo() { FileName = "/bin/bash", Arguments = "-c nautilus /home/", }; 
        Process proc = new Process() { StartInfo = startInfo, };
        proc.Start();
    }
}

If I run the program, in executes, and produces the correct output. In the debug window I pressed the gear button to edit the launch.jason fileDebug window

Here it is what it looks like:

{
 "version": "0.2.1",
 "configurations": [
    {
        "name": ".NET Core Launch (console)",
        "type": "coreclr",
        "request": "launch",
        "preLaunchTask": "build",
        // If you have changed target frameworks, make sure to update the program path.
        "program": "${workspaceFolder}/HelloWorld/bin/Debug/netcoreapp2.1/HelloWorld.dll",
        "args": [],
        "cwd": "${workspaceFolder}/HelloWorld",
        // For more information about the 'console' field, see https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md#console-terminal-window
        "console": "integratedTerminal",
        "stopAtEntry": false,
        "internalConsoleOptions": "openOnSessionStart",
        "externalConsole": false,
    },
    {
        "name": ".NET Core Attach",
        "type": "coreclr",
        "request": "attach",
        "processId": "${command:pickProcess}"
    }
 ,]
}

I've put a breakpoint in the project: Breakpoint

and when I hit the green triangle button, the breakpoint it not hit. Actually I think that non of the code i executed at all. Is there something I'm missing to get this app it debugging mode?

Please help!

Upvotes: 7

Views: 19506

Answers (4)

d219
d219

Reputation: 2835

In case anyone hits this problem when they have 'converted' a Class Library project to a Console Application here are the symptoms and cause that I found:

I had mistakenly created a Class Library when I actually wanted a Console Application. I've made this same mistake in .NET Framework projects before and so thought I'll just convert it, no problem. So I altered the Output Type and gave it a Startup Object. The project ran but breakpoints were not hit.

It took me a while to find out why; it was because I'd created the original Class Library project as a .NET Standard project. When I created a new project (same code) as .NET Core (rather than .NET standard) the breakpoints were hit.

Quite interesting that you can actually switch a .NET standard Class Library project to Console Application, as it appears you can't create that setup through the UI.

Upvotes: 2

Anton Swanevelder
Anton Swanevelder

Reputation: 1175

I switched my project file from netcoreapp3.0 to netcoreapp2.2 and everything build fine but my breakpoints did not hit. After deleting the bin and obj directories, I got an error that the executable dll could not be found. Turned out I had to also change my launch.json file.

In .vscode/launch.json make sure to check your program folder and executable exists.

Upvotes: 0

Tribalnecktie
Tribalnecktie

Reputation: 180

I was having the same issue on a different setup. Running windows 10 using VSCode and dotnet sdk 2.2.

I found a few answers browsing through gissues Here.

And This one I think fixed my problem

I also noticed to make sure I was selecting the correct "c:/projectdir/bin/debug/projectname.dll" when asked to attach the debugger to a process.

After that VSCode successfully hit my breakpoint.

I hope this helps.

Upvotes: 12

Maciej Pulikowski
Maciej Pulikowski

Reputation: 2517

1) In terminal go to your project and write

dotnet restore
dotnet clean
dotnet build

2) Check paths of "program" and "cwd" in your configurations (launch.json).

Upvotes: 6

Related Questions