VS代码忽略了c ++调试中的断点

时间:2018-01-15 17:49:12

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

我正在调试VS Code中的c ++代码,但它并没有在断点处停止并可视化变量,监视和调用堆栈,它本应该这样做。而不是这个,它在调试控制台中打印出来:

Breakpoint 1, 0x000000000040074a in main ()
[Inferior 1 (process 9445) exited normally]
The program '/home/hashir/x/a.out' has exited with code 0 (0x00000000)

这里是launch.json文件:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "/home/hashir/x/a.out",
            "args": [],
            "stopAtEntry": false,
            "cwd": "/home/hashir/x/",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

3 个答案:

答案 0 :(得分:7)

使用-g标签以及g ++ / clang ++

来编写程序

答案 1 :(得分:0)

我已经发现,如果您的源代码文件名包含空格,例如“ Binary Search.cpp”,则VSCode将忽略断点,而无论“停止输入”配置如何。尽管源文件路径中包含空格,但从源文件名称中删除空格是可行的。例如,“ C ++ Exercises / BinarySearch.cpp”似乎有效。

在GitHub上发布的this问题中,建议非ascii字符可能会导致此类问题。

答案 2 :(得分:0)

这个问题简直毁了我的一天。事实证明,我所要做的只是 Terminal > Run Build TaskCtrl+Shift + B 然后开始调试。