【问题标题】:Cannot debug C++ in visual studio code on Mac. Launch.json does not execute program in terminal无法在 Mac 上的 Visual Studio 代码中调试 C++。 Launch.json 不在终端中执行程序
【发布时间】:2020-03-19 19:35:43
【问题描述】:

我是 Visual Studio Code 的新手。我正在尝试调试一个简单的 C++ 代码。 我编辑了我的launch.json 以便能够像这样调试应用程序:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(lldb) Launch", 
            "type": "cppdbg",  
            "request": "launch",      
            "program": "${workspaceFolder}/Calculator",   
            "args": [],   
            "stopAtEntry": false,  
            "cwd": "${workspaceFolder}",  
            "environment": [],  
            "externalConsole": true,  
            "MIMode": "lldb"            
        }        
    ]
}

当我开始调试时,终端在正确的文件夹中打开,但程序没有执行。所以可视化代码不会停在我想在程序中检查的断点处。

在我的 task.json 中,我有以下代码:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Echo vars",
            "command": "echo",
            "args": [
                "${env:USERNAME}",
                "workspaceFolder = ${workspaceFolder}"
            ],
            "type": "shell",
            "problemMatcher": []
        },
        {
            "label": "build",
            "type": "shell",
            "command": "g++ -g Calculator.cpp -o Calculator",
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": "$gcc"
        }
    ]
}

有人可以帮我解决这个问题吗?

提前致谢

【问题讨论】:

  • 您是否使用调试符号构建了代码?
  • 嗨艾伦,感谢您的回答。恐怕我不知道您所说的“调试符号”是什么意思。你能详细解释一下吗?

标签: c++ macos visual-studio-code


【解决方案1】:

如 cmets 中所述:如果您的 Calculator.cpp 未使用调试符号编译,即。 g++ 在没有 -g 标志的情况下调用,您将无法调试它。

因此,在您的 launch.json 中添加一个 prelaunchTask 条目,这将确保始终在启动调试器之前执行使用调试符号编译源代码的构建任务。

"environment": [],  
"externalConsole": true,  
"MIMode": "lldb",      
"preLaunchTask": "build"

编辑您的 launch.json 以将调试器日志输出添加到您的项目:

"logging": { "engineLogging": true, "trace": false, "traceResponse": false } 

【讨论】:

  • 我添加了所有这些。除了在我的 task.json 中,我还有以下句子:“command”:“g++ -g Calculator.cpp -o Calculator”,所以我想我正在按照您的建议使用调试符号进行编译。我遵循了不同的教程,但我不知道 May Mac 有什么问题。我想我会尝试重新安装 VSCode
  • 您是否在 VSC 中看到命令 g++ -g Calculator.cpp -o Calculator 在您的程序启动之前执行?
  • 嗨 pero_hero。谢谢回答。是的,在我的程序启动之前正在执行该命令。实际上,为了确保我在按下“开始调试”按钮后删除了可执行文件。并且命令完美执行。计算器可执行文件已正确创建。
  • 在调试控制台中,我总是收到以下消息:“警告:未检测到 Debuggee TargetArchitecture,假设为 x86_64。”
  • 我也有这个警告信息,它正在工作。您可以尝试将调试器的日志输出添加到您的项目中,如更新的答案所示,并将其第一部分添加到 OP?我还将 stopAtEntry 设置为 true。
猜你喜欢
  • 2016-10-12
  • 2021-02-27
  • 2021-10-18
  • 1970-01-01
  • 1970-01-01
  • 2018-07-27
  • 1970-01-01
  • 2016-07-29
  • 2018-09-26
相关资源
最近更新 更多