【工具】——VSCODE调试C++时无法显示Vector,map等容器的值

文章讲述了在VScode中调试C++代码时,如何通过编辑launch.json文件并添加特定设置,如导入Python路径和启用pretty-printing,以便正确显示STL容器(如string、vector)的值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载自:VScode调试C++代码时无法查看STL容器(string、vector等)

原始状态
在这里插入图片描述
解决方法:编辑launch.json,加入如下设置:

"setupCommands": [
    {
        "description": "Test",
        "text": "python import sys;sys.path.insert(0, '/usr/share/gcc-8/python');from libstdcxx.v6.printers import register_libstdcxx_printers;register_libstdcxx_printers(None)",
        "ignoreFailures": false
    },
    {
        "description": "Enable pretty-printing for gdb",
        "text": "-enable-pretty-printing",
        "ignoreFailures": true
    }
]

**注意:**这里“/usr/share/gcc-8/python”这个路径根据每个人安装的路径不同可能会不一样的。我们得根据实际路径进行填写

在这里插入图片描述
整个launch.json如下:

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 启动",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/main",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Test",
                    "text": "python import sys;sys.path.insert(0, '/usr/share/gcc-8/python');from libstdcxx.v6.printers import register_libstdcxx_printers;register_libstdcxx_printers(None)",
                    "ignoreFailures": false
                },
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
            ]
        }

    ]
}

重新按F5启动调试,我们发现可以正常显示string,vector等STL容器的值了
在这里插入图片描述

### 解决方案 对于在 VSCode调试遇到的变量不可见问题,具体解决方案取决于所使用的编程语言环境。 #### Python 环境下的调试配置 确保选择了正确的调试选项。当观察到 "⏳ 等待调试器附加…" 提示,在 VSCode 中应选择 `Python Debugger: Attach` 来连接已运行的应用程序实例[^1]。这允许开发者通过设置断点并逐步执行代码来检查变量的状态变化情况。 #### C++ STL 类型可视化 针对 C++ 开发者面临的标准模板库(STL)容器如 `std::vector`, `std::map` 显示为底层成员而非直观的内容列表的情况,需确认启用了 GDB 的漂亮打印功能(pretty-printing),以及确保编译器生成了必要的调试信息。通常情况下,可以通过调整 `.gdbinit` 文件或是在 launch.json 添加特定参数以支持更友好的数据结构展示方式[^3]: ```json { "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/build/main", "args": [], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": true, "MIMode": "gdb", "setupCommands": [ { "description": "Enable pretty printing", "text": "-enable-pretty-printing" } ] } ] } ``` #### ROS 工程中的调试方法 对于涉及机器人操作系统(ROS)项目的开发人员来说,理解 `launch` 和 `attach` 请求之间的差异非常重要。前者用于启动新的节点进程并与之交互;后者则是用来附着于已经存在的进程中进行监控和控制。根据实际需求选用合适的请求类型可以有效提升调试效率[^4]. #### 编辑器扩展冲突排查 有第三方插件可能会干扰正常的编辑操作流程。例如,安装有 Vim 扩展的情况下可能导致无法直接修改 JSON 配置文件等问题发生。此可以选择暂停用该类插件或是学习适应其特有的编辑模式——比如先切换至插入状态再做更改即可解决问题[^5].
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值