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

如何在GDB中将calloc创建的字符串数组转为可正常查看的格式?

解决GDB中查看动态字符串数组的问题

问题原因

静态数组word_list2是连续内存块,而动态创建的word_list是指针数组:每个元素是独立分配的字符串内存的指针,内存布局完全不同。直接用(char[2][21]) word_list转换,会把指针的二进制值当成字符解析,自然出现乱码。

正确查看方法

方法1:使用GDB的@操作符打印指针数组

直接将word_list视为指针数组,指定要查看的元素数量:

print *word_list@2

GDB会显示每个指针指向的字符串内容,效果接近静态数组的查看体验。

方法2:强制转换为指针数组类型

显式转换为对应长度的指针数组,再查看每个元素:

print (char*[2])word_list

此命令会展开显示两个指针指向的字符串,和静态数组的显示格式一致。

方法3:用x命令直接查看字符串

使用x命令指定格式为字符串(s),并指定数量:

x/2s word_list

该命令会直接输出两个字符串的内容,简洁直观。

方法4:自定义类型简化查看

如果需要多次查看,可在GDB中定义对应类型:

typedef char str21[21];
print *(str21**)word_list@2

这样GDB会按照21字符长度的字符串类型来解析每个指针指向的内存。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 06:35:30