使用GDB调试程序时,需要查看变量的值。对于普通变量,直接使用p命令即可,如下:
对于vector,也可以使用相同的方法,如下:
vector元素较少时,这种方法没有问题。但当vector数量上万时,这种方法就不是太方便了:
这种情况下,可以通过myvector._M_impl._M_start 访问随机访问vector元素,_M_impl._M_start 为vector数据内容首地址,直接使用“p matrix._M_impl._M_start”,打印的是数据的首地址,如下:
通过 “p *matrix._M_impl._M_start”便可以得到第一个元素的内容,如下:
通过地址偏移打印其他元素的位置,如打印第5个元素的内容, 命令为“p *(matrix._M_impl._M_start + 4)”(索引下标从0开始):
除此之外,还可以通过“p *matrix._M_impl._M_start@N”打印前N个元素(N从1开始),如打印前两个元素:
附
#include <stdio.h>
#include <string>
#include <vector>
int main(int argc, char **argv)
{
std::vector<std::vector<std::string>> matrix;
for (int i = 0; i < 10; ++i) {
matrix.push_back(std::vector<std::string>());
for (int j = 0; j < 10; ++j) {
matrix[i].push_back(std::to_string(i * 10 + j));
}
}
std::string str = "Hello World !\n";
printf("ok\n");
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)