Home Articles

调试C / C语言没有达到断点

Asked
Viewed 783 times
1

我有以下文件 overflow.c ,我正在尝试通过断点调试 in 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 Run"配置进行调试时,它会运行我的整个代码 without hitting any of my breakpointsfound here

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

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

调试“C Run”后,我的调试控制台配置了一堆符号,从我的print语句返回输出,并以 . 结尾

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

EDIT :我也用C尝试过,它有相同的行为 . 制作 hello.cpp ,使用 g++ hello.cpp 构建并调试只运行整个代码而不会遇到任何断点 .

任何帮助表示赞赏 .

1 Answer

  • 3

    您需要生成源级调试信息,您可以使用 clang 中的 -g 标志来执行此操作:

    clang -g overflow.c -o overflow
    

    这样做而不是 make overflow . 您将在目录中看到名为 overflow.dSYM 的文件夹 . 现在调试应该可行 .

Related