【问题标题】:Debugging C/C++ Language Not Hitting Breakpoints调试 C/C++ 语言未遇到断点
【发布时间】:2018-03-19 07:13:20
【问题描述】:

我有以下文件 overflow.c,我正在尝试通过 Visual Studio Code macOS 中的断点进行调试

#include <stdio.h>

int main(void) {
    int n = 1;
    for (int i = 0; i < 64; i++)
    {
        printf("%i\n", n);
        n = n * 2;
    }
    return 0;
}

我通过在终端中输入make overflow 来构建它,它会返回

cc   overflow.o   -o overflow

我可以在终端中执行./overflow 来运行它,这很有效。我安装了 Microsoft 的 C/C++ 扩展。我的launch.json 如下所示:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "C Run",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceRoot}/overflow",
            "args": [],
            "stopAtEntry": true,
            "cwd": "${workspaceRoot}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "lldb"
        }
    ]
}

当我使用“C 运行”配置进行调试时,它会运行我的整个代码不会遇到任何断点 (found here)

“C Attach”用于附加到已运行的应用程序,此处不适用。我已将以下内容添加到我的 PATH:

PATH="/Applications/Xcode.app/Contents/Developer/usr/bin:${PATH}"

调试“C 运行”配置后我的调试控制台会加载一堆符号,从我的打印语句返回输出,并以

结尾
The program '/Users/ahlam/Downloads/workspace/overflow' has exited with code 0 (0x00000000).

编辑:我也用 C++ 尝试过,它具有相同的行为。制作了一个hello.cpp,使用g++ hello.cpp 构建,调试只是运行了整个代码而没有遇到任何断点。

感谢任何帮助。

【问题讨论】:

  • 也许开始调试而不是运行?
  • 我进入“调试”菜单,单击绿色播放按钮,将鼠标悬停在上面显示开始调试,所以我认为我正在调试。您是否有不同的工作流程?

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


【解决方案1】:

您需要生成源代码级的调试信息,这可以通过使用clang 中的-g 标志来完成:

clang -g overflow.c -o overflow

这样做而不是 make overflow。您将在您的目录中看到一个名为 overflow.dSYM 的文件夹。调试现在应该可以工作了。

【讨论】:

  • 感谢您的回答。我还想声明,在 linux 环境中编译时,同样的事情也适用于 g++。如果你对 g++ 或 clang 使用 -g arg,你会在 vscode 中得到很好的调试。
猜你喜欢
  • 2021-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-19
  • 1970-01-01
相关资源
最近更新 更多