在GDB中很好地打印C++字符串向量的元素



我想在GDB 中很好地查看std::vector<std::string>的内容

我可以像这个建议中一样查看

print *(myVector._M_impl._M_start)@myVector.size()

但是它打印出了C++STL的所有组成部分,并且有点难以查看";实际的";字符串内容

有没有什么方法可以在不显示STL容器的某些部分的情况下很好地查看元素?

有没有办法在不显示STL容器的某些部分的情况下很好地查看元素?

您要么有一个非常旧的GDB,要么有一些非标准的设置。

以下是默认GDB安装的Fedora-34系统上的情况:

(gdb) list
1       #include <string>
2       #include <vector>
3
4       int main()
5       {
6         std::vector<std::string> v;
7         v.push_back("abc");
8         v.push_back("abcdef");
9         v.push_back("ghi");
10      }
(gdb) b 9
Breakpoint 1 at 0x401378: file t.cc, line 9.
(gdb) run
Starting program: /tmp/a.out
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Breakpoint 1, main () at t.cc:9
9         v.push_back("ghi");
(gdb) p v
$1 = std::vector of length 2, capacity 2 = {"abc", "abcdef"}
(gdb) n
10      }
(gdb) p v
$2 = std::vector of length 3, capacity 4 = {"abc", "abcdef", "ghi"}
(gdb) q

最新更新