在 macOS 上使用 Visual Studio Code 调试 C++ 标准库

安东尼奥·富舍托

在 macOS 上使用Visual Studio CodeMicrosoft C/C++ 扩展来评估生产环境中的实际可用性和生产力。

在我的场景中,我使用Clang/LLVM编译器和LLDB调试器。

由于某些未知原因,我无法调试 C++ 标准库。我可以进入我的应用程序中定义的符号,但不能对标准的符号做同样的事情,例如std::vector构造函数。

目前尚不清楚这是错误的配置还是这些工具的限制。在网上搜索时,我注意到 C++ 标准库调试在使用 GNU 工具链的 Linux 上运行良好。

有没有办法使用LLDB调试器调试标准符号有没有人在生产中使用这些工具?

为了完整起见,它遵循我当前的非常简单的配置:

tasks.json

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: clang++ build active file",
            "command": "/usr/bin/clang++",
            "args": [
                "-std=c++17",
                "-stdlib=libc++",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "options": {
                "cwd": "${workspaceFolder}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "compiler: /usr/bin/clang++"
        }
    ]
}

launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(lldb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "console": "externalTerminal",
            "MIMode": "lldb",
            "preLaunchTask": "${defaultBuildTask}"
        }
    ]
}
安东尼奥·富舍托

Microsoft C/C++ 扩展支持团队指出,这是由于lldb. 事实上,默认target.process.thread.step-avoid-regexp设置为^std::

(lldb) settings show target.process.thread.step-avoid-regexp
target.process.thread.step-avoid-regexp (regex) = ^std::

将此设置更改为"",调试器也能够进入标准模板符号。这可以在launch.json配置文件中通过添加以下内容进行配置

"setupCommands": [
    {
        "text": "settings set target.process.thread.step-avoid-regexp \"\"",
        "description": "Enable stepping into STL"
    }
]

或者,也可以通过将此配置放在.gdbinit主目录中的文件中来在用户级别进行设置

settings set target.process.thread.step-avoid-regexp ""

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用 Visual Studio Code (MacOS) 调试 Pybind11 扩展

使用 Visual Studio Code Ubuntu 调试 c++ 代码

使用Visual Studio Code调试Node js

使用AngularJS进行Visual Studio Code调试

使用调试Visual Studio Code的Dotnet监视

Visual Studio调试c ++

如何在C语言的macO上的Visual Studio Code中启动调试?

在Unity(C#)+ Visual Studio Code中进行调试在OS X上可以工作吗?

调试时Visual Studio Code g ++无法与c ++ 17编译

如何设置Visual Studio Code以在Linux上调试C程序?

如何在Visual Studio Code(VSCode)上运行或调试php

如何在 Ubuntu 21.04 上使用 OpenJDK 11 在 Visual Studio Code 中查看 Java 标准库文档弹出窗口?

使用Visual Studio Code配置调试PHP的问题

使用Visual Studio Code在ROS中调试python脚本

使用Visual Studio Code调试并运行Angular2 Typescript?

使用Visual Studio Code调试Electron-Atom脚本

在Ubuntu中使用Visual Studio Code中的Bazel进行调试

使用babel-node在Visual Studio Code中进行调试

使用Visual Studio Code进行调试无法正常工作

使用 Visual Studio Code 调试 Azure IoT Edge 模块

使用Visual Studio Code在Docker中远程调试NodeJS

如何使用Visual Studio Code调试JavaScript中的摩卡测试?

Linux原生C库:如何配置Visual Studio Code以在Windows上使用它们?

Visual Studio Code在macOS上的哪里存储未保存的文件?

在MacOS上使用C ++ ext的VS Code无法调试我的代码

使用Android Studio调试C ++库

如何在 Visual Studio Code 上使用 Python 设置 AWS SAM 本地调试?

使用Visual Studio的Linux支持调试库代码

在 Visual Studio 2019 中通过 Windows 桌面向导使用 C++ 标准库