GDB打印vector指定元素

使用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 
#include 
#include int main(int argc, char **argv)
{std::vector> matrix;for (int i = 0; i < 10; ++i) {matrix.push_back(std::vector());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");
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部