c++ - 如何在 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 会抱怨“无法评估函数——可能是内联的”。我应该怎么做才能检查向量的内容?
解决方案
你可以定义一个函数
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了解更多详情。
推荐阅读
- less - 来自不同来源的 LESS 变量
- mongoose - 链接猫鼬承诺
- android - “错误:
- 内部元素必须是资源引用或为空”修复后仍然存在
- ios - iPhone静音时如何播放声音?
- .net - 关于 String.Format 显示时间的问题
- wordpress - 如何在 PHP/Wordpress 中修复“加载资源失败:net::ERR_NAME_NOT_RESOLVED”
- java - 在 For 循环迭代中将 HashMap 添加到 ArrayList
- css - 如何重置填充以便正确显示列表填充?
- javascript - 如何使用加减按钮和输入框创建总计
- html - VBA:检查单选按钮后使隐藏字段可见