c++ - 如何在 GDB 中打印 C++ vector 的元素?

标签 c++ debugging stl vector gdb

我想检查 std::vector 的内容在 GDB 中,我该怎么做?假设它是 std::vector<int>为了简单起见。

最佳答案

使用 GCC 4.1.2,要打印名为 myVector 的整个 std::vector,请执行以下操作:

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

要仅打印前 N 个元素,请执行以下操作:

print *(myVector._M_impl._M_start)@N

说明

这可能很大程度上取决于您的编译器版本,但对于 GCC 4.1.2,指向内部数组的指针是:

myVector._M_impl._M_start 

从指针 P 开始打印数组的 N 个元素的 GDB 命令是:

print P@N

或者,以简短的形式(对于标准 .gdbinit):

p P@N

关于c++ - 如何在 GDB 中打印 C++ vector 的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/253099/

相关文章:

C++ 模板 : avoiding zero-length arrays without taking up extra space

c++ - 使用 “any_of”时如何检查字符串是否没有特定符号?

c++ - 当每个字符串由 "delete"创建时,如何在 "vector<string>"的元素上调用 "new char[]"?

debugging - 如何继续操作gdb命令控制台?

c++ - 从没有 key 的散列中查找 unordered_map 中的桶

c++ - 我是否需要知道算法的代码才能利用插入器和移动迭代器?

c++ - 在 C++ 中自动更新新结构中的相关值

ios - Xcode 8 内存图 malloc 堆栈无法加载回溯

java - IntelliJ 的“立即”窗口

c++ - 伪造插入器是一种好习惯吗?