GDB打印vector指定元素

2023-05-16

使用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(使用前将#替换为@)

GDB打印vector指定元素 的相关文章

  • 错误 C2039:“find”:不是“std”的成员

    我刚刚遇到一个奇怪的错误 它说 find 不是 std 的成员 错误 C2039 find 不是 std 的成员 错误 C3861 查找 未找到标识符 基本上 我想查找是否可以在向量中找到字符串 知道为什么会发生这种情况吗 代码帮助告诉我
  • 如何逐步绘制矢量路径? (拉斐尔.js)

    如何逐步动画化矢量路径 就像它被绘制一样 换句话说 慢慢地逐像素地显示路径 我在用着Rapha l js but如果您的答案不是特定于库的 例如可能有一些通用的编程模式可以完成此类事情 我对矢量动画相当陌生 欢迎 使用直线路径很容易做到 就
  • C# 等价于 C++ 向量或双端队列

    我几乎可以肯定这应该是重复的 但我搜索了一段时间但找不到答案 我应该在 C 中使用什么来替换 C 向量和双端队列有效率的 也就是说 我需要一种有效支持直接索引的结构 并且还支持以有效的方式再次从一端或两端删除 取决于向量或双端队列的情况 在
  • 我应该如何格式化 .dat 文件以便制作 3D 矢量图?

    我正在为大学做这个编程任务 我们必须写一个c 计算 3D 空间中某些线圈的磁场矢量的程序 我已经成功编写了这个程序 并且我认为它运行得很好 不过 我想添加一个特殊的东西 这是我的试卷 所以它必须特别好 我想绘制出向量 我习惯打电话gnupl
  • 从向量中删除元素在 R 中出现的时间量

    我想从一个向量中删除元素在另一个向量中出现的时间 就像我要减去它们一样 鉴于我想要删除的元素向量中的每个元素也存在于我想要从中删除的主向量中 a lt c A B B C C C b lt c A B C C a a in b return
  • 删除向量类成员

    我有一个 A 类 其成员是另一个 B 类的对象指针向量 class A std vector
  • vector 超出范围后不清除内存

    我遇到了以下问题 我不确定我是否错了或者它是一个非常奇怪的错误 我填充了一个巨大的字符串数组 并希望在某个点将其清除 这是一个最小的例子 include
  • 使用 swig 类型映射将向量> & 从 C++ 方法返回到 python 元组列表

    我在尝试包装一个 C 方法时遇到了很多麻烦 该方法将对向量的常量引用返回到 Python 元组列表 typemap out 我目前有这样的事情 myclass h inlcude
  • std::vector 迭代器失效

    之前有几个关于这个问题的问题 我的理解是调用std vector erase只会使位于某个位置的迭代器无效after被擦除的元素 然而 擦除一个元素后 该位置的迭代器是否仍然有效 当然 前提是它不指向end 擦除后 我对向量如何实现的理解似
  • 聚合函数在数据框中创建不需要的向量

    我在函数中创建数据帧时遇到了一个奇怪的问题 但是 在 data frame 之外使用相同的方法效果很好 这是基本函数 我用它来计算数据集的平均值 标准差和标准误差 aggregateX lt function formula dataset
  • C++ 在 Vector 中使用不可分配的对象

    我想将对象列表存储在std vector 但对象包含引用且无法分配给 但是 我可以复制构造该对象 我能想到的唯一选择是使用指针来包装对象并在需要分配指针时重新设置指针 但这样做的语法会显着降低可读性 特别是在使用迭代器时 我更喜欢另一种选择
  • R 中的整数或双精度列表

    我有一个大约 1000 个整数的列表 我需要能够进行一些数学计算 但它们被困在列表或字符形式中 我怎样才能切换它们以便它们可用 样本数据 gt y 1 1 7 3 1 6 7 1 7 6 5 3 1 3 3 0 6 2 4 9 19 1 9
  • 如何随机打乱向量中的元素

    我正在尝试完成一项需要发生以下情况的作业 请求所需的元素数量 n 用元素 0 1 2 n 1 填充向量并将其显示到控制台 随机打乱元素并将新的排列显示到控制台 我可以输入向量 但我不知道如何对向量进行洗牌 注意 我不能使用 random s
  • 用矩阵变换 3D 向量的方法

    我一直在阅读一些关于用矩阵转换 Vector3 的文章 并且正在努力深入研究数学并自己编码 而不是使用现有代码 无论出于何种原因 我的学校课程从未包含矩阵 所以我正在填补我的知识空白 值得庆幸的是 我认为我只需要一些简单的东西 背景是我正在
  • 在 gnuplot 中创建仅带有箭头的向量

    如何创建一个没有线条而只有箭头的矢量 有一个名为 nohead 的选项 它删除了箭头的头部 但我想做相反的事情 删除矢量的线并只保留头部 最优选地还能够基于单个数字重新缩放该箭头的大小 找到了一些有用的建议TeX交换 https tex s
  • 在 QtCreator 中调试时如何查看 qDebug 消息

    我正在从 Eclipse CDT 带有 Qt 集成插件 过渡到 QtCreator 2 0 但仍有一件事困扰着我 QtCreator 当我在 QtCreator 中调试时 我在Application output tab直到我停止正在调试的
  • 用 HashMap[Int, Vector[Int]] (Scala) 表示图(邻接列表)?

    我想知道如何 如果可能的话 我可以通过以下方式制作 可变 图的邻接列表表示HashMap Int Vector Int HashMap当然是可变的 目前我将其设置为HashMap Int ArrayBuffer Int 但我可以更改 Arr
  • 在 C++ 头文件中声明向量

    我在制作的 C 类的头文件中的向量声明时遇到一些问题 我的整个头文件如下所示 ifndef PERSON H define PERSON H include Message h include
  • 将运算符 << 添加到 std::vector

    我想添加operator lt lt to std vector
  • Ruby 解释器出现段错误后,是否可以从 corefile 中获取 Ruby 回溯?

    Note 我使用了在使用 libxml ruby gem 时遇到的段错误来说明问题 但我已经用所述 gem 解决了我的问题 这个问题真正涉及的是从 gdb 使用 corefile 查看 Ruby 回溯 即解释器在 Ruby 代码无法处理异常

随机推荐

  • Harbor使用公网证书

    Harbor使用公网证书 申请公网证书 申请阿里云免费证书 因为Harbor使用Nginx做代理 xff0c 因此在公网证书审核通过后 xff0c 在证书下载面板 xff0c 单击Nginx服务器操作列的下载 下载解压后您将会获得以下文件
  • mysql查看实时语句和慢sql

    mysql查看实时语句和慢sql 查看实时语句 Mysql除了手动执行的语句 xff0c 还有很多在后台由其他模块执行的语句 xff0c 按理来说 xff0c 那些由其他模块执行的语句是不能实时查看的 xff0c 因为这个资源消耗特别的大
  • iPerf3 命令通用选项

    iPerf3 命令通用选项 同时适用于客户端与服务器端 命令选项命令描述 p port nThe server port for the server to listen on and the client to connect to Th
  • 在Ubuntu 14.04中修改date的显示

    最近把开发环境切换到了Ubuntu 14 04 xff0c 发现一点很别扭 xff0c 就是date显示为中文 例如 lipeng 64 lipeng MS 7673 date 2015年 02月 14日 星期六 21 16 21 CST
  • 2021美团笔试题(第十套)个人解答

    1 淘汰分数 span class token comment 暴力解法 span span class token keyword import span span class token namespace java span clas
  • 不同方式输出九九乘法表(java)

    方式一 xff1a System out println 34 打印正方形 34 正方形 for int i 61 1 i lt 61 9 i 43 43 外层循环控制行 for int j 61 1 j lt 61 9 j 43 43 内
  • Blazor Json Web Token 身份验证与授权

    Blazor 身份验证与授权 身份验证 Blazor Server应用和 Blazor WebAssembly 应用的安全方案有所不同 Blazor WebAssembly Blazor WebAssembly 应用在客户端上运行 由于用户
  • 编程之美读书笔记_3.3_计算字符串的相似度

    3 3 计算字符串的相似度 和计算两字符串的最长公共子序列相似 设Ai 为字符串A a1a2a3 am 的前i 个字符 xff08 即为a1 a2 a3 ai xff09 设Bj 为字符串B b1b2b3 bn 的前j 个字符 xff08
  • vxworks 开发环境搭建

    安装指南 1 安装VxWorks6 9 xff08 光盘文件是DVD R147826 1 1 01 vx69 udf iso xff09 1 不要选择两个check 选项 xff0c 可以节省不必要的时间 xff1b 2 Next 到如图
  • ffmpeg调用avformat_open_input打开rtmp转发流阻塞

    G28181协议接入时 xff0c 为了减少视频处理服务的改动 xff0c 故采用了rtmp转发的方案 使用nginx搭建rtmp转发服务器 xff0c 设备代理将流推送给nginx xff0c nginx再将流转发给视频处理服务 但设备代
  • 交叉编译一个能在mips下运行的vim编译器

    有了交叉编译环境 xff0c 下一步就能在我的路由器和光猫上搞更多的事情了 我的目标是编译出能够在路由器上运行的二进制程序 1 对交叉编译的理解 什么是交叉编译 xff1f 我们常用的路由器 光猫 电视盒等等都运行着一个系统 xff0c 它
  • CAP 定理的含义

    CAP 定理的含义 作者 xff1a 阮一峰 日期 xff1a 2018年7月16日 分布式系统 xff08 distributed system xff09 正变得越来越重要 xff0c 大型网站几乎都是分布式的 分布式系统的最大难点 x
  • boost::any实现解析

    忘记当初具体想做什么了 xff0c 只记得要求 xff1a 将各种类型 xff08 如int xff0c char xff0c float xff0c 自定义类型等 xff09 放到一个容器里 这样的要求 xff0c 目前stl的任何容器都
  • 程序性能优化工具——gprof

    gprof是程序性能分析的一个重要工具 xff0c 通过gprof工具可以获取程序中函数之间的调用关系 xff0c 每个函数的调用次数 xff0c 及函数的消耗时间 xff0c 从而为程序性能优化指明方向 由此也可以推断出 xff0c 一个
  • 程序性能优化之分支预测

    程序是由多条指令构成的 xff0c 程序的运行便是cpu一条一条执行程序指令的过程 一条指令的执行过程大致可以分为加载指令 xff0c 翻译指令 xff0c 加载数据 xff0c 执行运算 xff0c 更新数据几个阶段 xff0c 每个阶段
  • 初识valgrind

    valgrind是一款非常优秀的性能调试工具 xff0c 通过valgrind xff0c 可以完成以下几点工作 xff1a 1 Memcheck xff1a 内存错误检测 2 Cachegrind xff1a 缓存和分支预测分析 3 Ca
  • 服务运维-日志

    服务一般情况下运行在后台 xff0c 没有界面 xff0c 很难观察到服务的状态 因此 xff0c 对于服务运维 xff0c 日志变成了一个非常重要的工具 通过服务日志 xff0c 可以了解到服务的运行状态 xff0c 如服务是否正常运行
  • 如何查看cpu是否支持sse指令级

    Mac xff1a 命令 xff1a sysctl a grep machdep cpu features 结果 xff1a machdep cpu features FPU VME DE PSE TSC MSR PAE MCE CX8 A
  • Mac系统下VSCode配置gopath

    golang项目的编译和调试依赖gopath 命令行可以通过export为每个golang项目导出不同的gopath xff0c 使用VSCode也可以通过配置 xff0c 实现不同的golang项目使用不同gopath xff0c 步骤如
  • GDB打印vector指定元素

    使用GDB调试程序时 xff0c 需要查看变量的值 对于普通变量 xff0c 直接使用p命令即可 xff0c 如下 xff1a 对于vector xff0c 也可以使用相同的方法 xff0c 如下 xff1a vector元素较少时 xff