首页 > 解决方案 > 如何在 gdb 中检查 C++ 向量中的元素?

问题描述

我在 C++ 程序中有一个整数向量:

  1 #include <iostream>
  2 #include <vector>
  3 using std::vector;
  4 using std::cout;
  5 using std::endl;
  6
  7 int main()
  8 {
  9     vector<int> a;
 10     for (size_t i=0; i<7; ++i)
 11         a.push_back(i*2);
 12     cout << a.size() << endl;
 13     return 0;
 14 }

在 GDB 中,当我在第 12 行中断时,我可以检查 a.size() 的值。但是,如果我尝试检查 a[1],GDB 会抱怨“找不到运算符 []”。如果我试图检查 a.at(1),GDB 会抱怨“无法评估函数——可能是内联的”。我应该怎么做才能检查向量的内容?

标签: c++vectorgdb

解决方案


你可以定义一个函数

void print(vector<int> A) {
    for (int i=0; i<A.size(); ++i)
        cout << A[i] << ' ';
    cout << endl;
}

然后在 GDB 中,你可以“调用 print(a)”来查看向量 a 的内容。

顺便说一句,您未能在 GDB 中调用 a[i] 或 a.at(i) 的主要原因是,您的程序中没有使用这些方法,因此它们没有被实例化。请查看https://stackoverflow.com/a/24131961/7588831了解更多详情。


推荐阅读