在 GDB 中很好地打印 C++ 字符串向量的元素
Print elements of C++ string vector nicely in GDB
我想在GDB中很好的查看std::vector<std::string>
的内容
我可以像this建议的那样查看它
print *(myVector._M_impl._M_start)@myVector.size()
但是它会打印出所有属于 C++ STL 的内容,并且很难查看字符串的“实际”内容
有什么方法可以在不显示 STL 容器的某些部分的情况下很好地查看元素?
Is there any way to view the elements nicely without displaying some part of the STL containers?
您的 GDB 非常旧,或者某些非标准设置。
这是在 Fedora-34 系统上的样子使用默认的 GDB 安装:
(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
= std::vector of length 2, capacity 2 = {"abc", "abcdef"}
(gdb) n
10 }
(gdb) p v
= std::vector of length 3, capacity 4 = {"abc", "abcdef", "ghi"}
(gdb) q
我想在GDB中很好的查看std::vector<std::string>
的内容
我可以像this建议的那样查看它
print *(myVector._M_impl._M_start)@myVector.size()
但是它会打印出所有属于 C++ STL 的内容,并且很难查看字符串的“实际”内容
有什么方法可以在不显示 STL 容器的某些部分的情况下很好地查看元素?
Is there any way to view the elements nicely without displaying some part of the STL containers?
您的 GDB 非常旧,或者某些非标准设置。
这是在 Fedora-34 系统上的样子使用默认的 GDB 安装:
(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
= std::vector of length 2, capacity 2 = {"abc", "abcdef"}
(gdb) n
10 }
(gdb) p v
= std::vector of length 3, capacity 4 = {"abc", "abcdef", "ghi"}
(gdb) q