VS代码在C++调试中忽略断点

x8diyxa7  于 2022-12-20  发布在  其他
关注(0)|答案(5)|浏览(193)

我正在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
                }
            ]
        }
    ]
}
rqmkfv5c

rqmkfv5c1#

使用-g标记沿着g++/clang++编译程序。

tcbh2hod

tcbh2hod2#

这个问题简直毁了我的一天,原来我所要做的只是TerminalRun Build TaskCtrl+Shift + B,然后开始调试。

lrl1mhuk

lrl1mhuk3#

我发现如果你的源代码文件名包含白色,比如“Binary Search.cpp”,VSCode将忽略断点,而不管“在入口处停止”的配置。从我的源文件名中删除空格是有效的,尽管它们的路径包含空格。例如“C++ Exercises/BinarySearch.cpp”似乎是有效的。
在GitHub上打开的this问题中,建议非ASCII字符可能导致此类问题。

mefy6pfw

mefy6pfw4#

默认的launch.json文件包含以下行:
第一个月
但是这将运行一个.out来启动调试,如果您只使用一个cpp文件配置tasks.json文件,它将具有如下行:

"-o",
                "${fileDirname}/${fileBasenameNoExtension}"

这将创建一个与你当前文件同名的可执行文件.
更改tasks.json以创建一个.out文件,或者使用当前文件的无扩展名更改launch.json文件。
launch.json:

"program": "${workspaceFolder}/<stripped current file name>",

tasks.json:

"-o",
                "${fileDirname}/a.out"
pxiryf3j

pxiryf3j5#

环境变量似乎有问题,请尝试从“Vscode的开发人员命令提示符”打开vscode,然后在提示符下键入:代码

相关问题