You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在LLDB中格式化传入函数的C数组?

LLDB中将int指针按数组单行格式化显示

当数组传入函数退化为int*后,LLDB默认无法直接识别它的数组长度,需要通过强制类型转换让LLDB将指针当作指定长度的数组处理,具体方法如下:

临时快速显示

进入quicksort函数后,如果你知道数组总长度(比如示例中是10,或可通过high + 1计算),执行以下命令:

frame variable *(int(*)[10])a

这条命令把指针a强制转换成int[10]类型的指针再解引用,LLDB会输出你想要的单行大括号格式:

(int [10]) $0 = {3, 0, 9, 4, 2, 17, 99, 69, 7, 1}

自定义别名简化操作

如果需要频繁使用,可给该操作设置别名:

command alias parrayinline expr -- *(int(*)[%1])%2

之后只需传入长度和指针变量名即可快速调用:

parrayinline 10 a

为什么之前的命令无效?

  • var *a -c:*a是单个int值,无法批量显示数组元素;
  • var a --count 10:显示的是10个连续的int*指针,而非int数组元素;
  • type summary add -x "int \[[0-9]+]":该规则匹配的是原生数组类型(如int array[10]),但函数参数a已退化为int*,无法触发该规则。

内容的提问来源于stack exchange,提问作者friendlyman23

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 16:39:56