Visual Studio Code .NET Core调试器未达到断点

时间:2018-12-18 07:09:53

标签: c# debugging visual-studio-code .net-core

我在调试Visual Studio Code中用.NET Core编写的应用程序时遇到问题。这是设置: 我正在使用运行Debian 9(具有默认GUI)的虚拟机。我已经安装了.Net Core SDK 2.1和Visual Studio Code 1.30.0。安装了C#1.17.1的扩展。我创建了一个简单的项目:

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();
    }
}

如果我运行程序,则在执行时产生正确的输出。 在调试窗口中,按齿轮按钮以编辑launch.jason文件Debug window

这是它的样子:

{
 "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}"
    }
 ,]
}

我在项目中设置了一个断点: Breakpoint

当我按下绿色三角形按钮时,它没有命中断点。实际上,我认为我根本不执行任何代码。 要使该应用程序处于调试模式,我会缺少什么吗?

请帮助!

4 个答案:

答案 0 :(得分:2)

我在其他设置上遇到了相同的问题。使用VSCode和dotnet sdk 2.2运行Windows 10。

我在浏览Here时发现了一些答案。

还有This one I think fixed my problem

当要求将调试器附加到进程时,我还注意到要确保选择了正确的“ c:/projectdir/bin/debug/projectname.dll”。

那之后,VSCode成功击中了我的断点。

我希望这会有所帮助。

答案 1 :(得分:0)

1)在终端中转到您的项目并编写

dotnet restore
dotnet clean
dotnet build

2)检查配置(launch.json)中“ program”和“ cwd”的路径。

答案 2 :(得分:0)

我将项目文件从netcoreapp3.0切换到了netcoreapp2.2,并且一切正常,但是断点没有命中。删除bin和obj目录后,出现错误,提示找不到可执行dll。原来,我还必须更改我的launch.json文件。

在.vscode / launch.json中,请确保检查程序文件夹和可执行文件是否存在。

答案 3 :(得分:0)

万一有人将“类库”项目“转换”为控制台应用程序时遇到此问题,这是我发现的症状和原因:

当我实际上想要一个控制台应用程序时,我错误地创建了一个类库。之前,我在.NET Framework项目中犯了同样的错误,所以我想将其转换,没有问题。所以我更改了输出类型,并给了它一个启动对象。该项目已运行,但没有遇到断点。

我花了一段时间才找出原因;这是因为我将原始的类库项目创建为.NET Standard项目。当我创建一个与.NET Core(而不是.NET标准)的新项目(相同的代码)时,遇到了断点。

非常有趣的是,您实际上可以将.NET标准类库项目切换到控制台应用程序,因为看起来您无法通过UI创建该设置。