代码之家  ›  专栏  ›  技术社区  ›  user13267

在mac的lldb控制台中格式化parray命令的输出

  •  0
  • user13267  · 技术社区  · 7 年前

    我正在使用lldb parray命令显示一个数组(结构中的指针,数组大小由calloc定义) given here

    这将以以下格式显示数组的值:

    (float *) $0 = 0x123456789 {  
     (float) [0] = 0.0012   
     (float) [1] = 0.123456   
     (float) [2] = 0.0012   
     (float) [3] = 0.123456   
     .  
     .  
     .  
    

    我只想显示数组的值

    0.0012   
    0.123456    
    0.0012   
    0.123456    
    .  
    .  
    .  
    

    如何在lldb控制台中执行此操作?我用的是objective-c。

    此外,是否可以只显示一系列值(例如从第100个元素到第150个元素)?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Jim Ingham    7 年前

    这个 expr 命令无法控制是否打印聚合对象子元素的名称/类型。 parray 只是对 expr 命令所以你不能用内置命令来实现这一点。

    您可以很容易地编写一个基于python的命令,以任意方式转储数组的输出。

    也可以随时向 http://bugs.llvm.org 添加这样一个选项。

    您可以通过执行以下操作对显示范围进行排序:

    (lldb) parray 4 &array[10]
    (int *) $2 = 0x0000000100300218 {
      (int) [0] = 10
      (int) [1] = 11
      (int) [2] = 12
      (int) [3] = 13
    (lldb)
    

    当然,编号是关闭的(但无论如何你都不想看到…)