【问题标题】:Visual Studio Code .NET Core debugger not hitting a breakpointVisual Studio Code .NET Core 调试器没有遇到断点
【发布时间】:2019-05-18 13:42:18
【问题描述】:

我在尝试在 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();
    }
}

如果我运行程序,in 会执行并产生正确的输出。 在调试窗口中,我按下齿轮按钮编辑launch.jason 文件

这是它的样子:

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

我在项目中设置了断点:

当我点击绿色三角形按钮时,它没有命中断点。实际上,我认为我根本没有执行任何代码。 为了让这个应用程序进入调试模式,我有什么遗漏吗?

请帮忙!

【问题讨论】:

  • 假设您已经尝试过干净/重新构建?
  • 是的,没有任何区别 :( 实际上,代码中的这个过程开始是为了向自己保证,根本没有执行任何代码(当我按下绿色三角形按钮时)
  • 我不得不问 - 但你在 Visual Studio 中处于调试模式吗?
  • 我没用Visual Studio,我用的是Visual Studio Code,如果VS Code里有这样的设置,可惜没找到

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


【解决方案1】:

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

我通过 gissues Here 找到了一些答案。

还有This one I think fixed my problem

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

之后 VSCode 成功命中我的断点。

我希望这会有所帮助。

【讨论】:

  • 感谢您的评论!但是我不再为与此问题相关的公司工作,因此我无法进行确切的设置来验证这是否是解决方案。 :) 但无论如何感谢您的努力!
  • 绝对!这可能不是万能的,但我认为如果将来遇到类似情况的人遇到此线程,它可能会对他们有所帮助。编码快乐!
【解决方案2】:

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

dotnet restore
dotnet clean
dotnet build

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

【讨论】:

  • 前两个命令成功通过,但第三个 - No executable found matching command "dotnet-rebuild"
  • 2) 我如何检查它们。如果您的意思是它们是否存在 - 答案是 - 是的,它们存在,我不确定 {workspaceFolder} 返回什么,但我尝试过使用绝对路径 .../home/debianusr/HelloWorld/bin/Debug/....... 相同的结果
  • “Dotnet 构建”*
【解决方案3】:

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

当我真正想要一个控制台应用程序时,我错误地创建了一个类库。我之前在 .NET Framework 项目中也犯过同样的错误,所以我想我会转换它,没问题。所以我改变了输出类型并给它一个启动对象。项目运行但没有命中断点。

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

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

【讨论】:

  • 太棒了,你拯救了我的一天
【解决方案4】:

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

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

【讨论】:

    猜你喜欢
    • 2015-02-26
    • 2023-04-10
    • 2013-10-04
    • 2016-11-15
    • 1970-01-01
    • 1970-01-01
    • 2019-03-19
    • 2019-09-30
    • 1970-01-01
    相关资源
    最近更新 更多