首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >LLDB中的视图数组:相当于Xcode 4.1中GDB的'@‘运算符

LLDB中的视图数组:相当于Xcode 4.1中GDB的'@‘运算符
EN

Stack Overflow用户
提问于 2011-08-15 14:19:27
回答 7查看 36.8K关注 0票数 82

我想查看一个指针指向的元素数组。在GDB中,这可以通过使用运算符'@‘as将指向的内存视为给定长度的人工数组来实现

代码语言:javascript
复制
*pointer @ length

其中length是我想要查看的元素数量。

以上语法在随Xcode 4.1提供的LLDB中不起作用。

有没有办法在LLDB中实现上述功能?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2014-10-10 23:54:32

在lldb中有两种方法可以做到这一点。

最常见的方法是使用parray lldb命令,该命令接受一个COUNT和一个EXPRESSIONEXPRESSION将被计算并产生一个指向内存的指针。然后,lldb将在该地址打印该类型的COUNT项目。例如:

代码语言:javascript
复制
parray 10 ptr

其中,ptr的类型为int *

或者,也可以通过将指针转换为指向数组的指针来实现。

例如,如果您有一个int* ptr,并且希望将其视为一个由十个整数组成的数组,则可以这样做

代码语言:javascript
复制
p *(int(*)[10])ptr

因为它只依赖于标准的C语言特性,所以这个方法不需要任何插件或特殊设置就可以工作。它同样适用于其他调试器,如GDB或CDB,尽管它们也有专门的用于打印数组的语法。

票数 145
EN

Stack Overflow用户

发布于 2016-08-16 06:31:49

从Xcode8.0中的lldb开始,有一个新的内置parray命令。所以你可以说:

代码语言:javascript
复制
(lldb) parray <COUNT> <EXPRESSION>

EXPRESSION结果所指向的内存打印为表达式所指向类型的COUNT元素数组。

如果计数存储在当前帧中可用的变量中,请记住您可以这样做:

代码语言:javascript
复制
(lldb) parray `count_variable` pointer_to_malloced_array

这是一个通用的lldb特性,lldb中用反引号括起来的任何命令行参数都将作为返回整数的表达式进行计算,然后在命令执行之前用该整数替换该参数。

票数 35
EN

Stack Overflow用户

发布于 2012-10-18 10:46:21

使用Xcode 4.5.1 (现在可能对您有帮助,也可能没有帮助),您可以在lldb控制台中完成以下操作:

代码语言:javascript
复制
(lldb) type summary add -s "${var[0-63]}" "float *"
(lldb) frame variable pointer
  (float *) pointer = 0x000000010ba92950 [0.0,1.0,2.0,3.0, ... ,63.0]

此示例假设'pointer‘是64个浮点数的数组:float pointer[64];

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7062173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档