c++ - 无法使用 lldb 和 VSCode 调试简单的 C++ 程序

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

我正在尝试在 MacOS Catalina 上使用 lldb 和 VSCode 设置 C++ 调试器。我能够成功编译源代码以输出可执行文件和 .dSYM 文件,并通过 VSCode launch.json 和 tasks.json 文件启动调试器。但是,我无法在我的编辑器中设置断点并将它们反射(reflect)在调试器窗口中。程序只是一直运行。

启动.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": "g++ build and debug ARMsim",
            "type": "cppdbg",
            "request": "launch",
            "program": "ARMsim",
            "args": [],
            "stopAtEntry": true,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "lldb",
            "preLaunchTask": "g++ build ARMsim"
        }
    ]
}

任务.json

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558 
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "type": "shell",
            "label": "g++ build ARMsim",
            "command": "/usr/bin/g++",
            "args": [
                "-g",
                "${workspaceFolder}/ARMsim.cpp",
                "-o",
                "${workspaceFolder}/ARMsim"
            ],
            "options": {
                "cwd": "/usr/bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build"
        }
    ]
}

Program source code, note breakpoints on lines 9 and 10.

Debugger window text.

我唯一的想法是这与 .dSYM 文件有关。我的断点没有反射(reflect)在其中,或者它没有被加载到 lldb 中,或者我误解了这一切的工作原理。我看过其他有关此问题的 StackOverflow 帖子,但我确实是在使用 -g 标志进行编译并且正在创建我的符号文件。

最佳答案

注意,你可以设置断点了。

对我有用的是 launch.json 中的程序项需要如下所示:
“程序”:“${workspaceFolder}/ARMsim”

如果没有完全限定的路径,我会得到一个错误并且实际上无法调试任何东西。

只有那个改变,我的调试器启动,一个外部终端窗口被打开,源文件被激活,我在主函数的第一行停止(因为 stopAtEntry 为真)。继续在断点处停止。

我唯一能想到的另一件事是确保您始终在 VS Code 中打开文件夹,而不是单个文件。否则 VS Code 将不知道工作区文件夹是什么。

我假设其他一切都已设置并正常工作。 XCode 命令行工具、适当的扩展等。如果您还没有更换现有的 g++(我根本不推荐),您实际上只是在调用 clang++。

还有一张小纸条。从 C++11 开始,您不必将文件名转换为 C 字符串。

关于c++ - 无法使用 lldb 和 VSCode 调试简单的 C++ 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58804729/

相关文章:

javascript - 如何调用Frida Gadget(JavaScript API iOS)中的方法?

visual-studio-code - 从扩展名中打开带有特定搜索查询的VS Code设置窗口

c++ - 在 C++ 中子类化时为什么有时需要向重写的函数添加 virtual 关键字?

c++ - 使用 typename::的模板结构特化

c++ - "Error Opening SDF File"对于 VS2015 中的所有 C++ 项目

python - VS代码语言服务器不正确

visual-studio-code - 如何调试Visual Studio Code扩展?

c++ - 如何找出 C++ 中的当前字符集?

debugging - 我将 vs15 更新到 vs17 后,xamarin.ios 构建就卡住了

java - 远程调试 : No connection to Wildfly 14 on OpenJDK 11 at port 8787