You need to enable JavaScript to run this app. GDB使用stl-view打印map<string,vector<string>>内容报错如何解决
优惠活动
大模型
产品
解决方案
定价
更多

GDB使用stl-view打印map<string,vector<string>>内容报错如何解决

问题原因

你遇到的报错是因为stl-views.gdb自带的pmap命令参数解析逻辑不支持包含尖括号的嵌套类型参数,传入vector<string>时无法被GDB正确识别为已定义类型。

可行解决方案

方法1:分两步打印目标键的value(最稳妥,无需修改代码)

不需要打印整个map,先取出Node1对应的vector,再用自带的pvector命令打印内容即可:

  1. 先安全获取目标键对应的value(避免用[]插入空元素修改原对象):
    p (*(m1.find("Node1"))).second
    
  2. 直接把该value作为参数传入pvector命令:
    pvector (*(m1.find("Node1"))).second string
    
    执行后就会输出你想要的N1S1、N1S2、N1S3三个元素。

方法2:给嵌套类型定义别名(适合高频打印同类型嵌套结构的场景)

在你的C++代码中给嵌套的vector类型加typedef别名:

typedef vector<string> StrVec;
map<string, StrVec> m1;

重新编译运行程序后,直接用别名作为pmap的参数即可正常打印整个map:

pmap m1 string StrVec

方法3:修改pmap的类型解析规则(适合不想改业务代码的场景)

直接编辑你本地的stl-views.gdb文件,找到pmap命令处理类型参数的逻辑,给类型参数增加引号支持,修改完成后就可以传入带引号的嵌套类型:

pmap m1 string "vector<string>"

内容的提问来源于stack exchange,提问作者anurag86

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 08:39:02